Pages

Monday, May 13, 2013

[IPMI] System Event Log (SEL) Commands

[IPMI] System Event Log (SEL) Commands Get SEL Info - NetFn = Storage (0x0ah), CMD = 0x40h, Privilege Level = User, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x40
ipmitool sel
ipmitool sel info
[ipmiutil]
ipmiutil cmd 00 20 28 40
icmd 00 20 28 40
ipmiutil sel -v
isel -v
[FreeIPMI]
ipmi-raw 0x00 0x0a 0x40
ipmi-sel -i
| MS-DOS |
[ipmitool]
ipmitool 20 28 40
--Completion Code--
81h = cannot execute command, SEL erase in progress

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x40
 51 Byte 2
SEL Version
Version number of the SEL command set for this SEL Device
51h for this specification
(BCD encoded). BCD encoded with bits 7:4 holding the Least Significant digit of the revision and bits 3:0 holding the Most Significant bits
08 Byte 3
Entries LS Byte
Number of log entries in SEL, LS Byte
00 Byte 4
Entries MS Byte
Entries MS Byte - number of log entries in SEL, MS Byte
4c fb Byte [5:6]
Free Space in Bytes
LS Byte first
FFFFh indicates 65535 or more bytes of free space are available
5d 55 0b 5b Byte [7:10]
Most Recent Addition Timestamp
LS byte first
Returns FFFF_FFFFh if no SEL entries have ever been made or if a component update or error caused the retained value to be lost
43 d2 ff 4e Byte [11:14]
Most Recent Erase Timestamp
Last time that one or more entries were deleted from the log
LS byte first
0f Byte 15
Operation Support
  [7] - Overflow Flag
        1=Events have been dropped due to lack of space in the SEL
[6:4] - reserved. Write as 000
  [3] - 1b = Delete SEL command supported
  [2] - 1b = Partial Add SEL Entry command supported
  [1] - 1b = Reserve SEL command supported
  [0] - 1b = Get SEL Allocation Information command supported

$ ipmitool sel
$ ipmitool sel info
SEL Information
Version          : 1.5 (v1.5, v2 compliant)
Entries          : 8
Free Space       : 64332 bytes
Percent Used     : 0%
Last Add Time    : 05/28/2018 01:03:25
Last Del Time    : 01/01/2012 03:25:55
Overflow         : false
Supported Cmds   : 'Delete' 'Partial Add' 'Reserve' 'Get Alloc Info'
# of Alloc Units : 3582
Alloc Unit Size  : 18
# Free Units     : 3574
Largest Free Blk : 3574
Max Record Size  : 1
[ipmiutil in Linux]
$ icmd 00 20 28 40
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=14]: 51 Byte 2
SEL Version
Version number of the SEL command set for this SEL Device
51h for this specification
(BCD encoded). BCD encoded with bits 7:4 holding the Least Significant digit of the revision and bits 3:0 holding the Most Significant bits
08 Byte 3
Entries LS Byte
Number of log entries in SEL, LS Byte
00 Byte 4
Entries MS Byte
Entries MS Byte - number of log entries in SEL, MS Byte
4c fb Byte [5:6]
Free Space in Bytes
LS Byte first
FFFFh indicates 65535 or more bytes of free space are available
5d 55 0b 5b Byte [7:10]
Most Recent Addition Timestamp
LS byte first
Returns FFFF_FFFFh if no SEL entries have ever been made or if a component update or error caused the retained value to be lost
43 d2 ff 4e Byte [11:14]
Most Recent Erase Timestamp
Last time that one or more entries were deleted from the log
LS byte first
0f Byte 15
Operation Support
  [7] - Overflow Flag
        1=Events have been dropped due to lack of space in the SEL
[6:4] - reserved. Write as 000
  [3] - 1b = Delete SEL command supported
  [2] - 1b = Partial Add SEL Entry command supported
  [1] - 1b = Reserve SEL command supported
  [0] - 1b = Get SEL Allocation Information command supported

