Unable to update BMC firmware to SW-1.1 using cmd line

Hi Nvidia:
We are trying to update SW-1.1 BMC firmware via command line to an ERoT IGX Orin.
We downloaded the firmware from IGX Download center, BMC FW and Sources (to be used when updating using command line).
After decompress it, we use the file in fw/apfw/igx-bmc-apfw-erot.fwpkg as the firmware to be flashed.
However, after curl the file to the API and query the status, it will never getting started. The jounrnalctl -f log are attached here:
update-using-cmd.txt (27.8 KB)

Looks like some of the header is missing?

Please help.

Many Thanks.

Hi jameskuo,

What’s your current BMC firmware version?
Please share the result of the following command in your BMC console?

# cat /etc/os-release

Could you download Firmwares (BMC, MCU, Bootloader (QSPI)) to be used when updating using BMC Web UI and use BMC WebUI to update BMC firmware?

Hi KevinFFF:
The release is:

root@mgx-3809:~# cat /etc/os-release
ID=openbmc-phosphor
NAME="NVIDIA MGX/IGX BMC (OpenBMC     Project Reference Distro)"
VERSION="IGXOrinBMC-24.04-11-v3.2"
VERSION_ID=igxorinbmc-24.04-11-v3.2-0-g1f7f8057b43.1713951293.3952162
PRETTY_NAME="NVIDIA MGX/IGX BMC (OpenBMC     Project Reference Distro) IGXOrinBMC-24.04-11-v3.2"
BUILD_ID="20240424093450"
OPENBMC_TARGET_MACHINE="mgx-3809"
BUILD_DESC="prod-platform-erot"

Though this one contains web UI, but we are aiming at production level. We just checked with our factory, all the BMC modules we received were still old ones, hence there is no way to use web UI to update it.

Please give it a try to use WebUI to update BMC firmare since they should have similar logic for update.
If it could work, you can save the successful log of jounrnalctl -f and used it to compare with your failed log.

For the command line method, do you refer to each steps in Update your IGX Orin Board Kit BMC (ERoT) Firmware?
If so, please also share the exact commands you used and the detailed logs for further check.

Hi KevinFFF:
Thanks for the reply.

About the WebUI way, we will give it a try.

About the command line, Yes, we followed the exactly steps on the web. (Password were replaced)

export bmc=192.168.1.110
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 '"'`

if [ -z "$token" ]; then
	echo "Token is empty, check if password is updated or not"
	return
fi

export filePath=`pwd`/bmc.fwpkg
export response=`curl -k \
                     -H "X-Auth-Token:$token" \
                     -H "Content-Type: application/octet-stream" \
                     -X POST https://$bmc/redfish/v1/UpdateService \
                     -T "$filePath"`


task_id=`echo "$response" | jq -r '.Id'`

echo "task_id = $task_id"

# Check Status after a few seconds
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 '"'`

curl -k -H "X-Auth-Token:$token" -X GET https://${bmc}/redfish/v1/TaskService/Tasks/$task_id

The way we capture our log is:

  1. on BMC, journalctl -f | tee logs.txt
  2. run the commands above
  3. Check the status, logs we found were:
    return.txt (2.8 KB)

So it should contain the logs you need?

Many Thanks.

Dec 19 02:04:26 mgx-3809 nscd[270]: 270 checking for monitored file `/nsswitch.conf': No such file or directory
Dec 19 02:04:26 mgx-3809 nscd[270]: 270 checking for monitored file `/resolv.conf': No such file or directory
Dec 19 02:04:26 mgx-3809 nscd[270]: 270 checking for monitored file `/hosts': No such file or directory

For above errors, please share the result of ls -l /etc in your BMC console.

      "Resolution": "Debug Token Service is not ready, retry the firmware update operation after the management controller is ready. If the issue still persists reset the baseboard.",

Please check if reset BMC can help for this issue.

Hi KevinFFF:
ls -l /etc showed :
files-in-etc.txt (5.7 KB)

The web-UI still can’t do the trick. Also, journalctl -f showed almost the same compare to cmd line way.
Here is the log:
update-using-webui.txt (19.4 KB)

And, the returned from curl updating task
webui-task-return.txt (3.0 KB)

Both the journalctl and the return text showed that the debug service is not alive. We tried to reboot, AC On/Off, waiting for a few minutes to make sure the BMC module is ready to run. But none of them did the trick.

We also checked the sha1sum of the BMC firmware used for web UI and cmd line. Seems like they are the same file, both of them got the f40e76ec98f73d8e6f668c94f97ff84fe4251e9f hash value.

Many thanks.

It seems your board is in bad state and needs reset before update.
Could you run the following command in BMC console to perform factory reset?

# fw_setenv openbmconce factory-reset

and perform the update process for your BMC firmware to check if there’s still the issue.

You can also try selecting “force update” from the webUI to check if it can help.

For command line, you can run the following command before you trigger the update.

curl -k -H "X-Auth-Token: $token" -X PATCH -d '{ "HttpPushUriOptions":{"ForceUpdate":true}}' https://<BMC IP>/redfish/v1/UpdateService

Hi Kevin:
Thanks for the reply.
Factory reset didn’t do the trick. After resetting, the issue remained.
I can’t find the “force update” in the old web UI, I used the command line way to flash and every thing worked like charm.

Many Thanks.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.