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 BMC

    Adjust HostBMC_0 to 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_0005_250415.1.1_dbg-signed.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_0005_250415.1.1_dbg-signed.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: DGXB200
Part number: 965-24387-0017-000
Serial number: 1662224610084
Packages: ['DGX_0005_250415.1.1']
Connection Status: Successful

Firmware Devices:
AP Name                                  Sys Version                    Pkg Version                    Up-To-Date
-------                                  -----------                    -----------                    ----------
CPLDMB_0                                 0.2.1.8                        0.2.1.9                        No
CPLDMID_0                                0.2.1.1                        0.2.1.4                        No
CX7NIC_0                                 28.42.1000                     32.43.2024                     No
CX7NIC_1                                 28.42.1000                     32.43.2024                     No
CX7_0                                    28.42.1000                     N/A                            No
CX7_1                                    28.42.1000                     N/A                            No
CX7_2                                    28.42.1000                     N/A                            No
CX7_3                                    28.42.1000                     N/A                            No
CX7_4                                    28.42.1000                     N/A                            No
CX7_5                                    28.42.1000                     N/A                            No
CX7_6                                    28.42.1000                     N/A                            No
CX7_7                                    28.42.1000                     N/A                            No
EROT_BIOS_0                              00.04.0052.0000_n00            00.04.0058.0000_n00            No
EROT_BMC_0                               00.04.0052.0000_n00            00.04.0058.0000_n00            No
HGX_FW_BMC_0                             25.02-1-ga18                   N/A                            No
HGX_FW_ERoT_BMC_0                        01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_FPGA_0                       01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_NVLinkManagementNIC_0        01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_NVSwitch_0                   01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_NVSwitch_1                   01.04.0018.0000_n04            N/A                            No
HGX_FW_FPGA_0                            1.85                           N/A                            No
HGX_FW_GPU_SXM_1                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_2                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_3                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_4                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_5                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_6                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_7                         97.00.9A.00.14                 N/A                            No
HGX_FW_GPU_SXM_8                         97.00.9A.00.14                 N/A                            No
HGX_FW_NVLinkManagementNIC_0             28.45.0350                     N/A                            No
HGX_FW_NVSwitch_0                        35_2014_1680                   N/A                            No
HGX_FW_NVSwitch_1                        35_2014_1680                   N/A                            No
HGX_FW_PCIeRetimer_0                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_1                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_2                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_3                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_4                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_5                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_6                     2.20.21                        N/A                            No
HGX_FW_PCIeRetimer_7                     2.20.21                        N/A                            No
HGX_InfoROM_GPU_SXM_1                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_2                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_3                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_4                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_5                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_6                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_7                    G525.0230.00.02                N/A                            No
HGX_InfoROM_GPU_SXM_8                    G525.0230.00.02                N/A                            No
HostBIOS_0                               01.05.03                       01.05.05                       No
HostBMC_0                                25.02.12                       25.02.12                       Yes
PCIeRetimer_0                            2.07.19                        2.07.19                        Yes
PCIeRetimer_1                            2.07.19                        2.07.19                        Yes
PCIeSwitch_0                             0.0.7                          0.0.7                          Yes
PCIeSwitch_1                             1.0.7                          1.0.7                          Yes
PSU_0                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_1                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_2                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_3                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_4                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_5                                    0204.0201.0204                 0204.0201.0204                 Yes
------------------------------------------------------------------------------------------------------------------------
Displaying version info for EXTERNAL_DGX_SYSTEM
System Model: DGXB200
Part number: 965-24387-0017-000
Serial number: 1234567890123
Packages: ['DGX_0005_250415.1.1']
Connection Status: Successful