send_icmd ret = 0
ipmiutil cmd, completed successfully
$ isel -v
ipmiutil sel version 3.10
-- BMC version 1.07, IPMI version 2.0
SEL Ver fe Support 0f, Size = 3582 records (Used=8, Free=3574)
ipmiutil sel, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x40
00 Byte 1
Completion Code
00h = Command Completed Normally
81h = cannot execute command, SEL erase in progress
51 Byte 2
SEL Version
Version number of the SEL command set for this SEL Device
51h for this specification
(BCD encoded). BCD encoded with bits 7:4 holding the Least Significant digit of the revision and bits 3:0 holding the Most Significant bits
08 Byte 3
Entries LS Byte
Number of log entries in SEL, LS Byte
00 Byte 4
Entries MS Byte
Entries MS Byte - number of log entries in SEL, MS Byte
4C FB Byte [5:6]
Free Space in Bytes
LS Byte first
FFFFh indicates 65535 or more bytes of free space are available
5D 55 0B 5B Byte [7:10]
Most Recent Addition Timestamp
LS byte first
Returns FFFF_FFFFh if no SEL entries have ever been made or if a component update or error caused the retained value to be lost
43 D2 FF 4E Byte [11:14]
Most Recent Erase Timestamp
Last time that one or more entries were deleted from the log
LS byte first
0F Byte 15
Operation Support
  [7] - Overflow Flag
        1=Events have been dropped due to lack of space in the SEL
[6:4] - reserved. Write as 000
  [3] - 1b = Delete SEL command supported
  [2] - 1b = Partial Add SEL Entry command supported
  [1] - 1b = Reserve SEL command supported
  [0] - 1b = Get SEL Allocation Information command supported

$ ipmi-sel -i
SEL version                            : 1.5
Number of log entries                  : 8
Free space remaining                   : 64332 bytes
Recent addition timestamp              : 05/28/2018 - 01:03:25
Recent erase timestamp                 : 01/01/2012 - 03:25:55
Get SEL Allocation Information Command : supported
Reserve SEL Command                    : supported
Partial Add SEL Entry Command          : supported
Delete SEL Command                     : supported
Events dropped due to lack of space    : No
Number of possible allocation units    : 3582
Allocation unit size                   : 18 bytes
Number of free allocation units        : 3574
Largest free block                     : 3574 allocation units
Maximum record size                    : 1 allocation units


Get SEL Allocation Info - NetFn = Storage (0x0ah), CMD = 0x41h, Privilege Level = User, M/O = O
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x41
ipmitool sel info
[ipmiutil]
ipmiutil cmd 00 20 28 41
icmd 00 20 28 41
ipmiutil sel -v
isel -v
[FreeIPMI]
ipmitool raw 0x00 0x0a 0x41
ipmi-sel -i
| MS-DOS |
[ipmitool]
ipmitool 20 28 41

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x41
 fe Byte 2
Response Data Byte 2
Number of possible allocation units, LS Byte
0d Byte 3
Response Data Byte 3
Number of possible allocation units, MS Bytes
This number indicates whether the total number of possible allocation units is equal to, or some number less than the log size divided by the allocation unit size
0000h indicates 'unspecified'
12 Byte 4
Response Data Byte 4
Allocation unit size in bytes, LS Byte
0000h indicates 'unspecified'
00 Byte 5
Response Data Byte 5
Allocation unit size in bytes, MS byte
f6 Byte 6
Response Data Byte 6
Number of free allocation units, LS Byte
0d Byte 7
Response Data Byte 7
Number of free allocation units, MS Byte
f6 Byte 8
Response Data Byte 8
Largest free block in allocation units, LS Byte
0d Byte 9
Response Data Byte 9
Largest free block in allocation units, MS Byte
01 Byte 10
Response Data Byte 10
Maximum record size in allocation units

