Pages

Thursday, May 16, 2013

[IPMI] FRU Inventory Device Commands

[IPMI] FRU Inventory Device Commands Get FRU Inventory Area Info - NetFn = Storage (0x0ah), CMD = 0x10h, Privilege Level = User, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x10 D[1] Byte 1
FRU Device ID
FFh = reserved

ipmitool fru internaluse <fru id> info
[ipmiutil]
ipmiutil cmd 00 20 28 10 D[1] Byte 1
FRU Device ID
FFh = reserved

icmd 00 20 28 10 D[1] Byte 1
FRU Device ID
FFh = reserved

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x10 D[1] Byte 1
FRU Device ID
FFh = reserved

| MS-DOS |
[ipmitool]
ipmitool 20 28 10 Data[1]

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x10 0x00
 ff Byte 2
FRU Inventory area size in bytes
LS Byte
00 Byte 3
FRU Inventory area size in bytes
MS Byte
00 Byte 4
Response Data Byte 4
[7:1] - reserved
  [0] - 0b = Device is accessed by bytes
        1b = Device is accessed by words

[ipmiutil in Linux]
$ icmd 00 20 28 10 00
ipmiutil cmd ver 3.10
This is a test tool to compose IPMI commands.
Do not use without knowledge of the IPMI specification.
-- BMC version 1.7, IPMI version 2.0
respData[len=3]: ff Byte 2
FRU Inventory area size in bytes
LS Byte
00 Byte 3
FRU Inventory area size in bytes
MS Byte
00 Byte 4
Response Data Byte 4
[7:1] - reserved
  [0] - 0b = Device is accessed by bytes
        1b = Device is accessed by words

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x10 0x00
rcvd: 10 00 Byte 1
Completion Code
00h = Command Completed Normally
FF Byte 2
FRU Inventory area size in bytes
LS Byte
00 Byte 3
FRU Inventory area size in bytes
MS Byte
00 Byte 4
Response Data Byte 4
[7:1] - reserved
  [0] - 0b = Device is accessed by bytes
        1b = Device is accessed by words



Read FRU Data - NetFn = Storage (0x0ah), CMD = 0x11h, Privilege Level = User, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x11 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to read
LS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[3] Byte 3
FRU Inventory Offset to read
MS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[4] Byte 4
Count to read
count is '1' based

ipmitool fru
ipmitool fru print [fru id]
ipmitool fru read <fru id> <fru file>
[ipmiutil]
ipmiutil cmd 00 20 28 11 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to read
LS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[3] Byte 3
FRU Inventory Offset to read
MS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[4] Byte 4
Count to read
count is '1' based

icmd 00 20 28 11 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to read
LS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[3] Byte 3
FRU Inventory Offset to read
MS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[4] Byte 4
Count to read
count is '1' based

ipmiutil fru
ifru
ifru -c
ifru -d file
ifru -i <fru ID>
[FreeIPMI]
ipmi-raw 0x00 0x0a 0x11 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to read
LS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[3] Byte 3
FRU Inventory Offset to read
MS Byte
Offset is in bytes or words per device access type returned in the Get FRU Inventory Area Info command
D[4] Byte 4
Count to read
count is '1' based

ipmi-fru
ipmi-fru -e DEVICE_ID
ipmi-fru --device-id=DEVICE_ID
ipmi-fru --fru-file=FILENAME
| MS-DOS |
[ipmitool]
ipmitool 20 28 11 Data[1:4]

--Completion Code--
81h = FRU device busy

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x11 0x00 0x00 0x00 0xff
 68 Byte 2
Count returned
count is '1' based
01 01 02 04 08 00 00 f0 01 00 01 04 00 00 03
 f7 01 02 17 c5 53 30 36 31 37 c0 c0 c1 00 00 00
 c0 01 04 00 00 7f 98 c3 46 58 4c c5 53 30 36 31
 37 c0 c8 46 58 2d 53 30 36 31 37 c0 c0 c1 00 00
 9d 01 05 00 c3 46 54 50 c7 46 58 4c 53 30 36 31
 c7 46 58 2d 53 30 36 31 c3 31 2e 31 c0 c0 c0 c0
 c1 00 00 00 00 00 00 00 19
