Multiple System Firmware Updates#
The nvfwupd tool enables sequential updates of multiple systems using the same firmware package
via a YAML configuration file. This requires defining the update file and a list of target systems,
including their respective credentials.
Note
Deprecated feature: Starting with nvfwupd version 2.0.5, specifying the targets sub-option
with a JSON file of multiple targets for multiple system updates is no longer supported.
Multiple targets can be updated sequentially by using the config.yaml file, described
in this section.
Multiple System Sample Configuration#
The following example shows a configuration YAML file for sequential updates:
# Set TargetPlatform to DGX
TargetPlatform: 'DGX'
# Disable Sanitize Log optionally
# Disabling SANITIZE_LOG prints system IPs and user credentials to the logs and screen
SANITIZE_LOG: False
# Provide the full path of the firmware file to be used for firmware update
FWUpdateFilePath:
- "nvfw_DGX_251108.1.1.fwpkg"
# Set FwUpdateMethod to MultipartHttpPushUri
FwUpdateMethod: "MultipartHttpPushUri"
# List of update targets. replaces -s/--special option input file. Value is list of target URIs
# Use UpdateParametersTargets: {} for DGX empty JSON value used for full DGX update
UpdateParametersTargets: {}
# If updating entire GPU Trays, uncomment the following UpdateParametersTargets and comment out the above "UpdateParametersTargets: {}"
#UpdateParametersTargets:
# - "/redfish/v1/UpdateService/FirmwareInventory/HGX_0"
# Multi target input. Value is list of dicts.
# Update BMC_IP, RF_USERNAME, and RF_PASSWORD credentials for each system
Targets:
- BMC_IP: "1.1.1.1"
RF_USERNAME: "user"
RF_PASSWORD: "password"
- BMC_IP: "2.2.2.2"
RF_USERNAME: "username2"
RF_PASSWORD: "my_secondary_password"
Running nvfwupd Using the Configuration File#
To display the version information for each target system component sequentially alongside the
corresponding firmware update file component version information, specify the configuration file
with the -c flag or the --config option and the show_version command.
$ nvfwupd -c config.yaml show_version
System Model: DGXB300
Part number: 965-24387-0303-000
Serial number: 1943925000010
Packages: ['DGX-B300_0002_251108.1.1_custom']
Connection Status: Successful
Firmware Devices:
AP Name Sys Version Pkg Version Up-To-Date
------- ----------- ----------- ----------
CPLDBACK_0 0.1.0.7 0.1.0.7 Yes
CPLDDCSM_0 0.1.0.9 0.1.0.9 Yes
CPLDE1SBP_0 0.1.0.5 0.1.0.5 Yes
CPLDMB_0 0.1.2.7 0.1.0.9 Yes
CX7NIC_0 32.43.2402 N/A No
CX7NIC_1 32.43.2402 N/A No
EROT_BIOS_0 00.04.0061.0000_n04 00.04.0061.0000_n04 Yes
EROT_BMC_0 00.04.0061.0000_n04 00.04.0061.0000_n04 Yes
HGX_FW_BMC_0 B3-2509-05.0 N/A No
HGX_FW_ConnectX_0 40.46.5500 N/A No
HGX_FW_ConnectX_1 40.46.5500 N/A No
HGX_FW_ConnectX_2 40.46.5500 N/A No
HGX_FW_ConnectX_3 40.46.5500 N/A No
HGX_FW_ConnectX_4 40.46.5500 N/A No
HGX_FW_ConnectX_5 40.46.5500 N/A No
HGX_FW_ConnectX_6 40.46.5500 N/A No
HGX_FW_ConnectX_7 40.46.5500 N/A No
HGX_FW_ConnectX_SMA_0 0011.00.0265.0000 N/A No
HGX_FW_ConnectX_SMA_1 0011.00.0265.0000 N/A No
HGX_FW_ConnectX_SMA_2 0011.00.0265.0000 N/A No
HGX_FW_ConnectX_SMA_3 0011.00.0265.0000 N/A No
HGX_FW_ERoT_BMC_0 01.04.0031.0000_n04 N/A No
HGX_FW_ERoT_FPGA_0 01.04.0031.0000_n04 N/A No
HGX_FW_ERoT_NVLinkManagementNIC_0 01.04.0031.0000_n04 N/A No
HGX_FW_ERoT_NVSwitch_0 01.04.0031.0000_n04 N/A No
HGX_FW_ERoT_NVSwitch_1 01.04.0031.0000_n04 N/A No
HGX_FW_FPGA_0 1.54 N/A No
HGX_FW_GPU_0 97.10.52.00.17 N/A No
HGX_FW_GPU_1 97.10.52.00.17 N/A No
HGX_FW_GPU_2 97.10.52.00.17 N/A No
HGX_FW_GPU_3 97.10.52.00.17 N/A No
HGX_FW_GPU_4 97.10.52.00.17 N/A No
HGX_FW_GPU_5 97.10.52.00.17 N/A No
HGX_FW_GPU_6 97.10.52.00.17 N/A No
HGX_FW_GPU_7 97.10.52.00.17 N/A No
HGX_FW_NVLinkManagementNIC_0 28.46.5500 N/A No
HGX_FW_NVSwitch_0 35_2014_4716 N/A No
HGX_FW_NVSwitch_1 35_2014_4716 N/A No
HGX_FW_SXM_SMA_0 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_1 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_2 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_3 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_4 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_5 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_6 0004.00.0257.0002 N/A No
HGX_FW_SXM_SMA_7 0004.00.0257.0002 N/A No
HGX_InfoROM_GPU_0 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_1 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_2 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_3 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_4 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_5 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_6 G540.0216.00.03 N/A No
HGX_InfoROM_GPU_7 G540.0216.00.03 N/A No
HostBIOS_0 01.00.05 01.00.05 Yes
HostBMC_0 00.09.07 00.09.07 Yes
PCIeSwitch_0 0.0.8 0.0.8 Yes
PCIeSwitch_1 1.0.8 0.0.8 Yes
PSU_0 0105.0105 N/A No
PSU_10 0105.0105 N/A No
PSU_11 0105.0105 N/A No
PSU_1 0105.0105 N/A No
PSU_2 0105.0105 N/A No
PSU_3 0105.0105 N/A No
PSU_4 0105.0105 N/A No
PSU_5 0105.0105 N/A No
PSU_6 0105.0105 N/A No
PSU_7 0105.0105 N/A No
PSU_8 0105.0105 N/A No
PSU_9 0105.0105 N/A No
------------------------------------------------------------------------------------------------------------------------
System Model: DGXB300
Part number: 675-24387-0100-TS2
Serial number: 1943425000008
Packages: ['DGX-B300_0002_251108.1.1_custom']
Connection Status: Successful
Firmware Devices:
AP Name Sys Version Pkg Version Up-To-Date
------- ----------- ----------- ----------
CPLDBACK_0 0.1.0.7 0.1.0.7 Yes
CPLDDCSM_0 0.1.0.9 0.1.0.9 Yes
CPLDE1SBP_0 0.1.0.5 0.1.0.5 Yes
CPLDMB_0 0.1.2.7 0.1.2.7 Yes
EROT_BIOS_0 00.04.0061.0000_n04 00.04.0061.0000_n04 Yes
EROT_BMC_0 00.04.0061.0000_n04 00.04.0061.0000_n04 Yes
HostBIOS_0 01.00.05 01.00.05 Yes
HostBMC_0 00.09.00 00.09.00 Yes
PCIeSwitch_0 0.0.8 0.0.8 Yes
PCIeSwitch_1 1.0.8 0.0.8 Yes
PSU_0 0.5.0.5 N/A No
PSU_10 0.5.0.5 N/A No
PSU_11 0.5.0.5 N/A No
PSU_1 0.5.0.5 N/A No
PSU_2 0.5.0.5 N/A No
PSU_3 0.5.0.5 N/A No
PSU_4 0.5.0.5 N/A No
PSU_5 0.5.0.5 N/A No
PSU_6 0.5.0.5 N/A No
PSU_7 0.5.0.5 N/A No
PSU_8 0.5.0.5 N/A No
PSU_9 0.5.0.5 N/A No
------------------------------------------------------------------------------------------------------------------------
Error Code: 0
To update each target system sequentially, specify the configuration file with the -c flag
or the --config option and the update_fw command.
$ nvfwupd -c config.yaml update_fw -y
Updating ip address: ip=1.1.1.1
FW package: ['nvfw_DGX_251108.1.1.fwpkg']
{"@odata.type": "#UpdateService.v1_11_0.UpdateService", "Messages": [{"@odata.type": "#Message.v1_0_8.Message", "Message": "A new task /redfish/v1/TaskService/Tasks/7 was created.", "MessageArgs": ["/redfish/v1/TaskService/Tasks/7"], "MessageId": "Task.1.0.New", "Resolution": "None", "Severity": "OK"}, {"@odata.type": "#Message.v1_0_8.Message", "Message": "The action UpdateService.MultipartPush was submitted to do firmware update.", "MessageArgs": ["UpdateService.MultipartPush"], "MessageId": "UpdateService.1.0.StartFirmwareUpdate", "Resolution": "None", "Severity": "OK"}]}
FW update started, Task Id: 7
Wait for Firmware Update to Start...
TaskState: Running
PercentComplete: 43
TaskStatus: OK
TaskState: Running
PercentComplete: 47
TaskStatus: OK
TaskState: Running
PercentComplete: 51
TaskStatus: OK
TaskState: Running
PercentComplete: 52
TaskStatus: OK
TaskState: Running
PercentComplete: 53
TaskStatus: OK
TaskState: Running
PercentComplete: 54
TaskStatus: OK
TaskState: Running
PercentComplete: 55
TaskStatus: OK
TaskState: Running
PercentComplete: 56
TaskStatus: OK
...
TaskState: Running
PercentComplete: 96
TaskStatus: OK
TaskState: Running
PercentComplete: 97
TaskStatus: OK
TaskState: Running
PercentComplete: 98
TaskStatus: OK
TaskState: Completed
PercentComplete: 100
TaskStatus: OK
Firmware update successful!
Overall Time Taken: 0:31:31
Update successful. Perform activation steps for the new firmware to take effect.
------------------------------------------------------------------------------------------------------------------------
Updating ip address: ip=2.2.2.2
FW package: ['nvfw_DGX_251108.1.1.fwpkg']
{"@odata.type": "#UpdateService.v1_11_0.UpdateService", "Messages": [{"@odata.type": "#Message.v1_0_8.Message", "Message": "A new task /redfish/v1/TaskService/Tasks/1 was created.", "MessageArgs": ["/redfish/v1/TaskService/Tasks/1"], "MessageId": "Task.1.0.New", "Resolution": "None", "Severity": "OK"}, {"@odata.type": "#Message.v1_0_8.Message", "Message": "The action UpdateService.MultipartPush was submitted to do firmware update.", "MessageArgs": ["UpdateService.MultipartPush"], "MessageId": "UpdateService.1.0.StartFirmwareUpdate", "Resolution": "None", "Severity": "OK"}]}
FW update started, Task Id: 1
Wait for Firmware Update to Start...
TaskState: Running
PercentComplete: 45
TaskStatus: OK
TaskState: Running
PercentComplete: 47
TaskStatus: OK
TaskState: Running
PercentComplete: 51
TaskStatus: OK
TaskState: Running
PercentComplete: 52
TaskStatus: OK
TaskState: Running
PercentComplete: 53
TaskStatus: OK
TaskState: Running
...
TaskState: Running
PercentComplete: 93
TaskStatus: OK
TaskState: Running
PercentComplete: 94
TaskStatus: OK
TaskState: Running
PercentComplete: 95
TaskStatus: OK
TaskState: Running
PercentComplete: 96
TaskStatus: OK
TaskState: Running
PercentComplete: 97
TaskStatus: OK
TaskState: Running
PercentComplete: 98
TaskStatus: OK
TaskState: Completed
PercentComplete: 100
TaskStatus: OK
Firmware update successful!
Overall Time Taken: 0:31:33
Update successful. Perform activation steps for new firmware to take effect.
------------------------------------------------------------------------------------------------------------------------
Error Code: 0
After the update, you must perform an AC cycle on each system for the changes to take effect.