[ipmiutil in Linux]
$ icmd 00 20 28 41
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=9]: fe Byte 2
Response Data Byte 2
Number of possible allocation units, LS Byte
0d Byte 3
Response Data Byte 3
Number of possible allocation units, MS Bytes
This number indicates whether the total number of possible allocation units is equal to, or some number less than the log size divided by the allocation unit size
0000h indicates 'unspecified'
12 Byte 4
Response Data Byte 4
Allocation unit size in bytes, LS Byte
0000h indicates 'unspecified'
00 Byte 5
Response Data Byte 5
Allocation unit size in bytes, MS byte
f6 Byte 6
Response Data Byte 6
Number of free allocation units, LS Byte
0d Byte 7
Response Data Byte 7
Number of free allocation units, MS Byte
f6 Byte 8
Response Data Byte 8
Largest free block in allocation units, LS Byte
0d Byte 9
Response Data Byte 9
Largest free block in allocation units, MS Byte
01 Byte 10
Response Data Byte 10
Maximum record size in allocation units

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0xa 0x41
rcvd: 41 00 Byte 1
Completion Code
00h = Command Completed Normally
FE Byte 2
Response Data Byte 2
Number of possible allocation units, LS Byte
0D Byte 3
Response Data Byte 3
Number of possible allocation units, MS Bytes
This number indicates whether the total number of possible allocation units is equal to, or some number less than the log size divided by the allocation unit size
0000h indicates 'unspecified'
12 Byte 4
Response Data Byte 4
Allocation unit size in bytes, LS Byte
0000h indicates 'unspecified'
00 Byte 5
Response Data Byte 5
Allocation unit size in bytes, MS byte
F6 Byte 6
Response Data Byte 6
Number of free allocation units, LS Byte
0D Byte 7
Response Data Byte 7
Number of free allocation units, MS Byte
F6 Byte 8
Response Data Byte 8
Largest free block in allocation units, LS Byte
0D Byte 9
Response Data Byte 9
Largest free block in allocation units, MS Byte
01 Byte 10
Response Data Byte 10
Maximum record size in allocation units



Reserve SEL - NetFn = Storage (0x0ah), CMD = 0x42h, Privilege Level = User, M/O = O
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x42
[ipmiutil]
ipmiutil cmd 00 20 28 42
icmd 00 20 28 42
[FreeIPMI]
ipmi-raw 0x00 0x0a 0x42
| MS-DOS |
[ipmitool]
ipmitool 20 28 42

--Completion Code--
81h = cannot execute command, SEL erase in progress

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x42
 ba Byte 2
Response Data Byte 2
Reservation ID, LS Byte
0000h reserved
58 Byte 3
Response Data Byte 3
Reservation ID, MS Byte

[ipmiutil in Linux]
$ icmd 00 20 28 42
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=2]: ab Byte 2
Response Data Byte 2
Reservation ID, LS Byte
0000h reserved
d7 Byte 3
Response Data Byte 3
Reservation ID, MS Byte

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x42
rcvd: 42 00 Byte 1
Completion Code
00h = Command Completed Normally
81h = cannot execute command, SEL erase in progress
F2 Byte 2
Response Data Byte 2
Reservation ID, LS Byte
0000h reserved
41 Byte 3
Response Data Byte 3
Reservation ID, MS Byte



Get SEL Entry - NetFn = Storage (0x0ah), CMD = 0x43h, Privilege Level = User, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x43 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial Get
Use 0000h otherwise
D[3:4] Byte [3:4]
SEL Record ID
LS Byte first
0000h = GET FIRST ENTRY
FFFFh = GET LAST ENTRY
D[5] Byte 5
Offset Into Record
D[6] Byte 6
Bytes to Read
FFh means read entire record

ipmitool sel elist
ipmitool sel list
ipmitool sel get <entry>
ipmitool sel save <filename>
[ipmiutil]
ipmiutil cmd 00 20 28 43 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial Get
Use 0000h otherwise
D[3:4] Byte [3:4]
SEL Record ID
LS Byte first
0000h = GET FIRST ENTRY
FFFFh = GET LAST ENTRY
D[5] Byte 5
Offset Into Record
D[6] Byte 6
Bytes to Read
FFh means read entire record

icmd 00 20 28 43 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial Get
Use 0000h otherwise
D[3:4] Byte [3:4]
SEL Record ID
LS Byte first
0000h = GET FIRST ENTRY
FFFFh = GET LAST ENTRY
D[5] Byte 5
Offset Into Record
D[6] Byte 6
Bytes to Read
FFh means read entire record

ipmiutil sel
isel
[FreeIPMI]
ipmi-raw 0x00 0x04 0x43 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial Get
Use 0000h otherwise
D[3:4] Byte [3:4]
SEL Record ID
LS Byte first
0000h = GET FIRST ENTRY
FFFFh = GET LAST ENTRY
D[5] Byte 5
Offset Into Record
D[6] Byte 6
Bytes to Read
FFh means read entire record

ipmi-sel
| MS-DOS |
[ipmitool]
ipmitool 20 28 43 Data[1:6]

