diff --git a/README.md b/README.md index 9659f71..43fcf85 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ # ES24N IOM Configuration Tool -A single-file interactive CLI tool for configuring network settings and updating firmware on TrueNAS ES24N expansion shelf IOM (I/O Module) controllers. +An interactive CLI tool for configuring network settings and updating firmware on TrueNAS ES24N expansion shelf IOM (I/O Module) controllers via the Redfish API. ## Requirements - Python 3 (standard library only — no external dependencies) -- A USB serial cable connected from the ES24N IOM1 port to the active TrueNAS controller -- Root or serial device group permissions +- Root or serial device group permissions (for serial-based configuration) ## Usage @@ -22,45 +21,64 @@ sudo python3 es24n_conf.py ## Features -### Network Configuration +### Serial Network Configuration -Connects to the IOM over a USB serial connection and configures each IOM's management network interface via the Redfish API. +Connects to the IOM over a USB serial cable and configures each IOM's management network interface via the Redfish API over the serial loopback (`127.0.0.1`). Used for initial setup when the IOM has no IP address yet. - Supports both **Static IP** and **DHCP** configuration - Configures IOM1 and IOM2 independently in a single session - Displays current network settings before making any changes +- Supports configuring multiple shelves back-to-back in one session ### Firmware Updates -Connects to each IOM directly over the network (not serial) and updates IOM and/or Fabric Card firmware via the Redfish API. +Connects to each IOM directly over the network and updates IOM and/or Fabric Card firmware via the Redfish API. -- Update IOM firmware, Fabric Card firmware, or both +- Select IOM1 only, IOM2 only, or both +- Update IOM firmware, Fabric Card firmware, or both in a single run +- Scans the current working directory for firmware files automatically - Displays current firmware versions before and after the update - Polls update task progress automatically ## Workflow -### Configure a Shelf +### Configure a Shelf (Serial) 1. Connect the serial cable from the ES24N IOM1 port to the controller's USB port 2. Run the tool and select **Configure a new ES24N shelf** 3. The tool detects the serial device, opens the connection, and prompts for the BMC admin password 4. Current network settings for IOM1 and IOM2 are displayed 5. Choose to apply a new Static IP or DHCP configuration, or leave settings unchanged -6. Changes are applied via Redfish PATCH requests over the serial loopback (`127.0.0.1`) +6. Changes are applied via Redfish PATCH over the serial loopback (`127.0.0.1`) +7. Verify each expander appears in TrueNAS under **System Settings > Enclosure > NVMe-oF Expansion Shelves** before disconnecting the serial cable ### Update Firmware 1. Ensure this system has network access to the IOM management interfaces 2. Run the tool and select **Update IOM / Fabric Card Firmware** -3. Enter the admin password and IP addresses for IOM1 and IOM2 -4. Select what to update and provide the firmware file path(s) -5. The tool uploads, applies, and monitors each update, then restarts the affected components +3. Enter the admin password and select which IOM(s) to update +4. Enter the IP address(es) for the selected IOM(s) +5. Select what to update (IOM firmware, Fabric Card firmware, or both) +6. Select firmware file(s) from the auto-detected list or enter a custom path +7. The tool uploads, applies, and monitors each update, then restarts the affected components > **HA Systems:** Update the passive IOM first. After updating both IOMs on one controller, initiate a TrueNAS failover and re-run the tool for the other controller. +## File Structure + +``` +es24n_conf.py ← Entry point — run this +es24n/ + ui.py ← Display helpers and input prompts + serial_port.py ← Serial port driver (no pyserial required) + models.py ← IOMConfig and ShelfConfig data classes + redfish.py ← Redfish API client (shared by all workflows) + workflow_serial.py ← Serial-based network configuration workflow + workflow_firmware.py ← Firmware update workflow +``` + ## Notes - Setting a static IP requires two sequential Redfish PATCH requests due to a known ES24N firmware bug. The tool handles this automatically. - Firmware uploads are performed over the network — uploading over the 115200-baud serial connection would be impractically slow. -- After applying network changes, verify each expander appears in TrueNAS under **System Settings > Enclosure > NVMe-oF Expansion Shelves** before disconnecting the serial cable. +- The firmware file must be re-uploaded between the IOM firmware and Fabric Card firmware steps as it does not persist after the first update.