Byte [3:N]
Requested data

$ ipmitool fru
FRU Device Description : Builtin FRU Device (ID 0)
 Chassis Type          : Rack Mount Chassis
 Chassis Part Number   : F0617
 Board Mfg Date        : Sat Jun  17 14:24:00 2017
 Board Mfg             : FTP
 Board Product         : F0617
 Board Part Number     : FT-F0617
 Product Manufacturer  : FTP
 Product Name          : FTPF617
 Product Part Number   : FT-F617
 Product Version       : 1.1

$ ipmitool fru print 0x00
 Chassis Type          : Rack Mount Chassis
 Chassis Part Number   : F0617
 Board Mfg Date        : Sat Jun  17 14:24:00 2017
 Board Mfg             : FTP
 Board Product         : F0617
 Board Part Number     : FT-F0617
 Product Manufacturer  : FXL
 Product Name          : FTPF617
 Product Part Number   : FT-F617
 Product Version       : 1.1
$ ipmitool fru read 0x00 fru.bin
Fru Size         : 255 bytes
Done
[ipmiutil in Linux]
$ icmd 00 20 28 11 00 00 00 ff
ipmiutil cmd ver 3.10
This is a test tool to compose IPMI commands.
Do not use without knowledge of the IPMI specification.
-- BMC version 1.7, IPMI version 2.0
respData[len=105]: 68 Byte 2
Count returned
count is '1' based
01 01 02 04 08 00 00 f0 01 00 01 04 00 00 03 f7 01 02 17 c5 46 30 36 31 37 c0 c0 c1 00 00 00 c0 01 04 00 00 7f 98 c3 46 54 50 c5 46 30 36 31 37 c0 c8 4d 53 2d 46 30 36 31 37 c0 c0 c1 00 00 9d 01 05 00 c3 46 54 50 c7 46 54 50 53 36 31 37 c7 4d 53 2d 53 36 31 37 c3 31 2e 31 c0 c0 c0 c0 c1 00 00 00 00 00 00 00 19 Byte [3:N]
Requested data

send_icmd ret = 0
ipmiutil cmd, completed successfully
$ ifru -c
ipmiutil fru version 3.10
-- BMC version 1.07, IPMI version 2.0
--- Scanning SDR Repository for 28 SDRs ---
SDR[0019] IPMB | AST2400-F0617
Baseboard FRU Size  | 255
Chassis Type        | Rack-Mount Chassis
Chassis Part Number | F0617
Chassis Serial Num  |
Chassis OEM Field   |
Board Mfg DateTime  | Sat Jun  17 14:24:00 2017
Board Manufacturer  | FTP
Board Product Name  | F0617
Board Serial Number |
Board Part Number   | FT-F0617
Board FRU File ID   |
Board OEM Field     |
Product Manufacturer| FTP
Product Name        | FTPF617
Product Part Number | FT-F617
Product Version     | 1.1
Product Serial Num  |
Product Asset Tag   |
Product FRU File ID |
Product OEM Field   |
System GUID         | d8cb8af7-c6b6-9f03-0010-debf8c003e6c

BIOS Version        | FTF617.106
System Name         | RMManager
Pri Operating System| SUSEServer1.0
Sec Operating System|
ipmiutil fru, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x11 0x00 0x00 0x00 0x0f
rcvd: 11 00 Byte 1
Completion Code
00h = Command Completed Normally
81h = FRU device busy
0F Byte 2
Count returned
count is '1' based
01 01 02 04 08 00 00 F0 01 00 01 04 00 00 03 Byte [3:N]
Requested data