--Completion Code--
Return an error completion code if the SEL is empty
81h = cannot execute command, SEL erase in progress

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
Get First Entry of SEL
$ ipmitool raw 0x0a 0x43 0x00 0x00 0x00 0x00 0x00 0xff
 02 00 Byte [2:3]
Next SEL Record ID
LS Byte first
(return FFFFh if the record just returned is the last record.)
Note: FFFFh is not allowed as the record ID for an actual record
I.e. the Record ID in the Record Data for the last record should not be FFFFh
01 00 02 61 48 01 4f 01 00 04 01 1f 00 0a
 04 06 Byte [4:N]
Record Data
16 bytes for entire record

$ ipmitool sel elist first 0x01
   1 | 01/02/2012 | 06:02:09 | Temperature #0x1f |  | Asserted
Get Last Entry of SEL
$ ipmitool raw 0x0a 0x43 0x00 0x00 0xff 0xff 0x00 0xff
 ff ff Byte [2:3]
Next SEL Record ID
LS Byte first
(return FFFFh if the record just returned is the last record.)
Note: FFFFh is not allowed as the record ID for an actual record
I.e. the Record ID in the Record Data for the last record should not be FFFFh
06 00 02 55 49 01 4f 20 00 04 12 ff 6f c4
 10 ff Byte [4:N]
Record Data
16 bytes for entire record

$ ipmitool sel elist last 0x01
   6 | 01/02/2012 | 06:06:13 | System Event #0xff | PEF Action | Asserted
Save SEL to File
$ ipmitool sel save sellistsave.txt
[ipmiutil in Linux]
$ icmd 00 20 28 43 00 00 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=18]: 02 00 Byte [2:3]
Next SEL Record ID
LS Byte first
(return FFFFh if the record just returned is the last record.)
Note: FFFFh is not allowed as the record ID for an actual record
I.e. the Record ID in the Record Data for the last record should not be FFFFh
01 00 02 8f d2 ff 4e 01 00 04 0c 00 00 01 00 00 Byte [4:N]
Record Data
16 bytes for entire record

send_icmd ret = 0
ipmiutil cmd, completed successfully
$ isel -n
ipmiutil sel version 3.10
-- BMC version 1.07, IPMI version 2.0
SEL  Size = 3582 records (Used=44, Free=3538)
RecId | Date/Time  | SEV | Src | Evt_Type | Sensor | Evt_detail
0001 | 01/01/12 11:27:11 | MAJ | EFI  | Memory | na | Uncorrectable ECC, NODE 1/CPU0_DIMM1
0002 | 01/01/00 08:00:14 | INF | ME   | Microcontroller | na | chg to Running
0003 | 01/01/00 08:00:14 | INF | ME   | Microcontroller | na | chg to Running
0004 | 01/01/00 08:00:14 | INF | ME   | Microcontroller | na | chg to Running
0005 | 01/01/00 08:00:14 | INF | ME   | Microcontroller | na | chg to Running
0006 | 01/01/00 08:00:14 | INF | ME   | Microcontroller | na | chg to Running
...
ipmiutil sel, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x43 0x00 0x00 0x00 0x00 0x00 0xff
rcvd: 43 00 Byte 1
Completion Code
00h = Command Completed Normally
Return an error completion code if the SEL is empty
81h = cannot execute command, SEL erase in progress
02 00 Byte [2:3]
Next SEL Record ID
LS Byte first
(return FFFFh if the record just returned is the last record.)
Note: FFFFh is not allowed as the record ID for an actual record
I.e. the Record ID in the Record Data for the last record should not be FFFFh
01 00 02 8F D2 FF 4E 01 00 04 0C 00 00 01 00 00 Byte [4:N]
Record Data
16 bytes for entire record

$ ipmi-sel
ID | Date        | Time     | Name        | Type        | Event
1  | Jan-01-2012 | 03:27:11 | Sensor #0   | Memory      | Event Offset = 01h ; Event Data2 = 00h ; Event Data3 = 00h
2  | Jan-01-2000 | 00:00:14 | Sensor #22  | Microcontroller/Coprocessor | transition to Running
3  | Jan-01-2000 | 00:00:14 | Sensor #22  | Microcontroller/Coprocessor | transition to Running
4  | Jan-01-2000 | 00:00:14 | Sensor #22  | Microcontroller/Coprocessor | transition to Running
5  | Jan-01-2000 | 00:00:14 | Sensor #22  | Microcontroller/Coprocessor | transition to Running
6  | Jan-01-2000 | 00:00:14 | Sensor #22  | Microcontroller/Coprocessor | transition to Running
...


