Update Your BMC Firmware#

Use the following command-line instructions to update the BMC firmware on your NVIDIA IGX Developer Kit or your NVIDIA IGX Orin Board Kit. However, we recommend that you update your BMC firmware by using the BMC web user interface.

Note

The BMC Web User Interface (BMC Web UI) is only available for BMC firmware version 24.04-11-v3.2 or newer.

Use this documentation to perform the following tasks:

Get the BMC firmware#

  1. Download bmc_fw_R36.x.x_aarch64.tbz2 to your Linux host computer from the IGX Download Center.

  2. On your host computer, extract the downloaded BMC firmware using command line, for example

    1tar -xvjf bmc_fw_R36.x.x_aarch64.tbz2
    

    Firmware images are available in bmc/fw/apfw directory.

    Note

    Check bmc/README for information about release versions and dates.

Determine whether your BMC Module is ERoT or Non-ERoT#

External Root of Trust (ERoT) hardware is part of the BMC module for the NVIDIA IGX Orin Board Kit, which is intended for production. ERoT hardware provides a secure flash and boot mechanism. Because the IGX Developer Kit is not intended for production, it is provided without ERoT hardware.

Warning

Verify whether your BMC platform is ERoT or Non-ERoT before you update the firmware, and use the correct instructions. If you use the wrong instructions your BMC is put in a non-recoverable state.

To determine whether your BMC Module is ERoT or Non-ERoT, run the following code.

1root@mgx-3809:~# i2cdump -f -y 10 0x50

The result should look like the following.

1No size specified (using byte-data access)
2     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4e    ...............N
410: 56 49 44 49 41 c5 50 33 38 30 39 cd 00 00 00 00    VIDIA?P3809?....
520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 33    .............-13
630: 38 30 39 2d 30 33 30 30 2d 51 53 32 00 00 00 00    809-0300-QS2....

Use the results from index 0x2E to 0x38 as follows:

  • 13809-0300 — Non-ERoT BMC

  • 13809-0100 — ERoT BMC

Choose the correct update instructions to avoid damaging your hardware:

Update your IGX Developer Kit BMC (Non-ERoT) Firmware#

Use one of the following procedures to update your IGX Developer Kit (Non-ERoT). Do the steps on the local Ubuntu host computer that has the BMC is attached.

Follow these steps to setup your host to access BMC Set up your host to access the BMC.

Alternative procedure#

  1. Verify that you are using the IGX Developer Kit.

    Warning

    If you use this procedure with the IGX Orin Board Kit, you will put your BMC into a nonrecoverable state.

  2. Comment out everything inside /usr/share/mctp/mctp by prepending each line with a #, using a text editor such as vi, or with the following sed command.

    1sed 's/^/#/' -i  /usr/share/mctp/mctp
    
  3. Reboot the BMC.

    1reboot
    
  4. Copy image-bmc from Steps to Get BMC Firmware in run/initramfs/ using the SCP tool from the host.

    1scp image-bmc root@192.168.1.110:/run/initramfs/
    
  5. Update the new image in the BMC.

    1/run/initramfs/update
    

    Wait for 100% completion.

  6. Reboot BMC. Wait approximately 1 minute for the BMC reboot to complete.

    1reboot
    
  7. Set the password again, as this procedure reset it to the default 0penBmc.

Update your IGX Orin Board Kit BMC (ERoT) Firmware#

Use the following procedure to update the IGX Orin Board Kit (ERoT). Do the steps on the local Ubuntu host computer that has the BMC is attached.

  1. Verify that you are using the IGX Orin Board Kit, not the IGX Developer Kit.

    Warning

    If you use this procedure with the IGX Developer Kit, you will put your BMC into a nonrecoverable state.

  2. Download igx-bmc-apfw-erot.fwpkg from the path in Steps to Get BMC Firmware.

  3. Save the IP address of your BMC as an environment variable by running the following code. Replace <BMC_IP> with your IP address, for example 192.168.1.110.

    export bmc=<BMC_IP>
    
  4. Log into your BMC and save your access token as an environment variable by running the following code. Change <BMC_Password> to your password.

    export token=`curl -k \
                       -H "Content-Type: application/json" \
                       -X POST https://$bmc/login \
                       -d '{"username": "root", "password": "<BMC_Password>"}' | grep token | awk '{print $2;}' | tr -d '"'`
    
  5. To start the update, run the following command. You save the task id as an environment variable so that you can check the status of the update in the following step.

    export task_id=$(curl -k \
                          -H "X-Auth-Token: $token" \
                          -H "Content-Type: application/octet-stream" \
                          -X POST https://$bmc/redfish/v1/UpdateService \
                          -T "<path and filename of igx-bmc-apfw-erot.fwpkg>" | jq -r ".Id")
    
  6. To check the status of the update run the following command. After the update is done, the task status is completed.

    curl -k \
         -H "X-Auth-Token: $token" \
         -X GET https://$bmc/redfish/v1/TaskService/Tasks/$task_id
    
  7. After the task state changes to complete, reboot the BMC from the BMC Web UI, or by using the following command.

curl -k \
     -H "X-Auth-Token: $token" \
     -X POST https://$bmc/redfish/v1/Managers/IGX_BMC_0/Actions/Manager.Reset \
     -d '{"ResetType": "GracefulRestart"}'