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.
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:
Download
bmc_fw_R36.x.x_aarch64.tbz2
to your Linux host computer from the IGX Download Center.On your host computer, extract the downloaded BMC firmware using command line, for example
tar -xvjf bmc_fw_R36.x.x_aarch64.tbz2
Firmware images are available in bmc/fw/apfw directory.
NoteCheck bmc/README for information about release versions and dates.
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.
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.
root@mgx-3809:~# i2cdump -f -y 10 0x50
The result should look like the following.
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4e ...............N
10: 56 49 44 49 41 c5 50 33 38 30 39 cd 00 00 00 00 VIDIA?P3809?....
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 33 .............-13
30: 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:
Non-ERoT, IGX Developer Kit — Use the Non-ERoT firmware update instructions.
ERoT, IGX Orin Board Kit — Use the ERoT firmware update instructions.
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.
Recommended procedure
The bmc_non_erot_updater.sh script requires
sshpass
. If you do not have it installed, run the following command.sudo apt-get install sshpass
(Windows or macOS only) If you run the bmc_non_erot_updater.sh script from a non-linux computer, update the script first.
Change the
ping
command fromping -w1 -c1
toping -n 1
.Change the
sleep
command fromsleep 40
tosleep 90
.
Run the bmc_non_erot_updater.sh script.
./tools/bmc_non_erot_updater.sh -f fw/apfw/image-bmc -p YourBmcPassword
Alternative procedure
Verify that you are using the IGX Developer Kit.
WarningIf you use this procedure with the IGX Orin Board Kit, you will put your BMC into a nonrecoverable state.
Comment out everything inside
/usr/share/mctp/mctp
by prepending each line with a#
, using a text editor such asvi
, or with the followingsed
command.sed 's/^/#/' -i /usr/share/mctp/mctp
Reboot the BMC.
reboot
Copy
image-bmc
from Steps to Get BMC Firmware inrun/initramfs/
using the SCP tool from the host.scp image-bmc root@192.168.1.110:/run/initramfs/
Update the new image in the BMC.
/run/initramfs/update
Wait for 100% completion.
Reboot BMC. Wait approximately 1 minute for the BMC reboot to complete.
reboot
Set the password again, as this procedure reset it to the default
0penBmc
.
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.
Verify that you are using the IGX Orin Board Kit, not the IGX Developer Kit.
WarningIf you use this procedure with the IGX Developer Kit, you will put your BMC into a nonrecoverable state.
Download
igx-bmc-apfw-erot.fwpkg
from the path in Steps to Get BMC Firmware.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>
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 '"'`
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")
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
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"}'