Add SEL Entry - NetFn = Storage (0x0ah), CMD = 0x44h, Privilege Level = Operator, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x44 D[1:16] Byte [1:16]
Record Data
16 bytes
SEL Record Formats

ipmitool sel add <filename>
[ipmiutil]
ipmiutil cmd 00 20 28 0x44 D[1:16] Byte [1:16]
Record Data
16 bytes
SEL Record Formats

icmd 00 20 28 44 D[1:16] Byte [1:16]
Record Data
16 bytes
SEL Record Formats

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x44 D[1:16] Byte [1:16]
Record Data
16 bytes
SEL Record Formats

| MS-DOS |
[ipmitool]
ipmitool 20 28 44 Data[1:16]

--Completion Code--
80h = operation not supported for this Record Type
81h = cannot execute command, SEL erase in progress

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x44 0x01 0x00 0x02 0xab 0xcd 0xef 0x00 0x01 0x00 0x04 0x01 0x17 0x00 0xa0 0x04 0x07
 01 00 Byte [2:3]
Record ID for Added Record
LS Byte first

$ ipmitool sel save sellistsave.txt
   1 | 01/02/2012 | 05:53:44 | Temperature #0x17 |  | Asserted
   2 | 01/02/2012 | 05:53:45 | System Event #0xff | PEF Action | Asserted
   3 | 01/02/2012 | 05:53:45 | System Event #0xff | PEF Action | Asserted
$ cat sellistsave.txt
0x04 0x01 0x17 0x00 0xa0 0x04 0x07 # Temperature #0x17 Unknown
0x04 0x12 0xff 0x6f 0xc4 0x01 0xff # System Event #0xff PEF Action
0x04 0x12 0xff 0x6f 0xc4 0x10 0xff # System Event #0xff PEF Action
$ ipmitool sel add sellistsave.txt
   0 |  Pre-Init  |0000000000| Temperature #0x17 |  | Asserted
   0 |  Pre-Init  |0000000000| System Event #0xff | PEF Action | Asserted
   0 |  Pre-Init  |0000000000| System Event #0xff | PEF Action | Asserted
[ipmiutil in Linux]
$ icmd 00 20 28 44 01 00 02 0a 0b ff 00 01 00 04 01 1f 00 0a 04 06
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=2]: 01 00 Byte [2:3]
Record ID for Added Record
LS Byte first

send_icmd ret = 0
ipmiutil cmd, completed successfully
$ isel -n
ipmiutil sel version 3.10
-- BMC version 1.07, IPMI version 2.0
SEL Size = 3582 records (Used=3, Free=3579)
RecId | Date/Time | SEV | Src | Evt_Type | Sensor | Evt_detail
0001 | 01/02/12 14:02:09 | INF | EFI | Temperature | na | Temp Asserted
ipmiutil sel, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x44 0x01 0x00 0x02 0x0c 0x0d 0x0e 0x01 0x02 0x03 0x04 0x06 0x17 0x0d 0xa0 0x04 0x09
rcvd: 44 00 Byte 1
Completion Code
00h = Command Completed Normally
80h = operation not supported for this Record Type
81h = cannot execute command, SEL erase in progress
04 00 Byte [2:3]
Record ID for Added Record
LS Byte first

$ ipmi-sel
ID | Date        | Time     | Name        | Type        | Event
1  | Jan-02-2012 | 06:02:09 | Sensor $31  | Temperature | Event Offset = 0Ah ; Event Data2 = 04h ; Event Data3 = 06h
2  | Jan-02-2012 | 06:02:10 | Sensor $255 | System Event | PEF Action ; Event Data2 = 01h
3  | Jan-02-2012 | 06:02:10 | Sensor $255 | System Event | PEF Action ; Event Data2 = 10h
4  | Jan-02-2012 | 06:06:13 | Sensor $23  | Platform Security Violation Attempt | Event Offset = 00h ; Event Data2 = 04h ; Event Data3 = 09h


