Fujitsu PRIMERGY: How to check iRMC Firmware Version through IPMI

You can check what iRMC firmware version is used via standard IPMI commands like "ipmitool mc info".

$ ipmitool mc info
Device ID                 : 5
Device Revision           : 2
Firmware Revision         : 1.00
IPMI Version              : 2.0
Manufacturer ID           : 10368
Manufacturer Name         : Fujitsu Technology Solutions GmbH (formerly 'Fujitsu Siemens Computers')
Product ID                : 1300 (0x0514)
Product Name              : Unknown (0x514)
Device Available          : yes
Provides Device SDRs      : no
Additional Device Support :
    Sensor Device
    SDR Repository Device
    SEL Device
    FRU Inventory Device
    IPMB Event Receiver
    IPMB Event Generator
    Chassis Device
Aux Firmware Rev Info     :
    0x02
    0x31
    0x00
    0x50

To get the information remotely, add "-H <irmc address>", "-U <irmc user>", and "-P <irmc password>" options.

$ ipmitool -H <irmc address> -U <irmc user> -P <irmc password> mc info

You can see 0x02 0x31 0x00 0x50 under "Aux Firmware Rev Info", and you can convert 0x02 0x31 to decimal and you get 2.49. 0x50 is the suffix character, and can be converted to 'P'. Therefore 0x02 0x31 0x00 0x50 means 2.49P.
You can also get the same by sending "0x06 0x01" to iRMC like this:

$ ipmitool -I lanplus -H 192.168.10.10 -U admin -P admin raw 0x06 0x01
 05 02 01 00 02 bf 80 28 00 14 05 02 31 00 50
The last four fields "02 31 00 50" are the firmware version. You can format the response so that you can easily see the version like this.
$ ipmitool -I lanplus -H 192.168.10.10 -U admin -P admin raw 0x06 0x01 |while read line; do printf "%d.%d\x${line[0]:42:2}\n" ${line[0]:33:2} "0x${line[0]:36:2}"; done
2.49P

As you probably know, iRMC has two images, one active and one backup, or high firmware and low firmware, or EEPROM1 and EEPROM2. You can get the firmware version for each image via IPMI.
To get the high firmware image version or the EEPROM1 version, use "0x2e 0xf5 0x80 0x28 0x00 0x12 00". To get the low firmware image or EEPROM2 version, use "0x2e 0xf5 0x80 0x28 0x00 0x12 01".

Here is an example from RX2540 M4.

EEPROM1
$ ipmitool -I lanplus -H 192.168.182.97 -U admin -P admin raw 0x2e 0xf5 0x80 0x28 0x00 0x12 00 |while read line; do printf "%d.%d\x${line[0]:27:2} SDR %d.%d\n" ${line[0]:18:2} "0x${line[0]:21:2}" ${line[0]:30:2} ${line[0]:33:2}; break; done
2.42P SDR 3.80
EEPROM2
$ ipmitool -I lanplus -H 192.168.182.97 -U admin -P admin raw 0x2e 0xf5 0x80 0x28 0x00 0x12 01 |while read line; do printf "%d.%d\x${line[0]:27:2} SDR %d.%d\n" ${line[0]:18:2} "0x${line[0]:21:2}" ${line[0]:30:2} ${line[0]:33:2}; break; done
2.46P SDR 3.82

You can also check which image (high or low, or EEPROM1 or EEPROM2) is active via IPMI. For iRMC S4/S5 (PRIMERGY S8 or later), use "0x2e 0xf5 0x80 0x28 0x00 0x07 0x07". For iRMC S2/S3 (PRIMERGY S7 or earlier), use "0x08 0x05".

Here are examples.

iRMC S4/S5
$  ipmitool -I lanplus -H 192.168.182.97 -U admin -P admin raw 0x2e 0xf5 0x80 0x28 0x00 0x07 0x07
 80 28 00 02
The last field (in the above example, it's "02") indicates high or low (or EEPROM1 or EEPROM2). If it's "01", it's high (EEPROM1), and if it's "02", it's low (EEPROM2). iRMC S2/S3
$  ipmitool -I lanplus -H 192.168.182.175 -U admin -P admin raw 0x08 0x05
 00 01
Same as iRMC S4/S5. The last field (in the above example, it's "01") indicates high or low (or EEPROM1 or EEPROM2). If it's "01", it's high (EEPROM1), and if it's "02", it's low (EEPROM2).

No comments:

Good Bye, Folks!

As you may have heard, Fujitsu has completely discontinued Data Center Products and Solutions business in North America on April 1st, 2021. ...