Upgrade Component
更新时间: 2026/08/06
在Gitcode上查看源码

Upgrade Component

Change History

openUBMC VersionRevision DateDescription
25.062025/06/26Initial draft: add command details

Basic Information

Function Description

This command is used to upgrade a component.

Privilege

BasicSetting

Command Information

Request Information

ByteData Field
NetFn30h
CMD91h
1:3Manufacturer ID, LS Byte first. The length is fixed to three bytes. For example, if the vendor ID is 2011 and the corresponding hexadecimal value is 0x0007DB, the first byte is DBh, the second byte is 07h, and the third byte is 00h.
4Sub command, sub command=06h
5Operation type:
55h finish upgrade
AA initiate upgrade
CCh SMM initiate upgrade
Set the BMC restart flag after the upgrade is complete on the CDh. (Before the upgrade, set the BMC to be manually restarted. After the upgrade progress reaches 100%, set the BMC to be automatically restarted. This solves the problem that the NMS cannot obtain the 100% progress.)
The implementation difference between V2 and V3 is as follows: In V2, the return value contains only Completion Code. In V3, the return value contains IANA and Upgrade progress.
The CEh command forcibly upgrades the BIOS. The service system is powered off and the BIOS firmware is upgraded in full space.
Set the DDh power-off and then upgrade flag. (Deliver the DDh operation type and then the upgrade command. If the power-off is required before the upgrade, power off the device and then perform the upgrade. This solves the problem that the BIOS cannot be upgraded in in-band mode.)
00h get upgrade status
DANGER: If Operation type is set to CEh, the customized BIOS configuration will be erased. As a result, the customized BIOS function becomes invalid. Exercise caution when performing this operation.
6*FRU ID
If the value of byte5 is DDh, safe power-off needs to be performed before the upgrade. However, the safe power-off timeout period may be permanent. As a result, the power-off and upgrade may fail. Therefore, if the value of byte5 is DDh and the command does not contain byte6 and byte7 (for compatibility), by default, the server is forcibly powered off after 5 minutes.
When byte5 is DDh, this byte indicates the lower byte of the power-off timeout period before the upgrade, in seconds.
7*Reserved. The value is fixed to 0.
When byte5 is DDh, this byte indicates the high-order byte of the power-off timeout period before the upgrade, in seconds.
NOTE: Currently, the BMC does not process the component ID and this field will not be used in the future. Currently, the definition of this field is different from that in the implementation, and the implementation of iBMCBMC v1 and iBMCBMC v2 is different. Therefore, this field is reserved.
8*Flag
[7]: Concatenation flag
0: last data
1: middle data
[6:0]: offset of the file name, starting from 0.
Do not mix the sequence when transmitting a file name multiple times.
9*Length
[7]: effective mode
0: The upgrade takes effect manually. After the firmware (such as BMC and CSR) is upgraded, you need to manually restart the system for the upgrade to take effect.
1: The firmware (such as BMC and CSR) upgrade takes effect after the system is automatically restarted.
[6:0]: Length, data length of the current frame. The length of a single frame cannot exceed 16 bytes.
10:N*Filename: absolute path name. The length of a single frame request cannot exceed 16 bytes.
Note: The asterisk (*) needs to be filled only when 80 historical data is obtained.

Response Information

ByteData Field
1Completion Code
0x80: The upgrade is in progress.
0x81: reserved
0x82: The file does not exist.
0x83: file error
0x84: The memory is insufficient.
0x85 File transfer failure (SM)
0x86: The upgrade space is insufficient (SM).
0x87 File name conflict
0x88: The upgrade is not supported when the system is not powered off.
0x89: The firmware version does not match.
0x8B: A physical partition in the same SCE is powered on, and the upgrade cannot be performed.
0x8C: The upgrade file does not match (board ID mismatch).
0x8D: The ME status is incorrect and the BIOS cannot be upgraded.
0x8E: unknown error
0xA8: The BMC coprocessor upgrade fails.
2:4Manufacturer ID, LS Byte first. The length is fixed to three bytes. For example, if the vendor ID is 2011 and the corresponding hexadecimal value is 0x0007DB, the first byte is DBh, the second byte is 07h, and the third byte is 00h.
5Upgrade progress.
[7]-status
0h=Upgrade in progress.
1h=Upgrade completed: indicates that the upgrade is complete or no upgrade task is available.
[6:0]-Upgrade progress percentage
(6)Upgrade mode.
1h=prepare
2h=process
3h=complete
other: reserve
(7)upgrade compnent(1) if operation type=00h, which is extended to 4 bytes. This is the least significant byte.
(8:9)sub error code LSB if operation type=00h
(10)upgrade compnent(2) if operation type=00h, which is extended to 4 bytes
(11)upgrade compnent(3) if operation type=00h, which is extended to 4 bytes
(12)upgrade compnent(4) if operation type=00h, which is extended to 4 bytes. This is the most significant byte.

Command Example

Obtain the upgrade status.

Request:

bash
ipmicmd -k "0f 00 30 91 db 07 00 06 00" smi 0

Response:

text
0f 31 00 91 00 db 07 00 e4 03 11 00 00 00 00 00

Back to Index