Partial Add SEL Entry - NetFn = Storage (0x0ah), CMD = 0x45h, Privilege Level = Operator, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x45 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial add
Use 0000h for Reservation ID otherwise
D[3:4] Byte [3:4]
Record ID
LS Byte first
Used when continuing a partial add (nonzero offset into record)
Use 0000h for Record ID otherwise
D[5] Byte 5
Offset into record
D[6] Byte 6
In Progress
[7:4] - reserved
[3:0] - in progress
        0h = partial add in progress
        1h = last record data being transferred with this request
D[7:N] Byte [7:N]
SEL Record Data

[ipmiutil]
ipmiutil cmd 00 20 28 45 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial add
Use 0000h for Reservation ID otherwise
D[3:4] Byte [3:4]
Record ID
LS Byte first
Used when continuing a partial add (nonzero offset into record)
Use 0000h for Record ID otherwise
D[5] Byte 5
Offset into record
D[6] Byte 6
In Progress
[7:4] - reserved
[3:0] - in progress
        0h = partial add in progress
        1h = last record data being transferred with this request
D[7:N] Byte [7:N]
SEL Record Data

icmd 00 20 28 45 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial add
Use 0000h for Reservation ID otherwise
D[3:4] Byte [3:4]
Record ID
LS Byte first
Used when continuing a partial add (nonzero offset into record)
Use 0000h for Record ID otherwise
D[5] Byte 5
Offset into record
D[6] Byte 6
In Progress
[7:4] - reserved
[3:0] - in progress
        0h = partial add in progress
        1h = last record data being transferred with this request
D[7:N] Byte [7:N]
SEL Record Data

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x45 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
Only required for partial add
Use 0000h for Reservation ID otherwise
D[3:4] Byte [3:4]
Record ID
LS Byte first
Used when continuing a partial add (nonzero offset into record)
Use 0000h for Record ID otherwise
D[5] Byte 5
Offset into record
D[6] Byte 6
In Progress
[7:4] - reserved
[3:0] - in progress
        0h = partial add in progress
        1h = last record data being transferred with this request
D[7:N] Byte [7:N]
SEL Record Data

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

--Completion Code--
80h = Record rejected due to mismatch between record length in header data and number of bytes written. (Verifying the length is an optional operation for the management controller)
81h = cannot execute command, SEL erase in progress


Delete SEL Entry - NetFn = Storage (0x0ah), CMD = 0x46h, Privilege Level = Operator, M/O = O
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x46 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3:4] Byte [3:4]
SEL Record ID to Delete
LS Byte first
0000h = FIRST ENTRY
FFFFh = LAST ENTRY

ipmitool sel delete <id>
[ipmiutil]
ipmiutil cmd 00 20 28 46 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3:4] Byte [3:4]
SEL Record ID to Delete
LS Byte first
0000h = FIRST ENTRY
FFFFh = LAST ENTRY

icmd 00 20 28 46 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3:4] Byte [3:4]
SEL Record ID to Delete
LS Byte first
0000h = FIRST ENTRY
FFFFh = LAST ENTRY

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x46 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3:4] Byte [3:4]
SEL Record ID to Delete
LS Byte first
0000h = FIRST ENTRY
FFFFh = LAST ENTRY

ipmi-sel --delete=RECORD-IDS-LIST
ipmi-sel --delete-range=START-END
| MS-DOS |
[ipmitool]
ipmitool 20 28 46 Data[1:4]

--Completion Code--
80h = operation not supported for this Record Type
81h = cannot execute command, SEL erase in progress

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x42
 4a 94
$ ipmitool raw 0x0a 0x46 0x4a 0x94 0x00 0x00
 01 00 Byte [2:3]
Record ID for Deleted Record
LS Byte first

$ ipmitool sel delete 0x0a
Deleted entry 10
[ipmiutil in Linux]
$ icmd 00 20 28 42
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=2]: ec 58
send_icmd ret = 0
ipmiutil cmd, completed successfully
$ icmd 00 20 28 46 ec 58 ff 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=2]: 02 00 Byte [2:3]
Record ID for Deleted Record
LS Byte first

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x42
rcvd: 42 00 C2 62
$ ipmi-raw 0x00 0x0a 0x46 0xc2 0x62 0xff 0xff
rcvd: 46 00 Byte 1
Completion Code
00h = Command Completed Normally
80h = operation not supported for this Record Type
81h = cannot execute command, SEL erase in progress
07 00 Byte [2:3]
Record ID for Deleted Record
LS Byte first

