Vendor field mode (VFM) allows the BMC to work in a restricted mode with limited permissions.
Enabling VFM automatically performs the following on BMC:
- Creates a new non-superuser user with username
fieldmode
and enables auto-login (only on the serial port) for this user. - Stops network services on the BMC and disables the OOB management port. This blocks all network-related operations (e.g., ssh, https, lanplus) to BMC over the Ethernet interface.
- Disables login for the
root
user.
The fieldmode
user can perform the following operations over UART:
- Start/stop UART tunneling to the NVIDIA® BlueField®-2 Arm OS (i.e., OS running on the Arm core)
- Secure firmware update and track update status of BMC and CEC components
- Reboot BMC
From the BlueField-2 Arm OS, the user fieldmode
will be able to enable or disable VFM.
Disabling VFM automatically performs the following on BMC:
- Enables login for the
root
user. - Enables network services on the BMC and the OOB management port. This re-enables all network-related operations to BMC over the Ethernet interface.
Updating BMC Firmware with Vendor Field Mode
Get the status of the tunnel through UART. Run the following command on the host where the BMC is connected on the UART port:
echo -e "\\g\\@" > /dev/ttyUSBX
Expect the following sequence of chars when the tunnel is up and running: 169 150 230.
Expect the following sequence of chars when the tunnel is not running: 165 200.If tunnel is up and running, stop the tunneling on BMC over UART.
echo -e "\r~." > /dev/ttyUSBX
Transfer the BMC firmware image over UART using the XModem tool. Run the following command on the host where the BMC is connected on the UART port:
echo -e -n "\ncd /tmp/images\n \nrz\n" > /dev/ttyUSBX sz -8b OTA.tar < /dev/ttyUSBX > /dev/ttyUSBX
Start the firmware update. Run the following command on the host where the BMC is connected on the UART port:
echo "touch /tmp/fw-update/fwactivate" > /dev/ttyUSBX
To check the progress of the firmware update on the BMC, run:
echo "cat /tmp/fw-update/fwstatus " > /dev/ttyUSBX
Refer to section "Supported Vendor Field Mode Commands" for different firmware update values. It takes ~40 minutes to complete the BMC firmware update.
After a successful firmware update to activate the new firmware, reboot the BMC using the following command on the host where the BMC is connected on the UART port:
echo "touch /tmp/fw-update/reboot" > /dev/ttyUSBX
- Keep polling the status of the tunnel through UART to check that the BMC has booted up.
Check the new BMC firmware version.
echo "cat /etc/os-release " > /dev/ttyUSBX
Updating CEC Firmware with Vendor Field Mode
Get the status of the tunnel through UART. Run the following command on the host where the BMC is connected on the UART port:
echo -e "\\g\\@" > /dev/ttyUSBX
Expect the following sequence of chars when the tunnel is up and running: 169 150 230.
Expect the following sequence of chars when the tunnel is not running: 165 200.If tunnel is up and running, stop the tunneling on BMC over UART:
echo -e "\r~." > /dev/ttyUSBX
Transfer the BMC firmware image over UART using the XModem tool. Run the following command on the host where the BMC is connected on the UART port.
echo -e -n "\ncd /tmp/cec_images\n \nrz\n" > /dev/ttyUSBX sz -8b CEC.bin < /dev/ttyUSBX > /dev/ttyUSBX
To check the progress of the firmware update on the BMC, run:
echo "cat /tmp/cec_images progress.txt " > /dev/ttyUSBX
Refer to section "Supported Vendor Field Mode Commands" for different firmware update values.
After a successful CEC firmware update, power cycle the board or run the following on the host to activate the new firmware:
host# ipmitool chassis power cycle Chassis Power Control: Cycle
Keep polling the status of the tunnel through UART to check that BMC and CEC are booted up.
Supported Vendor Field Mode Commands
Operation Description | Command |
---|---|
Enable VFM | Run from Arm/BlueField-2 OS and reboot NIC-BMC: ipmitool raw 0x32 0x67 0x01 |
Disable VFM | Run from Arm/BlueField-2 OS and reboot NIC-BMC: ipmitool raw 0x32 0x67 0x00 |
Fetch VFM | Run from Arm OS: ipmitool raw 0x32 0x68 |
Get the status of the tunnel through UART | Run the following command on the host where the BMC is connected: echo -e "\\g\\@" > /dev/ttyUSBX Where Expect the following sequence of chars when the tunnel is up and running: 169 150 230. Expect the following sequence of chars when the tunnel is not running: 165 200. |
Start tunneling on BMC through UART | Run the following command on the host where the BMC is connected: echo "touch /tmp/fw-update/uart-tunneling" > /dev/ttyUSBX Where |
Stop tunneling on BMC through UART | Run the following command on the host where the BMC is connected: echo -e "\r~." > /dev/ttyUSBX Where |
Reboot BMC through UART | Run the following command on the host where the BMC is connected: echo "touch /tmp/fw-update/reboot" > /dev/ttyUSBX Where |
To start/activate the BMC firmware update on BMC through UART | Run the following command on the host where the BMC is connected: echo "touch /tmp/fw-update/fwactivate" > /dev/ttyUSBX Where |
To check the BMC firmware update status on BMC | Run the following command on the BMC: cat /tmp/fw-update/fwstatus Output and their values:
|
To check the CEC firmware update status on BMC | Run the following command on the BMC: cat /tmp/cec_images progress.txt Sample output of the
|
Transfer BMC firmware image for firmware update through UART | Run the following command on the host where the BMC is connected: echo -e -n "\ncd /tmp/images\n \nrz\n" > /dev/ttyUSBX Run the following command on the host where the BMC is connected: sz -8b OTA.tar < /dev/ttyUSBX > /dev/ttyUSBX Where |
Transfer CEC firmware image for firmware update through UART | Run the following command on the host where the BMC is connected: echo -e -n "\ncd /tmp/cec_images\n \nrz\n" > /dev/ttyUSBX Run the following command on the host where the BMC is connected: sz -8b OTA.bin < /dev/ttyUSBX > /dev/ttyUSBX Where |