The following assumes that you are already able to build the IPMC software and will explain how to use ipmitool
to upload the new code to the IPMC from linux w/o having to use the Actel dongle from the Windows box.
ipmitool1.8.9-pps-10
has been installed in the central package repository at /reg/g/rce/packages/bin
with the names ipmitool
and ipmitool-pps
.
- Create the software image to upload (called the firmware by PPS, hpm1fw.img) by make hpm
From the same network as the shelf manager (currently cds), execute:
ipmitool-pps -I lan -H shlfmgr02 -t 0x86 -b 0 -A NONE hpm upgrade hpm1fw.img activate
-H shlfmgr02
is the hostname of the Shelf Manager-t 0x86
is the IPMB address of the COB you are upgradinghpm1fw.img
is the path to the software image file created by make hpm
- If there is a problem with the upgrade, you can try rolling back to the old software with the command:
ipmitool-pps ... hpm rollback
The help that is packaged with ipmitool
is pretty good, so there's more info to be found there.
Here's a couple that will probably be useful:
To activate the payload (initiate M1->M2 transition):
ipmitool-pps -I lan -H shlfmgr02 -t 0x86 -b 0 -A NONE picmg policy set 0 2 1
To deactivate the payload (initiate M4->M5 transition):
ipmitool-pps -I lan -H shlfmgr02 -t 0x86 -b 0 -A NONE picmg policy set 0 1 0
And here are a couple of commands which can be typed into the IPMC console to do fun things:
Reset commands over console:
[B8 00 0D 0A 40 00 XX] XX = 00 current mode = 01 normal mode = 02 standalone mode = 03 manual standalone So: [B8 00 0D 0A 40 00 00] [B8 00 0D 0A 40 00 01] [B8 00 0D 0A 40 00 02] [B8 00 0D 0A 40 00 03] Reset Non-volatile Parameters and Reboot (will cause INIT callbacks to execute) [B8 00 41 0A 40 00]
Set Handle Switch
[B8 00 08 0A 40 00 00 XX] 00 = Open 01 = Closed 02 = Hardware Switch So: [B8 00 08 0A 40 00 00 00] [B8 00 08 0A 40 00 00 01] [B8 00 08 0A 40 00 00 02]
Custom COB IPMI commands (COB5 and COB6)
These commands can be issued using ipmitool.
ipmitool-pps -I lan -H <shelfmanager> -t <COB Address> -b 0 -A NONE raw <SLAC_NETFN> <CMD> [DATA_0] [DATA_1] ... [DATA_N] Where: <shelfmanager> is the hostname/IP address of the Shelf Manager (ex. shasta-sm) <COB address> is the IPMB address of the COB board (ex. 0x82, 0x84, 0x86, 0x88, 0x8a) <SLAC_NETFN> The NetFn for our custom command extensions which is 0x34 <CMD> [DATA_X] is the command to be issued and associated parameter as described below or in the IPMC console window: [D0 00 <CMD> [DATA_0] [DATA_1] ... [DATA_N]] Write to Cluster Element BSI: <CMD> = 0x03 The format for this command is Offset Length Description 0 1 BAY Mask 1 1 RCE Mask 2 1 Do interrupt (Does Nothing) 3 2 Address 5 2 Length to write 7 N Data to write (if length < 16) (if length > 16, fill with incrementing data starting with data) NOTE: Including Bays w/o RCEs or which are not present in BAY Mask will not result in an error. Similarly, including RCEs which are not present or are currently being reset will not result in an error, nor will RCEs currently held in reset be released from reset as a result of issuing this command. Read from Cluster Element BSI: <CMD> = 0x4 The format for this command is Offset Length Description 0 1 BAY Number 1 1 RCE Number 2 2 Address 4 2 Length to read (Though 2 bytes long, IPMI practically limits this to <16) Read COB Data Board ID PROM: <CMD> = 0x5 The format for this command is Offset Length Description 0 1 BAY Number Returns the ID 0 6 MSB -> LSB 6 byte ID Set Monitor Dump Period: <CMD> = 0x07 The format for this command is Offset Length Description 0 1 Dump Index [0=BAY, 1=RCE, 2=BSI, 3=SFP, 4=FP_DISP, 5=BAY_GPIO, 6=BAY_GPIO_FULL] 1 2 Seconds [0=Never Dump, 0xffff=Default] Get Monitor Dump Period: <CMD> = 0x08 The format for this command is Offset Length Description 0 1 Dump Index [0=BAY, 1=RCE, 2=BSI, 3=SFP, 4=FP_DISP, 5=BAY_GPIO, 6=BAY_GPIO_FULL] Returns 0 2 Seconds [0=Never Dump] Monitor Dump Immediate: <CMD> = 0x09 The format for this command is Offset Length Description 0 1 Dump Index [0=BAY, 1=RCE, 2=BSI, 3=SFP, 4=FP_DISP, 5=BAY_GPIO, 6=BAY_GPIO_FULL] RCE Reset Command: <CMD> = 0x0A The format for this command is Offset Length Description 0 1 BAY Mask 1 1 RCE Mask This command returns Offset Length Description 0 1 Completion Code 1 1 Mask of Bays with errors NOTE: Including Bays w/o RCEs or which are not present in BAY Mask will not result in an error. Similarly, including RCEs which are not present or are currently being reset will not result in an error, nor will RCEs currently held in reset be released from reset as a result of issuing this command. Read from RTM EERPOM: <CMD> = 0x0B The format for this command is Offset Length Description 0 1 EEPROM Select (0=RTM Fru Info EEPROM, 1=RMB EEPROM) 1 1 Address 2 1 Length to read (Limited by IPMI to 24 bytes) Write to RTM EERPOM: <CMD> = 0x0C The format for this command is Offset Length Description 0 1 EEPROM Select (0=RTM Fru Info EEPROM, 1=RMB EEPROM) 1 1 Address 2 1 Length to write 3 N Data to write (Limited by IPMI to 22 bytes) Set FP SFP Switch Group: <CMD> = 0x10 The format for this command is Offset Length Description 0 1 SFP+ Mask 1 1 Group Number 0x00 = No Group 0x01 - 0x10 Group with Slot at Physical address 0x01 - 0x10 0x11 - 0xFF Arbitrary Group Numbers I2C Read: <CMD> = 0xF7 Low level I2C Read The format for this command is Offset Length Description 0 1 I2C Bus 1 1 Device Address (8 bit address) 2 1 Length to read This command returns Offset Length Description 0 1 Completion Code 1 N Data read I2C Write: <CMD> = 0xF8 Low level I2C Write The format for this command is Offset Length Description 0 1 I2C Bus 1 1 Device Address (8 bit address) 2 1 Length to write 3 N Data to write This command returns Offset Length Description 0 1 Completion Code Cold Data Reset: <CMD> = 0xF9 The Cold Data Reset command will reset the IPMC and mark the Cold Data Journal as invalid. This mimics removing power from the IPMC. Set Zombie RCE: <CMD> = 0xFA When an RCE is marked as a Zombie, the IPMC will not allow it to hold up the booting of the board. (For example, it will mark the switch port configuration in the DTM BSI as "Disabled" if the DPM is not Ready. The format for this command is Offset Length Description 0 1 Bay Number 1 1 RCE Number 2 1 Zombie State [0=Not a Zombie, 1=BRAINS!] Set Bay Power: <CMD> = 0xFB (This is only intended to be used for HW debugging as immediately turns on/off power to a Bay.) The format for this command is Offset Length Description 0 1 BAY MASK
Supported IPMI/ATCA commands
These commands can be issued using ipmitool.
FRU Control Command (cold/warm reset) ipmitool-pps -I lan -H <shelfmanager> -t <COB Address> -b 0 -A NONE picmg frucontrol <FRU-ID> <OPTION> Where: <shelfmanager> is the hostname/IP address of the Shelf Manager (ex. shasta-sm) <COB address> is the IPMB address of the COB board (ex. 0x82, 0x84, 0x86, 0x88, 0x8a) <FRU-ID> is the FRU-ID of the IPMC which is 0x00 <OPTION> is: 0x00 - Cold Reset 0x01 - Warm Reset
Short-hand commands
The following commands are provided as scripts in the bin
of our group area. <shelf>
is a shelf name. <slot>
is a slot number, from 1 to the number of slots in the crate. <element>
is the element number, with 0xff meaning all elements and 0xfe meaning all DPMs, as above.
ipmi_activate
Activate a shelf's payload.usage: ipmi_activate <shelf> <slot>
ipmi_deactivate
Deactivate a shelf's payload.usage: ipmi_deactivate <shelf> <slot>
ipmi_boot
Temporarily set the bootstrap word to the supplied value.usage: ipmi_boot <shelf> <slot> <element> <bootstrap>
ipmi_bootstrap
Permanently set the bootstrap word to the supplied value. If omitted, print the current value of the bootstrap word.usage: ipmi_bootstrap <shelf> <slot> <element> [<value>]
ipmi_eeprom
Read and print the EEPROM contents at the supplied address and length combination.usage: ipmi_eeprom <shelf> <slot> <board> <address> [<length>]
ipmi_id
Read COB Data Board ID PROM.usage: ipmi_id <shelf> <slot> <board>
ipmi_read
Read from the Cluster Element BSI.usage: ipmi_read <shelf> <slot> <element> <address> [<length>]
ipmi_write
Write the Cluster Element BSI.usage: ipmi_write <shelf> <slot> <element> <address> <data> [...]