Parallel System Firmware Update#
Starting with nvfwupd version 2.0.5, several systems can be updated simultaneously in parallel.
Sample Configuration for Parallel System Update#
The nvfwupd tool enables parallel update of multiple systems using either the same or different
packages via the configuration YAML file.
This requires defining the update PACKAGE, TARGET_PLATFORM (as DGX), UPDATE_PARAMETERS_TARGETS,
and system credentials for each system. You can optionally add a user-defined SYSTEM_NAME
string to each target system to identify it in update outputs
UPDATE_PARAMETERS_TARGETS requires the same parameters as the -s special update file for
selecting update targets from the nvfwupd command line.
For reference, set UPDATE_PARAMETERS_TARGETS for each of the following:
{}: for updating the entire motherboard tray{"Targets": ["/redfish/v1/UpdateService/FirmwareInventory/HGX_0"]}: for updating the entire GPU tray{"Targets": ["/redfish/v1/UpdateService/FirmwareInventory/HostBMC_0"]}: for updating only the host BMCAdjust
HostBMC_0to a single update target as desired.
The following example shows a configuration file:
# Disable Sanitize Log optionally
# Disabling SANITIZE_LOG prints system IPs and user credentials to the logs and screen
SANITIZE_LOG: False
# Set ParallelUpdate to True
ParallelUpdate: True
# Multi target input. Value is list of dicts.
# Update BMC_IP, RF_USERNAME, and RF_PASSWORD credentials for each system
# Set TARGET_PLATFORM for each system to DGX
# Set PACKAGE to desired update file path for each system
# UPDATE_PARAMETERS_TARGETS set to desired update targets
Targets:
- BMC_IP: "1.1.1.1"
RF_USERNAME: "user"
RF_PASSWORD: "password"
TARGET_PLATFORM: "DGX"
PACKAGE: "nvfw_DGX_251108.1.1.fwpkg"
UPDATE_PARAMETERS_TARGETS: {}
SYSTEM_NAME: "DGX_SYSTEM_LAB_1"
- BMC_IP: "2.2.2.2"
RF_USERNAME: "username2"
RF_PASSWORD: "my_secondary_password"
TARGET_PLATFORM: "DGX"
PACKAGE: "nvfw_DGX_251108.1.1.fwpkg"
UPDATE_PARAMETERS_TARGETS: {}
SYSTEM_NAME: "EXTERNAL_DGX_SYSTEM"
Running nvfwupd Using the Configuration File#
You can display the component version information for each target system in parallel with the firmware
update file component version information by specifying the configuration file with the -c flag
or the --config option and the show_version command. Because a SYSTEM_NAME was added for
each system in the configuration file, the output will also indicate which system information is
displayed.
$ nvfwupd -c config.yaml show_version
Displaying version info for DGX_SYSTEM_LAB_1
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
------------------------------------------------------------------------------------------------------------------------
Displaying version info for EXTERNAL_DGX_SYSTEM
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
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 B3-2509-05.0 Yes
HGX_FW_ConnectX_0 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_1 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_2 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_3 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_4 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_5 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_6 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_7 40.46.5500 40.46.5500 Yes
HGX_FW_ConnectX_SMA_0 0011.00.0265.0000 0011.00.0265.0000 Yes
HGX_FW_ConnectX_SMA_1 0011.00.0265.0000 0011.00.0265.0000 Yes
HGX_FW_ConnectX_SMA_2 0011.00.0265.0000 0011.00.0265.0000 Yes
HGX_FW_ConnectX_SMA_3 0011.00.0265.0000 0011.00.0265.0000 Yes
HGX_FW_ERoT_BMC_0 01.04.0031.0000_n04 01.04.0031.0000_n04 Yes
HGX_FW_ERoT_FPGA_0 01.04.0031.0000_n04 01.04.0031.0000_n04 Yes
HGX_FW_ERoT_NVLinkManagementNIC_0 01.04.0031.0000_n04 01.04.0031.0000_n04 Yes
HGX_FW_ERoT_NVSwitch_0 01.04.0031.0000_n04 01.04.0031.0000_n04 Yes
HGX_FW_ERoT_NVSwitch_1 01.04.0031.0000_n04 01.04.0031.0000_n04 Yes
HGX_FW_FPGA_0 1.54 1.54 Yes
HGX_FW_GPU_0 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_GPU_1 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_GPU_2 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_GPU_3 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_GPU_4 97.10.52.00.17 N/A No
HGX_FW_GPU_5 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_GPU_6 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_GPU_7 97.10.52.00.17 97.10.52.00.17 Yes
HGX_FW_NVLinkManagementNIC_0 28.46.5500 28.46.5500 Yes
HGX_FW_NVSwitch_0 35_2014_4716 35_2014_4716 Yes
HGX_FW_NVSwitch_1 35_2014_4716 35_2014_4716 Yes
HGX_FW_SXM_SMA_0 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_1 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_2 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_3 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_4 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_5 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_6 0004.00.0257.0002 0004.00.0257.0002 Yes
HGX_FW_SXM_SMA_7 0004.00.0257.0002 0004.00.0257.0002 Yes
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.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
You can update several target systems in parallel by specifying the configuration file with the
-c flag or --config option and the update_fw command. Because a SYSTEM_NAME was added
for each system in the configuration file, the output will also indicate which system information is
displayed.
$ nvfwupd -c config.yaml update_fw
Updating ip address: ip=1.1.1.1
Updating ip address: ip=2.2.2.2
FW package: ['nvfw_DGX_251108.1.1.fwpkg']
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/2 was created.", "MessageArgs": ["/redfish/v1/TaskService/Tasks/2"], "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: 2
------------------------------------------------------------------------------------------------------------------------
{"@odata.type": "#UpdateService.v1_11_0.UpdateService", "Messages": [{"@odata.type": "#Message.v1_0_8.Message", "Message": "A new task /redfish/v1/TaskService/Tasks/8 was created.", "MessageArgs": ["/redfish/v1/TaskService/Tasks/8"], "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: 8
------------------------------------------------------------------------------------------------------------------------
Printing Task status for IP: 1.1.1.1
Printing Task status for system: DGX_SYSTEM_LAB_1
------------------------------------------------------------------------------------------------------------------------
Task Info for Id: 8
StartTime: 2025-11-15T00:07:01+00:00
TaskState: Running
PercentComplete: 0
TaskStatus: OK
EndTime: 2025-11-15T00:06:58+00:00
Overall Task Status: {
"@odata.context": "/redfish/v1/$metadata#Task.Task",
"@odata.etag": "\"1745539617\"",
"@odata.id": "/redfish/v1/TaskService/Tasks/8",
"@odata.type": "#Task.v1_4_2.Task",
"Description": "Task for Update Service Task",
"EndTime": "2025-11-15T00:06:58+00:00",
"HidePayload": false,
"Id": "8",
"Messages": [
{
"@odata.type": "#Message.v1_0_8.Message",
"Message": "Image '/var/tmp/bundles/nvfw_DGX_251108.1.1.fwpkg' is being transferred to 'HostBMC_0'.",
"MessageArgs": [
"/var/tmp/bundles/nvfw_DGX_251108.1.1.fwpkg",
"HostBMC_0"
],
"MessageId": "Update.1.0.TransferringToComponent",
"Resolution": "None.",
"Severity": "OK"
},
{
"@odata.type": "#Message.v1_0_8.Message",
"Message": "Task /redfish/v1/UpdateService/upload is running normally.",
"MessageArgs": [
"/redfish/v1/UpdateService/upload"
],
"MessageId": "Task.1.0.Running",
"Resolution": "None",
"Severity": "OK"
}
],
"Name": "Update Service Task",
"PercentComplete": 0,
"StartTime": "2025-11-15T00:07:01+00:00",
"TaskState": "Running",
"TaskStatus": "OK"
}
Update is still running.
Printing Task status for IP: 2.2.2.2
Printing Task status for system: EXTERNAL_DGX_SYSTEM
------------------------------------------------------------------------------------------------------------------------
Task Info for Id: 2
StartTime: 2025-11-15T08:06:22+08:00
TaskState: Running
PercentComplete: 57
TaskStatus: Warning
EndTime: 1970-01-01T08:00:00+08:00
Overall Task Status: {
"@odata.context": "/redfish/v1/$metadata#Task.Task",
"@odata.etag": "\"1745539580\"",
"@odata.id": "/redfish/v1/TaskService/Tasks/2",
"@odata.type": "#Task.v1_4_2.Task",
"Description": "Task for Update Service Task",
"EndTime": "1970-01-01T08:00:00+08:00",
"HidePayload": false,
"Id": "2",
"Messages": [
{
"@odata.type": "#Message.v1_0_8.Message",
"Message": "Image '/var/tmp/bundles/nvfw_DGX_251108.1.1.fwpkg' is being transferred to 'HostBMC_0'.",
"MessageArgs": [
"/var/tmp/bundles/nvfw_DGX_251108.1.1.fwpkg",
"HostBMC_0"
],
"MessageId": "Update.1.0.TransferringToComponent",
"Resolution": "None.",
"Severity": "OK"
},
{
"@odata.type": "#Message.v1_0_8.Message",
"Message": "Task /redfish/v1/UpdateService/upload is running normally.",
"MessageArgs": [
"/redfish/v1/UpdateService/upload"
],
"MessageId": "Task.1.0.Running",
"Resolution": "None",
"Severity": "OK"
}
],
"Name": "Update Service Task",
"PercentComplete": 0,
"StartTime": "2025-11-15T00:07:01+00:00",
"TaskState": "Running",
"TaskStatus": "OK"
}
Update is still running.
...
{
"@odata.type": "#Message.v1_0_8.Message",
"Message": "Device 'CPLDMID_0' successfully updated with image '0.2.1.4'.",
"MessageArgs": [
"CPLDMID_0",
"0.2.1.4"
],
"MessageId": "Update.1.0.UpdateSuccessful",
"Resolution": "None.",
"Severity": "OK"
},
{
"@odata.type": "#Message.v1_0_8.Message",
"Message": "Task /redfish/v1/UpdateService/upload has completed.",
"MessageArgs": [
"/redfish/v1/UpdateService/upload"
],
"MessageId": "Task.1.0.Completed",
"Resolution": "None",
"Severity": "OK"
}
],
"Name": "Update Service Task",
"PercentComplete": 100,
"StartTime": "2025-11-15T00:07:01+00:00",
"TaskState": "Completed",
"TaskStatus": "OK"
}
Update is successful.
After the update, you must perform an AC cycle on each system for the changes to take effect.