$ ipmi-sel --delete=1
$ ipmi-sel --delete-range=2-4


Clear SEL - NetFn = Storage (0x0ah), CMD = 0x47h, Privilege Level = Operator, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x47 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3] Byte 3
'C' (43h)
43h
D[4] Byte 4
'L' (4Ch)
4Ch
D[5] Byte 5
'R' (52h)
52h
D[6] Byte 6
Request Data Byte 6
AAh = initiate erase
00h = get erasure status

ipmitool sel clear
[ipmiutil]
ipmiutil cmd 00 20 28 47 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3] Byte 3
'C' (43h)
43h
D[4] Byte 4
'L' (4Ch)
4Ch
D[5] Byte 5
'R' (52h)
52h
D[6] Byte 6
Request Data Byte 6
AAh = initiate erase
00h = get erasure status

icmd 00 20 28 47 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3] Byte 3
'C' (43h)
43h
D[4] Byte 4
'L' (4Ch)
4Ch
D[5] Byte 5
'R' (52h)
52h
D[6] Byte 6
Request Data Byte 6
AAh = initiate erase
00h = get erasure status

ipmiutil sel -d
isel -d
[FreeIPMI]
ipmitool raw 0x00 0x0a 0x47 D[1:2] Byte [1:2]
Reservation ID
LS Byte first
D[3] Byte 3
'C' (43h)
43h
D[4] Byte 4
'L' (4Ch)
4Ch
D[5] Byte 5
'R' (52h)
52h
D[6] Byte 6
Request Data Byte 6
AAh = initiate erase
00h = get erasure status

ipmi-sel --clear
| MS-DOS |
[ipmitool]
ipmitool 20 28 47 Data[1:6]

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x42
 69 98
$ ipmitool raw 0x0a 0x47 0x69 0x98 0x43 0x4c 0x52 0xaa
 01 Byte 2
Erasure Progress
[7:4] - reserved
[3:0] - erasure progress
        0h = erasure in progress
        1h = erase completed

$ ipmitool sel clear
Clearing SEL.  Please allow a few seconds to erase.
[ipmiutil in Linux]
$ icmd 00 20 28 42
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=2]: 66 fb
send_icmd ret = 0
ipmiutil cmd, completed successfully
$ icmd 00 20 28 47 66 fb 43 4c 52 aa
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]: 01 Byte 2
Erasure Progress
[7:4] - reserved
[3:0] - erasure progress
        0h = erasure in progress
        1h = erase completed

send_icmd ret = 0
ipmiutil cmd, completed successfully
$ isel -d
ipmiutil sel version 3.10
-- BMC version 1.07, IPMI version 2.0
SEL Ver fe Support 0f, Size = 3582 records (Used=15, Free=3567)
ClearSEL: Log Cleared successfully
ipmiutil sel, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x42
rcvd: 42 00 11 86
$ ipmi-raw 0x00 0x0a 0x47 0x11 0x86 0x43 0x4c 0x52 0xaa
rcvd: 47 00 Byte 1
Completion Code
00h = Command Completed Normally
01 Byte 2
Erasure Progress
[7:4] - reserved
[3:0] - erasure progress
        0h = erasure in progress
        1h = erase completed

$ ipmi-sel --clear


Get SEL Time - NetFn = Storage (0x0ah), CMD = 0x48h, Privilege Level = User, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x48
ipmitool sel time get
[ipmiutil]
ipmiutil cmd 00 20 28 48
icmd 00 20 28 48
[FreeIPMI]
ipmi-raw 0x00 0x0a 0x48
| MS-DOS |
[ipmitool]
ipmitool 20 28 48

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x48
 8c 67 0e 5b Byte [2:5]
Present Timestamp Clock Reading
LS byte first
Timestamp Format

$ ipmitool sel time get
05/30/2018 08:56:54
[ipmiutil in Linux]
$ icmd 00 20 28 48
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=4]: 93 69 0e 5b Byte [2:5]
Present Timestamp Clock Reading
LS byte first
Timestamp Format

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x48
rcvd: 48 00 Byte 1
Completion Code
00h = Command Completed Normally
09 6A 0E 5B Byte [2:5]
Present Timestamp Clock Reading
LS byte first
Timestamp Format



