Update sys.path reference in es24n_conf.py and all documentation to reflect the new folder name. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
85 lines
3.6 KiB
Markdown
85 lines
3.6 KiB
Markdown
# ES24N IOM Configuration Tool
|
|
|
|
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)
|
|
- Root or serial device group permissions (for serial-based configuration)
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
python3 es24n_conf.py
|
|
```
|
|
|
|
If the serial device is inaccessible, re-run with `sudo`:
|
|
|
|
```bash
|
|
sudo python3 es24n_conf.py
|
|
```
|
|
|
|
## Features
|
|
|
|
### Serial Network Configuration
|
|
|
|
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 and updates IOM and/or Fabric Card firmware via the Redfish API.
|
|
|
|
- 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 (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 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 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
|
|
modules/
|
|
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.
|
|
- 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.
|