$ ipmi-fru
FRU Inventory Device: Default FRU Device (ID 00h)

  FRU Chassis Type: Rack Mount Chassis
  FRU Chassis Part Number: F0617

  FRU Board Manufacturing Date/Time: 06/17/17 - 22:24:00
  FRU Board Manufacturer: FTP
  FRU Board Product Name: F0617
  FRU Board Part Number: FT-F0617

  FRU Product Manufacturer Name: FTP
  FRU Product Name: FTPF617
  FRU Product Part/Model Number: FT-F617
  FRU Product Version: 1.1
  FRU Product Asset Tag: tag


Write FRU Data - NetFn = Storage (0x0ah), CMD = 0x12h, Privilege Level = Operator, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x12 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to write
LS Byte
D[3] Byte 3
FRU Inventory Offset to write
MS Byte
D[4:N] Byte [4:N]
Data to write

ipmitool fru write <fru id> <fru file>
ipmitool fru edit <fruid> field <section> <index> <string>
[ipmiutil]
ipmiutil cmd 00 20 28 12 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to write
LS Byte
D[3] Byte 3
FRU Inventory Offset to write
MS Byte
D[4:N] Byte [4:N]
Data to write

icmd 00 20 28 12 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to write
LS Byte
D[3] Byte 3
FRU Inventory Offset to write
MS Byte
D[4:N] Byte [4:N]
Data to write

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x12 D[1] Byte 1
FRU Device ID
FFh = reserved
D[2] Byte 2
FRU Inventory Offset to write
LS Byte
D[3] Byte 3
FRU Inventory Offset to write
MS Byte
D[4:N] Byte [4:N]
Data to write

| MS-DOS |
[ipmitool]
ipmitool 20 28 12 Data[1:N]

--Completion Code--
80h = write-protected offset
81h = FRU device busy

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x12 0x00 0x00 0x00 0x01 0x01 0x02 0x04 0x08 0x00 0x00 0xf0
 08 Byte 2
Count written
count is '1' based

$ ipmitool fru write 0x0 fru.bin
Fru Size         : 255 bytes
Size to Write    : 255 bytes
$ ipmitool fru edit 0x0 field b 1 FTP0617
String size are not equal, resizing fru to fit new string
Read All FRU area
Fru Size       : 255 bytes
Copy to new FRU
Section Length: 32
Padding Length: 2
NumByte Change: 2
Start SecChnge: c5
End SecChnge  : 4d
Start Section : 1
End Sec wo Pad: c1
End Section   : 9d
New Padding Length: 0
Updating Field : 'SSSSS' with 'FTP0617' ... (Length from '197' to '199')
Copying remaining of sections: 13
Calculate New Checksum: ffffff03
Writing new FRU.
Done.
[ipmiutil in Linux]
$ icmd 00 20 28 12 00 00 00 01 01 02 03 08 00 00 f0
ipmiutil cmd ver 3.10
This is a test tool to compose IPMI commands.
Do not use without knowledge of the IPMI specification.
-- BMC version 1.7, IPMI version 2.0
respData[len=1]: 08 Byte 2
Count written
count is '1' based

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x12 0x00 0x00 0x00 0x01 0x01 0x02 0xf0
rcvd: 12 00 Byte 1
Completion Code
00h = Command Completed Normally
80h = write-protected offset
81h = FRU device busy
04 Byte 2
Count written
count is '1' based



Reference
[1] "Intelligent Platform Management Interface Specification Second Generation v2.0 Document Revision 1.1"
https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf
[2] "Platform Management FRU Information Storage Definition v1.0"
https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/platform-management-fru-document-rev-1-2-feb-2013.pdf
[3] "IPMItool" http://sourceforge.net/projects/ipmitool/
[4] "IPMI Command Test Tool" http://www.intel.com/design/servers/ipmi/ipmi_tool.htm
[5] "IPMIUTIL USER GUIDE" http://ipmiutil.sourceforge.net/
[6] "FreeIPMI Documentation" http://www.gnu.org/software/freeipmi/index.html

Last Updated: Jun 1, 2018

No comments:

Post a Comment