Set SEL Time - NetFn = Storage (0x0ah), CMD = 0x49h, Privilege Level = Operator, M/O = M
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x49 D[1:4] Byte [1:4]
Time in Four-Byte Format
LS byte first
Timestamp Format

ipmitool sel time set "mm/dd/yyyy hh:mm:ss"
ipmitool sel time set now
[ipmiutil]
ipmiutil cmd 00 20 28 49 D[1:4] Byte [1:4]
Time in Four-Byte Format
LS byte first
Timestamp Format

icmd 00 20 28 49 D[1:4] Byte [1:4]
Time in Four-Byte Format
LS byte first
Timestamp Format

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x49 D[1:4] Byte [1:4]
Time in Four-Byte Format
LS byte first
Timestamp Format

| MS-DOS |
[ipmitool]
ipmitool 20 28 49 Data[1:4]

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x49 0x54 0x6d 0x0e 0x5b

$ ipmitool sel time set "05/30/2018 17:21:00"
05/30/2018 17:21:00
$ ipmitool sel time set now
05/30/2018 17:19:59
[ipmiutil in Linux]
$ icmd 00 20 28 49 54 6d 0e 5b
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
send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x49 0x54 0x6d 0x0e 0x5b
rcvd: 49 00 Byte 1
Completion Code
00h = Command Completed Normally



Get SEL Time UTC Offset - NetFn = Storage (0x0ah), CMD = 0x5ch, Privilege Level = User, M/O = O
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x5c
[ipmiutil]
ipmiutil cmd 00 20 28 5c
icmd 00 20 28 5c
[FreeIPMI]
ipmi-raw 0x00 0x0a 0x5c
| MS-DOS |
[ipmitool]
ipmitool 20 28 5c

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x5c
 ff 07 Byte [2:3]
Response Data Byte [2:3]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time

[ipmiutil in Linux]
$ icmd 00 20 28 5c
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=2]: ff 07 Byte [2:3]
Response Data Byte [2:3]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time

send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x5c
rcvd: 5C 00 Byte 1
Completion Code
00h = Command Completed Normally
FF 07 Byte [2:3]
Response Data Byte [2:3]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time



Set SEL Time UTC Offset - NetFn = Storage (0x0ah), CMD = 0x5dh, Privilege Level = Operator, M/O = O
| Linux |
[IPMItool]
ipmitool raw 0x0a 0x5d D[1:2] Byte [1:2]
Request Data Byte [1:2]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time

[ipmiutil]
ipmiutil 00 20 28 5d D[1:2] Byte [1:2]
Request Data Byte [1:2]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time

icmd 00 20 28 5d D[1:2] Byte [1:2]
Request Data Byte [1:2]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time

[FreeIPMI]
ipmi-raw 0x00 0x0a 0x5d D[1:2] Byte [1:2]
Request Data Byte [1:2]
16-bit, 2s-complement signed integer for the offset in minutes from UTC to SEL Time
LS-byte first. (ranges from -1440 to 1440)
07FFh = 'unspecified'. Interpret SEL time as local time

| MS-DOS |
[ipmitool]
ipmitool 20 28 5d Data[1:2]

For example   Hint: hover over Place your mouse over the highlighted area in below
for Response Data description
[IPMItool in Linux]
$ ipmitool raw 0x0a 0x5d 0x00 0x00

[ipmiutil in Linux]
# icmd 00 20 28 5d ff 07
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
send_icmd ret = 0
ipmiutil cmd, completed successfully
[FreeIPMI in Linux]
$ ipmi-raw 0x00 0x0a 0x5d 0x00 0x00
rcvd: 5D 00 Byte 1
Completion Code
00h = Command Completed Normally



Get Auxiliary Log Status - NetFn = Storage (0x0ah), CMD = 0x5ah, Privilege Level = User, M/O = O


Set Auxiliary Log Status - NetFn = Storage (0x0ah), CMD = 0x5bh, Privilege Level = Administrator, M/O = O


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] "IPMItool" http://sourceforge.net/projects/ipmitool/
[3] "IPMI Command Test Tool" http://www.intel.com/design/servers/ipmi/ipmi_tool.htm
[4] "IPMIUTIL USER GUIDE" http://ipmiutil.sourceforge.net/
[5] "FreeIPMI Documentation" http://www.gnu.org/software/freeipmi/index.html

Last Updated: May 31, 2018

No comments:

Post a Comment