Firmware Devices:
AP Name                                  Sys Version                    Pkg Version                    Up-To-Date
-------                                  -----------                    -----------                    ----------
CPLDMB_0                                 0.2.1.9                        0.2.1.9                        Yes
CPLDMID_0                                0.2.1.3                        0.2.1.4                        No
CX7NIC_0                                 32.43.2024                     32.43.2024                     Yes
CX7NIC_1                                 32.43.2024                     32.43.2024                     Yes
CX7_0                                    28.43.2026                     N/A                            No
CX7_1                                    28.43.2026                     N/A                            No
CX7_2                                    28.43.2026                     N/A                            No
CX7_3                                    28.43.2026                     N/A                            No
CX7_4                                    28.43.2026                     N/A                            No
CX7_5                                    28.43.2026                     N/A                            No
CX7_6                                    28.43.2026                     N/A                            No
CX7_7                                    28.43.2026                     N/A                            No
EROT_BIOS_0                              00.04.0058.0000_n00            00.04.0058.0000_n00            Yes
EROT_BMC_0                               00.04.0058.0000_n00            00.04.0058.0000_n00            Yes
HGX_FW_BMC_0                             25.02-1-ga19                   N/A                            No
HGX_FW_ERoT_BMC_0                        01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_FPGA_0                       01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_NVLinkManagementNIC_0        01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_NVSwitch_0                   01.04.0018.0000_n04            N/A                            No
HGX_FW_ERoT_NVSwitch_1                   01.04.0018.0000_n04            N/A                            No
HGX_FW_FPGA_0                            1.87                           N/A                            No
HGX_FW_GPU_SXM_1                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_2                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_3                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_4                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_5                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_6                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_7                         97.00.9A.00.0F                 N/A                            No
HGX_FW_GPU_SXM_8                         97.00.9A.00.0F                 N/A                            No
HGX_FW_NVLinkManagementNIC_0             28.42.1282                     N/A                            No
HGX_FW_NVSwitch_0                        35_2014_1680                   N/A                            No
HGX_FW_NVSwitch_1                        35_2014_1680                   N/A                            No
HGX_FW_PCIeRetimer_0                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_1                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_2                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_3                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_4                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_5                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_6                     2.20.20                        N/A                            No
HGX_FW_PCIeRetimer_7                     2.20.20                        N/A                            No
HGX_InfoROM_GPU_SXM_1                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_2                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_3                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_4                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_5                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_6                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_7                    G525.0220.00.03                N/A                            No
HGX_InfoROM_GPU_SXM_8                    G525.0220.00.03                N/A                            No
HostBIOS_0                               01.06.07                       01.05.05                       Yes
HostBMC_0                                25.04.22                       25.02.12                       Yes
PCIeRetimer_0                            2.07.19                        2.07.19                        Yes
PCIeRetimer_1                            2.07.19                        2.07.19                        Yes
PCIeSwitch_0                             0.0.7                          0.0.7                          Yes
PCIeSwitch_1                             1.0.7                          1.0.7                          Yes
PSU_0                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_1                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_2                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_3                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_4                                    0204.0201.0204                 0204.0201.0204                 Yes
PSU_5                                    0204.0201.0204                 0204.0201.0204                 Yes
------------------------------------------------------------------------------------------------------------------------
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_0005_250415.1.1_dbg-signed.fwpkg']
FW package: ['nvfw_DGX_0005_250415.1.1_dbg-signed.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-04-25T00:07:01+00:00
TaskState: Running
PercentComplete: 0
TaskStatus: OK
EndTime: 2025-04-25T00: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-04-25T00:06:58+00:00",
    "HidePayload": false,
    "Id": "8",
    "Messages": [
        {
            "@odata.type": "#Message.v1_0_8.Message",
            "Message": "Image '/var/tmp/bundles/nvfw_DGX_0005_250415.1.1_dbg-signed.fwpkg' is being transferred to 'HostBMC_0'.",
            "MessageArgs": [
                "/var/tmp/bundles/nvfw_DGX_0005_250415.1.1_dbg-signed.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-04-25T00: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-04-25T08: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_0005_250415.1.1_dbg-signed.fwpkg' is being transferred to 'HostBMC_0'.",
            "MessageArgs": [
                "/var/tmp/bundles/nvfw_DGX_0005_250415.1.1_dbg-signed.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-04-25T00: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-04-25T00: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.