About the nvfwupd Command#

Requirements#

The nvfwupd executable runs on the Linux operating system and is available for x86_64 or arm64 architecture machines. You can run the x86_64 executable locally on the DGX system or use a remote Linux system.

If you run nvfwupd locally on the DGX system, instead of connecting to the BMC IP address, as shown in the sample commands, you can connect to the host Redfish interface IP address.

To download the latest version of the nvfwupd executable, log in to the NVIDIA Enterprise Support Portal.

Syntax#

nvfwupd version 2.0.1

Usage: nvfwupd [ global options ] <command>

Global options:
    -t --target ip=<BMC IP> user=<BMC login id> password=<BMC password> servertype=<Type of server> | targets=<JSON>
           BMC target comprising BMC IP address and BMC login credentials. The servertype sub-option is optional.
           Valid value for servertype is one of [DGX, HGX, MGX, GH200, NVOS].

    -c --config Path for config file (optional).
           Configure tool behavior.

    -v --verbose Chosen path for logfile (optional). Default path is current working directory.
           Increase verbosity.

Commands:
     help       Show tool help.

     version    Show tool version.

     show_pkg_content [ options... ]
         -p  --package        PLDM firmware package.

     unpack [ options... ]
         -p  --package        PLDM firmware package.
         -o  --outdir         Directory path to save unpacked firmware files (optional).
                              Default path is current working directory of tool.

     <Global options...> show_version [ options... ]
         -p  --package                PLDM firmware package.
         -j  --json                   Show output in JSON.

     <Global options...> update_fw [ options... ]
         -p  --package                PLDM firmware package.
         -y  --yes                    Bypass firmware update confirmation prompt.
         -b  --background             Exit without waiting for the update process to finish.
         -t  --timeout                API request timeout value in seconds.
         -s  --special                Special Update json file.

     <Global options...> force_update [ options... ]
         enable|disable|status        Enable, disable, or check current force update value on target.

     <Global options...> show_update_progress [ options... ]
         -i  --id                     List of Task IDs delimited by space.

     <Global options...> perform_factory_reset

     <Global options...> install_license

     <Global options...> make_upd_targets [ options... ]
         -o  --outdir                 Directory path to create update target files (optional).
                                      Default path is current working directory of tool.

Understanding Background Processing#

By default, the nvfwupd update_fw command communicates with the Redfish API, prints the firmware update progress to the console, and then exits when the command runs to completion.

Alternatively, you can specify the --background or -b argument so that the command communicates with the Redfish API, prints the task ID to the console, and then exits. In this case, you can periodically run the nvfwupd show_update_progress command with the task ID to monitor the update progress.

  1. Create a component-specific updparameters.json file.

  2. Update the firmware in the background:

    nvfwupd -t ip=<bmc-ip-address> user=<bmc-user-id> password=<bmc-password> update_fw \
      -p <firmware-package-file> -y -s updparameters.json -b
    

    Example Output

    FW recipe: ['<firmware-package-file>']
    {"@odata.type": "#UpdateService.v1_6_0.UpdateService", ...}
    FW update started, Task Id: 1
    

    Note

    If a Platform dgxhxxx not supported error occurs, specify the servertype=DGX sub-option with the --target option and try again to resolve the unidentified platform issue.

  3. Display the update progress for the task:

    nvfwupd -t ip=<bmc-ip-address> user=<bmc-user-id> password=<bmc-password> show_update_progress -i 1
    

    Example Output

    {'id': ['1']}
    Task Info for Id: 1
     StartTime: 2023-03-11T01:10:01-0000
     TaskState: Running
     PercentComplete: 58
     TaskStatus: OK
     EndTime: 2023-03-11T01:10:00+00:00
     TaskStatus: Task /redfish/v1/UpdateService/upload is running normally.
    

    Eventually, the percent complete field reports 100 and the task state field reports Completed.

  4. To activate the firmware update, refer to Firmware Update Activation for more information.