
		         IPMI UTILITIES AND 
                   LINUX PANIC HANDLER ENHANCEMENTS 
                            USER GUIDE 

------------------------
   CONTENTS
------------------------
1.0  Overview
2.0  Dependencies
   2.1  Configuration
   2.2  References
3.0  Utility Man Pages
   3.1	SHOWSEL   (ISHOWSEL)
   3.2	HWRESET   (IRESET)
   3.3	SENSOR    (ISENSOR)
   3.4	PEFCONFIG (ILANCONFIG)
   3.5	TMCONFIG  (ISERCONFIG)
   3.6	FRUCONFIG (IFRUCONFIG)
   3.7	ALARMS    (IALARMS)
   3.8	WDT       (IWATCHDOG)
   3.9	ICMD     
   3.10 GETEVENT  (IGETEVENT)
   3.11 BMCHEALTH (IHEALTH)
4.0  Use Cases
   4.1  Usage of IPMI utilities for sensor thresholds
   4.2  Usage of IPMI utilities for BMC LAN configuration 
   4.3  Usage of IPMI utilities to set watchdog timer
   4.4  Usage of kernel panic handler code 
   4.5  Interpreting BMC LAN SNMP Traps from Platform Events 
5.0  IPMI Utilities on Windows
6.0  Problems
7.0  Related Information

------------------------
1.0  OVERVIEW
------------------------

The IPMI Specification provides a standard way to do both simple and complex 
server management functions. Everything from remote reset/power-off to sending 
an SNMP alert from a sensor event even if the OS is down. Being able to 
perform  these tasks in Baseboard Management Controller (BMC) firmware allows 
OS-independent management. What many integrators need, however, is a set of 
utilities and/or sample code to perform these functions within their 
enterprise management subsystem without a learning curve. 

The IPMI Management Utilities project provides a series of utilities that 
perform common IPMI server management functions, such as viewing the firmware 
log (showsel), or configuring the BMC LAN & PEF features (pefconfig). The 
utilities are designed for end-users, so that they should not require intimate 
knowledge of how to build IPMI commands. Each of the utilities detects or 
reasonably assigns default values so that a working configuration can be 
easily obtained. More detailed options allow changes to these default values.  
These utilities can be used separately, or merged with a larger server 
management subsystem.  The source license is BSD and ipmiutil compiles under 
Linux (Makefile) and Windows (doc/mk.bat). There are also corresponding 
standard HPI utilities that run with two different HPI implementations, 
including OpenHPI. These were the basis of the current openhpi/clients. 

This project includes both IPMI utilities and a kernel patch for 
panic handler enhancements.

The ipmiutil IPMI utilities below allow the user to access the firmware 
System Event Log and configure the Platform Event Filter table for the new 
'OS Critical Stop' records, as well as other common IPMI system management
functions.  

showsel        - show the firmware System Event Log records
sensor         - show all Sensor Data Records, sensor readings, and thresholds
hwreset        - cause the BMC to hard reset or power down the system    
pefconfig      - show and configure the BMC LAN port and Platform Event Filter 
                 table to allow BMC LAN alerts from firmware events and 
                 OS Critical Stop messages,
tmconfig       - show and configure the BMC Serial port for various modes, 
                 such as Terminal Mode.  
fruconfig      - show the FRU chassis, board, and product inventory data, 
                 and optionally write a FRU asset tag.
alarms	       - show and set front panel alarms (LEDs and relays)
wdt	           - show and set watchdog timer parameters
getevent       - receive any IPMI events and display them
bmchealth      - check and report the basic health of the IPMI BMC
icmd           - send specific IPMI commands to the BMC,
                 mainly for testing and debug purposes.

Other supporting files:
checksel       = script using showsel to check the SEL, write new events
                 to the syslog, and clear the SEL if nearly full.
ipmi_if.sh     = script using dmidecode to determine the IPMI Interface Type
bmclanpet.mib  = SNMP MIB for BMC LAN Platform Event Traps
bmclanaol.mib  = SNMP MIB for BMC LAN Alert-Over-Lan traps
libfreeipmi.so = GNU FreeIPMI library, see http://www.gnu.org/software/freeipmi
kern/*         = kernel patches for panic handling
test/*         = scripts and utilities used in testing ipmiutil/panicsel

The kernel panic handler patch (kern/bmcpanic.patch) adds additional 
features to the Linux Panic Handler so that more information can be 
saved and passed along if a Linux panic condition occurs.  
bmc_panic features:

 1. Write an OS Critical Stop event to firmware System Event Log (SEL)
    This is in bmcpanic.patch and in OpenIPMI.
 2. Send SNMP trap via BMC LAN Alerting mechanism
    Accomplished by configuring the BMC with 'pefconfig'.
 3. Turn on the Critical Alarm LED on the Telco Alarms Panel
    This is in bmcpanic.patch, but not in OpenIPMI due to 
    platform-specific issues with the alarms panel.

The kernel portion of this, except item 3, is now included in the OpenIPMI
project with the CONFIG_IPMI_PANIC_EVENT option, and the OpenIPMI
driver has merged into Linux kernel 2.4.21 and beyond.
The latest version of the OpenIPMI driver can be obtained from
http://openipmi.sourceforge.net.

------------------------
2.0  DEPENDENCIES
------------------------

The IPMI Utilities will run on both Linux and Windows, and should be
portable to other OSs, if an IPMI driver for that OS can be obtained.

The IPMI Utilities and Panic Handler Enhancements currently work with 
platforms that support the IPMI standard.  If the platform does not 
support IPMI, these changes are inert.  The Service Availability Forum 
has developed a Hardware Platform Interface (HPI) specification that 
can be used to group IPMI and other system management interfaces 
together.  A set of comparable HPI utilities is included in the 
ipmiutil project source as hpiutil/*.

The Panic Handler kernel enhancements (via kern/bmcpanic.patch) are now 
included in the OpenIPMI driver via the CONFIG_IPMI_PANIC_EVENT 
and CONFIG_IPMI_PANIC_STRING parameters in the kernel config file 
(/usr/src/linux/.config), assuming kernel 2.4.21 or greater. 

If run locally (as superuser), the ipmiutil utilities above use an 
IPMI Driver, which can be either:  
 . the MontaVista OpenIPMI driver (/dev/ipmi0),
 . the Intel IMB IPMI driver (/dev/imb, via 'ipmidrvr' or 'ipmi_imb'),
 . the valinux IPMI Driver (/dev/ipmikcs), 
 . the LANDesk ldipmi daemon,
 . the GNU FreeIPMI library (libfreeipmi.so),
 . or direct user-space I/Os to the IPMI KCS or SSIF/SMBus interfaces,
   if no driver is detected.

For Windows, only the imbdrv.sys (Intel IMB) driver is supported.
For Linux, each of the IPMI management utilities will detect which 
IPMI driver is present, and if none are found, it will attempt to use raw 
KCS or SSIF I/Os to communicate with the IPMI BMC. 

If using the IPMI LAN interface, neither the local or remote system requires
any IPMI driver, but the remote target system must have had IPMI LAN enabled,
(e.g. via pefconfig) which is done locally on the target system.
Note that the IPMI LAN session password is sent with either MD5 or MD2 
encryption by default.

See http://openipmi.sourceforge.net for the OpenIPMI driver.
See http://downloadfinder.intel.com/scripts-df/Product_Search.asp?Prod_nm=ipmi*driver*source  for Intel IMB driver
See http://cvs.sf.net/cgi-bin/viewcvs.cgi/ipmitools/ipmitools/kernel/kcs/patches/2.4.x/ for the valinux driver.
See http://www.landesk.com/ or the CD supplied with your server for LANDesk.
See http://www.gnu.org/software/freeipmi/ for GNU FreeIPMI.


------------------------
2.1  CONFIGURATION
------------------------

To find the base address of the IPMI KCS interface, or to find the IPMI
SMBus slave address, you can use the 'dmidecode' utility provided with
most Linux distributions.  See also http://www.nongnu.org/dmidecode/.
The ipmiutil rpm will run the ipmi_if.sh script to determine the IPMI
Interface Type when the rpm is installed.

For some IPMI systems, a minimum firmware version may be needed to
support the BMC LAN/PEF feature.  On an Intel TSRLT2 system, for instance, 
these are the minimum levels:
  BMC Firmware ver 54 or greater
  SSU ver 2.RC.1 or greater (if DOS SSU is used instead of pefconfig)
Systems with IPMI versions prior to 1.5 do not support BMC LAN or PEF features.

By default, the ipmiutil IPMI utilities rpm does not set the panic timeout.
If a different kernel panic timeout is desired, add 'append="panic=10"' in 
lilo.conf, or do "echo 10 >/proc/sys/kernel/panic" in one of the /etc/init.d 
scripts to set it to 10 seconds, for instance.  

The pefconfig utility can be used instead of DOS utilities like SSU to 
configure the BMC LAN Alerting while the OS is running.  The ipmiutil 
rpm runs pefconfig during the rpm installation, if the BMC LAN has not 
already been configured.
 
The tmconfig utility is intended to configure the EMP serial port on the 
server for shared access between BMC/IPMI functions and BIOS Console 
Redirection.  Some platforms only support only Basic Mode for BMC/IPMI 
functions.  Basic Mode requires a remote client application to utilize it 
(Windows ISC Console/DPC applet, or a special modified Linux telnet).  
There are some platforms which implement Terminal Mode via IPMI v1.5 
Appendix E to make remote management with character commands available
on the serial port without a special remote client application.

Notes about BMC Users:
Most IPMI 1.5 systems support at least 3 users, numbered 1,2,3, where 
user 1 is the default and has a null username.  Users 2 and 3 are 
alternate users whose usernames can be set.  For ipmiutil, these are
currently implemented by default as follows:
user 1: used by default for BMC LAN and Serial (pefconfig & tmconfig)
user 2: set for BMC LAN if pefconfig -u is specified
user 3: set for BMC Serial/EMP if tmconfig -u is specified
Also note that the -q option can be used to set different users by number.

Note that the checksel script will be copied to /etc/cron.daily when 
the Linux rpm is installed, so that showsel will automatically save 
SEL records to syslog and clear the SEL if it gets nearly full.  If 
you do not want this to happen automatically, remove the checksel 
script from the /etc/cron.daily directory.

------------------------
2.2  REFERENCES
------------------------

The IPMI 1.5 spec, Table 36-3 defines the sensor types for SEL records,
as used by showsel.
The IPMI 1.5 spec, Table 15-2 defines the Platform Event Filter table
entries, as used by pefconfig.
The IPMI 1.5 spec, Table 19-4 defines the LAN Configuration Parameters,
as used by pefconfig.  

The enterprises.3183 SNMP traps come from the BMC firmware, and are defined in 
bmclan*.mib files in the ipmiutil project.  Details about the format of these
Platform Event Traps are available in section 12.2 through 12.5 of the ISM 
(Intel Server Management) 5.x Technical Product Specification at 
http://www.intel.com/support/motherboards/server/isc/sb/cs-008024.htm

The enterprises.343 SNMP traps come from ISM and are defined in mapbase*.mib 
files on the platform CD.
The enterprises.412 SNMP traps come from ISM/DMTF, defined in dmtf*.mib files 
on the platform CD.

------------------------
3.0  UTILITY MAN PAGES
------------------------

3.1 SHOWSEL(8)                                             SHOWSEL(8)
 
NAME
       showsel - show firmware System Event Log records
 
SYNOPSIS
       showsel [-clswvx -N node -P/-R pswd -U user -ETV]
 
DESCRIPTION
       showsel  is  a  program that uses IPMI commands to to read
       and display the System Event Log (SEL) which is stored  by
       the  BMC  firmware.  IPMI commands are issued to read each
       record, and, if  specified,  incrementally  write  records
       that  have  not previously been read into the Linux syslog
       (/var/log/messages).  This  utility  can  use  either  the
       /dev/ipmi0  driver  from  MontaVista,  the /dev/imb driver
       from Intel, the /dev/ipmikcs driver from valinux,  or  the
       GNU FreeIPMI library.
 
OPTIONS
       Command line options are described below.

       -c     Clears  the SEL of all records.  If the SEL becomes
              full (free space = 0), it  no  longer  accepts  new
              records, so the SEL should be cleared periodically.
 
       -l N   Show last N SEL records, in reverse  order  (newest
              first).
 
       -s     By  default,  all  SEL records are displayed.  This
              option causes only the records with  sensor_type  =
              0x20 (OS Critical Stop) to be displayed.
 
       -v     Only  show  the  version  information.  This shows:
              the showsel utility version, the BMC  version,  the
              IPMI  version,  the  SEL version, and the amount of
              free space in the SEL.
 
       -w     This  option writes SEL records to the Linux syslog
              (/var/log/messages) or Windows Application Log.  It
              only writes SEL records that have timestamps  newer
              than  the  last record written to syslog.  It saves
              the  last  timestamp  in  an   index   file   named
              /usr/share/ipmiutil/sel.idx (.\sel.idx in Windows).

       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename of the remote target system.  If  a  node
              name  is  specified,  IPMI  LAN  interface is used.
              Otherwise the local system management interface  is
              used.
 
       -U rmt_user
              Remote   username  for  the  nodename  given.   The
              default is a null username.
 
       -P/-R rmt_pswd
              Remote  password  for  the  nodename  given.    The
              default is a null password.
 
       -E     Use  the  remote password from Environment variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  a  specified IPMI LAN privilege level. 1=Call
              back  level,  2=User   level,   3=Operator   level,
              4=Administrator level (default), 5=OEM level.
 
SEE ALSO
       alarms(8) bmchealth(8) fruconfig(8) getevent(8) hwreset(8)
       icmd(8) pefconfig(8) sensor(8) tmconfig(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of showsel and any bug fix list.


3.2 HWRESET(8)                                             HWRESET(8)
 
NAME
       hwreset - perform a hardware reset on the system
 
SYNOPSIS
       hwreset [-dDcnorsx -N node -U user -P/-R pswd -ETV]
 
DESCRIPTION
       hwreset  is a program that uses IPMI commands to perform a
       hardware reset of  the  chassis.   This  utility  can  use
       either the /dev/ipmi0 driver from MontaVista, the /dev/imb
       driver from Intel, the /dev/ipmikcs driver  from  valinux,
       or the GNU FreeIPMI library.
 
OPTIONS
       Command line options are described below.
 
       -c     Power Cycle the system chassis
 
       -d     Power Down the system chassis

       -u     Power Up the system chassis
 
       -e     Reboots  to  EFI,  if EFI boot is enabled, for this
              reboot only.
 
       -m     Reboots to CDROM Media, for this reboot only.
 
       -n     Send NMI to the system
 
       -p     Reboots to PXE network boot, for this reboot  only.
 
       -o     Do  a  soft  shutdown  of  the  OS, and then reset.
              Ignored if a remote Nodename is used.
 
       -D     Do a soft shutdown of the OS, and then power  down.
              Ignored if a remote Nodename is used.

       -r     Hard Reset the system chassis (default action)
 
       -s     Reset and boot to the Service Partition
 
       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename of the remote target system.  If  a  node
              name  is  specified,  IPMI  LAN  interface is used.
              Otherwise the local system management interface  is
              used.
 
       -P/-R rmt_pswd
              Remote   password  for  the  nodename  given.   The
              default is a null password.
 
       -U rmt_user
              Remote  username  for  the  nodename  given.    The
              default is a null username.
 
       -E     Use  the  remote password from Environment variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  a  specified IPMI LAN privilege level. 1=Call
              back  level,  2=User   level,   3=Operator   level,
              4=Administrator level (default), 5=OEM level.

SEE ALSO
       alarms(8)  bmchealth(8)  fruconfig(8)  getevent(8) icmd(8)
       pefconfig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See  http://ipmiutil.sourceforge.net/  for the latest ver-
       sion of hwreset and any bug fix list.
 

3.3 SENSOR(8)                                               SENSOR(8)
 
NAME
       sensor - show Sensor Data Records
 
SYNOPSIS
       sensor [-apstwx -i id -n snum -h tval -l tval -NUPRETV]
 
DESCRIPTION
       sensor  is  a  program that uses IPMI commands to show and
       decode Sensor Data Records and current sensor readings for
       all   sensors  in  the  system.   The  readings  are  only
       retrieved for Full SDR  records.   This  utility  can  use
       either the /dev/ipmi0 driver from MontaVista, the /dev/imb
       driver from Intel, the /dev/ipmikcs driver  from  valinux,
       or the GNU FreeIPMI library.
 
       Note that this utility currently only displays Sensor Data
       Records reported by from the BMC  chipset.   Some  systems
       may  have  other devices with sensors that are also avail
       able via IPMI.

OPTIONS
       Command line options are described below.
 
       -a snum
              ReArms the sensor number for events
 
       -h tval
              Highest threshold value to set  for  the  specified
              sensor.   This  tval  can  be in decimal, or of the
              form 0x1a, to match the raw reading value shown  by
              sensor  following  the  " = ".  The value passed is
              set as the highest threshold value, with  the  less
              critical  ones  set by the utility as incrementally
              lower.  This simplifies the interface  and  ensures
              that  the threshold values do not get out of order.
              This requires specifying the sensor number via  -n.
 
       -i id  Show  or set only the sensor Index corresponding to
              id, where id is the hex ID of the SDR as  shown  in
              the  sensor output under "_ID_".  This is useful to
              repeatedly  view  just  one  sensor   reading   for
              changes,  or to set just one sensor quickly without
              reading all of the SDRs.

       -l tval
              Lowest threshold value to  set  for  the  specified
              sensor.   This  tval  can  be in decimal, or of the
              form 0x1a, to match the raw reading value shown  by
              sensor  following  the  " = ".  The value passed is
              set as the lowest threshold value,  with  the  less
              critical  ones  set by the utility as incrementally
              higher.  This simplifies the interface and  ensures
              that  the threshold values do not get out of order.
              This requires specifying the sensor number via  -n.
 
       -n snum
              Number  of  the  sensor to set.  This num can be in
              decimal, or of the form 0x1a, to  match  the  value
              shown  by sensor following the "snum" tag.  This is
              required if setting hi/lo thresholds via -h/-l.
 
       -p     Persist the threshold being set (as  specified  via
              -l  or  -h).  This writes a "sensor -i" script line
              to  the   file   /usr/share/ipmiutil/thresholds.sh,
              which  can  then  be  executed  at  each  reboot by
              including it in /etc/init.d for  the  desired  run
              level.  This feature is only enabled for Linux.

       -r     Show Raw SDR bytes also.
 
       -s     Show  sensor list in a simpler format without unin
              terpreted binary values.   Only  the  user-friendly
              interpreted sensor information is shown.
 
       -t     Show any Thresholds for each sensor also.
 
       -w     Wrap  the  threshold data onto the same line as the
              sensor.  This may be convenient for scripting.
 
       -x     Causes eXtra debug messages to be displayed.
 
       -N nodename
              Nodename of the remote target system.  If  a  node
              name  is  specified,  IPMI  LAN  interface is used.
              Otherwise the local system management interface  is
              used.
 
       -P/-R rmt_pswd
              Remote   password  for  the  nodename  given.   The
              default is a null password.

       -U rmt_user
              Remote  username  for  the  nodename  given.    The
              default is a null username.
 
       -E     Use  the  remote password from Environment variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  a  specified IPMI LAN privilege level. 1=Call
              back  level,  2=User   level,   3=Operator   level,
              4=Administrator level (default), 5=OEM level.
 
SEE ALSO
       alarms(8) bmchealth(8) fruconfig(8) getevent(8) hwreset(8)
       icmd(8) pefconfig(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of sensor and any bug fix list.


3.4 PEFCONFIG(8)                                         PEFCONFIG(8)

NAME
       pefconfig  - show and configure BMC LAN parameters and set
       up a PEF entry to send BMC LAN Alerts for OS Critical Stop
       log events
 
SYNOPSIS
       pefconfig [-derstx -n pefnum -i eth1 -a alertnum ]
                [-I ipadr -M macadr -S subnet -B baud_sol ]
                [-G gwyip -H gwymac -L lan_channel_num ]
                [-A alertip -X alertmac -C community ]
                [-u user_to_set -p password_to_set ]
                [-N nodename  -U rmt_username ]
                [-P/-R rmt_node_pswd -E -T1 -V2 ]
 
DESCRIPTION
       pefconfig  is  a  program that uses an IPMI driver to send
       IPMI commands which configure a new Platform Event  Filter
       table  entry  for  an OS Critical Stop (0x20) SEL firmware
       log event, so that it will be enabled to send  a  BMC  LAN
       Alert.   This  utility  also  sets  up  all of the BMC LAN
       Parameters to enable sending the BMC LAN Alerts.   The  IP
       address  and  MAC address of the local system, the default
       gateway, and the alert destination  can  be  defaulted  to
       those  specified  in  Linux,  or can be overridden by user
       parameters.  This utility can use  either  the  /dev/ipmi0
       driver  from  MontaVista,  the /dev/imb driver from Intel,
       the /dev/ipmikcs driver from valinux, or the GNU  FreeIPMI
       library.   This  utility is designed to be used on systems
       with IPMI 1.5 or greater in order to support PEF  records.
 
OPTIONS
       Command line options are described below.  Note that with
       out options, pefconfig behaves as if option -e were  used.
       To just read the configuration, use option -r.
 
       -a alertnum
              Specify  which  PEF  alert  number  is  to be used.
              Default is 1.  This would only be used if extra PEF
              alert destinations had been set.
 
       -d     This  option disables the PEF entries, so as not to
              send BMC LAN alerts.

       -e     This option enables the BMC LAN  configuration  and
              PEF events.  The utility will attempt to obtain the
              default BMC LAN parameters from  the  OS  automati
              cally,  or  they  can  be  specified  with  command
              options below.
 
       -i ethif
              By default, the eth0 interface is used to  find  IP
              and  MAC  addresses.  Sometimes, however, the first
              ethernet port on the baseboard may  be  represented
              by  Linux as eth1 or eth2 instead.  If so, use this
              option to indicate the correct  ethernet  interface
              to  use.   By default, pefconfig will scan up to 32
              eth interfaces for the onboard  one  that  BMC  LAN
              uses.
 
       -n num By  default, the new PEF entry for OS Critical Stop
              is inserted at offset 12 into the table.  This  can
              be  changed  to  insert  it  at  an  offset > 12 if
              another entry already exists at offset 12.
 
       -r     This option just reads  the  configuration  without
              writing  any  BMC LAN parameters or writing any new
              entries to the PEF table.
 
       -s     This option will also display some  of  the  Serial
              parameters.
 
       -t     Test  if  the  BMC LAN has already been configured.
              Returns 0 if so.
 
       -x     Causes extra debug messages to be displayed.

       -B baud_sol
              This specifies the  Baud  rate  for  SerialOverLan.
              The possible values are: 9600, 19.2k, 38.4k, 57.6k,
              and 115.2k.  The default is 19.2k.
 
       -D     This causes the local IP address to  be  determined
              by DHCP instead of a static IP address.
 
       -I ip_addr
              This  specifies the local IP address to use for the
              BMC LAN on eth0.  The default is  to  automatically
              obtain this from the Linux ifconfig.
 
       -M mac_addr
              This specifies the local MAC address to use for the
              BMC  LAN  on  eth0.   The  format  can  be   either
              11:22:33:44:55:66    or   11-22-33-44-55-66.    The
              default is to automatically obtain  this  from  the
              Linux ifconfig.
 
       -S subnet
              This specifies the local subnet mask to use for the
              BMC LAN on eth0.  The default is  to  automatically
              obtain this from the Linux ifconfig.
 
       -G gwy_ip_addr
              This  specifies  the  default gateway IP address to
              use for the BMC LAN.  The default is  to  automati
              cally obtain this from the Linux route table.
 
       -H gwy_mac_addr
              This specifies the default gateway's MAC address to
              use for the BMC LAN.   The  format  can  be  either
              11:22:33:44:55:66    or   11-22-33-44-55-66.    The
              default is to automatically obtain  this  from  the
              Linux arp cache.
 
       -A alert_ip_addr
              This   specifies  the  SNMP  Alert  Destination  IP
              address to use for the BMC LAN.  By  default,  this
              utility  will  attempt  to  obtain  this  from  the
              /etc/snmp/snmpd.conf file, via the trapsink parame
              ter.   The  alert  destination will see the BMC LAN
              traps with the  enterprises.3183.1.1  OID.   If  no
              alert  IP address is specified in either snmpd.conf
              or this parameter, or if that IP address  does  not
              respond, the other SNMP parameters for BMC LAN will
              be skipped.
 
       -X alert_mac_addr
              This specifies the SNMP  Alert  Destinations's  MAC
              address  to use for the BMC LAN.  The format can be
              either 11:22:33:44:55:66 or 11-22-33-44-55-66.  The
              default is to attempt to obtain this from the Linux
              arp cache.  This parameter is ignored if  there  is
              no Alert IP address.
 
       -C snmp_community
              This  specifies  the SNMP Community name to use for
              BMC LAN Alerts.  The default  community  string  is
              "public".  This parameter is ignored if there is no
              Alert IP address.
 
       -u username_to_set
              This specifies the firmware username to set for BMC
              LAN  access.   If  a  username is specified, user 3
              will be set.  If not specified, the default user  1
              will be used.
 
       -p password_to_set
              This specifies the firmware password to set for BMC
              LAN access.  If not specified, the user  and  pass
              word configuration will not be changed.
 
       -L lan_ch_num
              This specifies the IPMI LAN channel number used for
              BMC LAN.  This varies by platform, and can be found
              in   the  platform  technical  specifications.   By
              default, pefconfig scans all IPMI channels to  find
              a LAN channel for BMC LAN.
 
       -N nodename
              Nodename  of  the remote target system.  If a node
              name is specified,  IPMI  LAN  interface  is  used.
              Otherwise  the local system management interface is
              used.

       -P/-R rmt_pswd
              Remote  password  for  the  nodename  given.    The
              default is a null password.
 
       -U rmt_user
              Remote   username  for  the  nodename  given.   The
              default is a null username.
 
       -E     Use the remote password from  Environment  variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use a specified IPMI LAN privilege  level.  1=Call
              back   level,   2=User   level,  3=Operator  level,
              4=Administrator level (default), 5=OEM level.

EXAMPLES
       To read existing settings:
       pefconfig -r
 
       To enable IPMI LAN with default settings detected:
       pefconfig -e
 
       To set up IPMI LAN for a unique IP  address  and  set  PEF
       SNMP Alerts:
       pefconfig -I 192.168.1.1 -A 192.168.1.10
 
       To set the IPMI LAN password for the default user:
       pefconfig -p mypassword
 
       To disable access to the IPMI LAN channel:
       pefconfig -d

SEE ALSO
       alarms(8) bmchealth(8) fruconfig(8) getevent(8) hwreset(8)
       icmd(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of pefconfig and any bug fix list.

SAMPLE PEF TABLE
These 11 PEF table entries are configured from the factory for various
Intel Sahalee BMC systems, and will be applied as the defaults for a 
system with an empty PEF table:
PEFilter(01): 01 Temperature Sensor event - enabled for alert
raw PEF(01):  01 c0 01 01 00 ff ff 01 ff 01 95 0a 00 00 00 00 00 00 00 00 00 
PEFilter(02): 02 Voltage Sensor event - enabled for alert
raw PEF(02):  02 c0 01 01 00 ff ff 02 ff 01 95 0a 00 00 00 00 00 00 00 00 00 
PEFilter(03): 04 Fan Failure event - enabled for alert
raw PEF(03):  03 c0 01 01 00 ff ff 04 ff 01 95 0a 00 00 00 00 00 00 00 00 00 
PEFilter(04): 05 Chassis Intrusion event - enabled for alert
raw PEF(04):  04 c0 01 01 00 ff ff 05 05 6f 01 00 00 00 00 00 00 00 00 00 00 
PEFilter(05): 08 Power Supply Fault event - enabled for alert
raw PEF(05):  05 c0 01 01 00 ff ff 08 ff 6f 06 00 00 00 00 00 00 00 00 00 00 
PEFilter(06): 0c Memory ECC Error event - enabled for alert
raw PEF(06):  06 c0 01 01 00 ff ff 0c 08 6f 02 00 00 00 00 00 00 00 00 00 00 
PEFilter(07): 0f FRB Failure event - enabled for alert
raw PEF(07):  07 c0 01 01 00 ff ff 0f 06 6f 01 00 00 00 00 00 00 00 00 00 00 
PEFilter(08): 07 BIOS POST Error event - enabled for alert
raw PEF(08):  08 c0 01 01 00 ff ff 07 ff 6f 1c 00 00 00 00 00 00 00 00 00 00 
PEFilter(09): 13 Fatal NMI event - enabled for alert
raw PEF(09):  09 c0 01 01 00 ff ff 13 ff 6f 3e 03 00 00 00 00 00 00 00 00 00 
PEFilter(10): 23 Watchdog Timer Reset event - enabled for alert
raw PEF(10):  0a c0 01 01 00 ff ff 23 03 6f 0e 00 00 00 00 00 00 00 00 00 00 
PEFilter(11): 12 System Restart event - enabled for alert
raw PEF(11):  0b c0 01 01 00 ff ff 12 ff 6f 02 00 00 00 00 00 00 00 00 00 00 


3.5 TMCONFIG(8)                                           TMCONFIG(8)
 
NAME
       tmconfig  -  configure  a system for Serial/EMP management
       functions, such as Terminal Mode, and optionally share the
       port with the Serial Console.
 
SYNOPSIS
       tmconfig  [-bclrsxB  -m0 -m1 -n ser_chan -u user -p passwd
       -NUPRETV]
 
DESCRIPTION
       tmconfig is a program that uses an  IPMI  driver  to  send
       IPMI   commands   which   configure  a  system  to  enable
       EMP/serial Terminal Mode management functions  within  the
       firmware,  so  that  an administrator can use command-line
       character commands via the serial port to power cycle  the
       system  and perform other functions, even if the system is
       not running an OS.  This level of access needs to be  pro
       tected  by  a username/password login, which can be speci
       fied with this utility.  This utility can use  either  the
       /dev/ipmi0  driver  from  MontaVista,  the /dev/imb driver
       from Intel, the /dev/ipmikcs driver from valinux,  or  the
       GNU FreeIPMI library.
 
OPTIONS
       Command line options are described below.
 
       -b     Set  up  and  enable the Serial Port EMP parameters
              for Basic Mode management functions.  This does not
              set a username or password.
 
       -c     Configure and enable the Serial Port EMP parameters
              for Terminal Mode management functions, shared with
              BIOS Console Redirection.  This sets a new username
              and password.
 
       -d     Disable the serial port access for  IPMI  commands.
              The  serial  port  is  then only available for BIOS
              console and OS functions.  A  side-effect  of  this
              option is that it sets the default user (1) back to
              admin access.
 
       -l     Show LAN Parameters. This option reads and displays
              the LAN Parameter configuration also.

       -m0    Switch  the  Serial Port MUX to Baseboard/BIOS Con
              sole operation.  Set no other configuration parame
              ters.
 
       -m1    Switch the Serial Port MUX to Terminal Mode manage
              ment.  Set no other configuration parameters.
 
       -n ser_chan
              Sets the IPMI channel number  for  the  EMP  serial
              port.  The default for this channel number is 1.
 
       -r     Read  Only.   This  option  just  reads  the Serial
              Parameter configuration without writing any values.
 
       -s     Set  up  and  enable the Serial Port EMP parameters
              for Shared operation between Basic Mode  management
              functions  and  Baseboard  (BIOS)  Remote  Console.
              This option switches the Serial Port MUX  to  Base
              board Console operation.
 
       -t     Configure and enable the Serial Port EMP parameters
              for Terminal Mode management functions, shared with
              BIOS  Console  Redirection.  Same as -c, but easier
              to remember.
 
       -x     Causes extra debug messages to be displayed.
 
       -u username
              This specifies a username for the EMP Terminal Mode
              login.   It can be any string, up to 15 characters.
              If -u is not used, the default user 1  (null)  will
              be  assumed.   The  username, if specified, will be
              set for user 3.
 
       -p password
              This specifies a password for the EMP Terminal Mode
              login.   It can be any string, up to 15 characters.
              A null password is used if none is specified.  This
              password applies to user 3 if -u is used, to user 1
              otherwise.
 
       -B     Set the Baud rate of the serial port to one of  the
              following:  9600,  19,2K,  38.4K, 57.6K, or 115.2K.
              The default is 19.2K bps.

       -N nodename
              Nodename of the remote target system.  If  a  node
              name  is specified, the IPMI LAN interface is used.
              Otherwise the local system management interface  is
              used.
 
       -P/-R rmt_pswd
              Remote   password  for  the  nodename  given.   The
              default is a null password.
 
       -U rmt_user
              Remote  username  for  the  nodename  given.    The
              default is a null username.
 
       -E     Use  the  remote password from Environment variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  a  specified IPMI LAN privilege level. 1=Call
              back  level,  2=User   level,   3=Operator   level,
              4=Administrator level (default), 5=OEM level.
 
EXAMPLES
       tmconfig -c
              Enables  Terminal Mode management functions, shared
              with BIOS Serial Console retirection.  The user can
              switch  between  serial console operations and IPMI
              Terminal Mode commands by typing ESC  ')'  and  ESC
              'Q'.
 
       tmconfig -s
              Enables Basic Mode management functions shared with
              BIOS Serial  Console  redirection.   The  user  can
              switch  between  serial console operations and IPMI
              Basic Mode management programs on the  same  serial
              port.
 
       tmconfig -d
              Disables  the  serial  port  management  functions.
              This would be used if only the BIOS Serial  Console
              were used and no BMC serial management functions.
 
       How to login to a Terminal Mode console:
       ESC (                   (switch to Terminal mode)
       [SYS PWD -N ]           (login for default user, null psw)
       [SYS PWD -U ROOT -N PASSWORD]  (syntax example for user 3)
       [SYS 000157 ACTIVATE]   (activate advanced commands)
       [SYS HEALTH QUERY]
       [SYS HELP]
       [SYS PWD]               (logoff)
       ESC Q                   (switch to BIOS console)
       See  IPMI  1.5 Spec, Appendix E, and Intel TIGPR2U TPS for
       more information.
 
DEPENDENCIES
       The tmconfig utility is  intended  to  configure  the  EMP
       serial  port  on  the  server  for  shared  access between
       BMC/IPMI functions and  BIOS  Console  Redirection.   Some
       platforms  only support only Basic Mode for BMC/IPMI func-
       tions.  Basic Mode requires a remote client application to
       utilize it (Windows ISC Console/DPC, or a special modified
       Linux telnet).  There are some platforms  which  implement
       Terminal Mode via IPMI v1.5 Appendix E to make remote man-
       agement with character commands available  on  the  serial
       port without a special remote client application.
 
       For  example, Intel TSRLT2 systems would use "tmconfig -s"
       for Basic Mode shared functions, but Intel TIGPR2U systems
       could  use  "tmconfig -c" to configure Terminal Mode func-
       tions.  On your system, run "tmconfig -r" to check whether
       Serial Param(29): "Terminal Mode Config" is supported.  If
       not, configure Basic Mode via "tmconfig -s".

SEE ALSO
       alarms(8) bmchealth(8) fruconfig(8) getevent(8) hwreset(8)
       icmd(8) pefconfig(8) sensor(8) showsel(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of tmconfig and any bug fix list.

PLATFORM SERIAL PORT CONFIGURATION EXAMPLES

  How to configure BIOS Console Redirection on the serial port.
  On Intel TIGPR2U:
    BIOS Setup (F2), Server, Console Redirection
    BIOS Redirection Port = serial 2
    ACPI Redirection = Disabled
    Baud Rate = 19.2K
    Flow Control = CTS/RTS
    Terminal Type = VT100+
  From Linux, run "tmconfig -c" for Terminal Mode shared configuration.

  On Intel TSRLT2, requires BMC >= 54:
    Serial Console Redirection = Enabled
    Serial Port = COM2 2F8 IRQ3
    Baud Rate = 19.2K
    Flow Control = CTS/RTS
  From Linux, run "tmconfig -s" for Basic Mode Shared configuration.
  
  For most other platforms, the serial console would be
  COM1 instead of COM2, but should be enabled in BIOS.

LINUX CONFIGURATION FOR SERIAL CONSOLE

  In /etc/lilo.conf, add
  append="console=tty console=ttyS1,19200n8"
  (and comment out the "message=" line because it includes graphics)
  Note that the append line can be placed in the global section
  and removed from each kernel section if there are no other differences.
  
  Or, edit /boot/grub/grub.conf as follows:
  # /boot/grub/menu1.list
  #gfxmenu (hd0,0)/message  # do not show the graphic interface
  default 0
  timeout 8
  #Using COM2
  serial --unit=1 --speed=19200 --word=8 --parity=no --stop=1
  # terminal --timeout=10 serial  (if serial only, no VGA)
  terminal --timeout=10 serial console
  title linux
      # Using COM2
      kernel (hd0,0) /vmlinuz  root=/dev/sda2  console=ttyS1,19200n8
      initrd (hd0,0) /initrd

  If MontaVista CGE 3.0, no change to /etc/inittab.
  If RedHat 9.0, RedHat AS 2.1, or MontaVista CGE 2.1, add to /etc/inittab:
  co:2345:respawn:/sbin/agetty ttyS1 19200 vt100
  If RedHat 7.x/8.0, add to /etc/inittab:
  co:2345:respawn:/sbin/mgetty -r -s 19200 ttyS1


3.6 FRUCONFIG(8)                                         FRUCONFIG(8)
 
NAME
       fruconfig - show Field Replacable Unit configuration data
 
SYNOPSIS
       fruconfig [-absx -N node -U user -P/-R pswd -ETV]
 
DESCRIPTION
       fruconfig is a program that uses IPMI commands to show FRU
       configuration data  and  optionally  write  an  asset  tag
       string  into  the  FRU  data.   Setting the asset tag is a
       function that can be used to uniquely identify  the  unit,
       even  if the storage devices are removed or changed.  This
       utility can use either the  /dev/ipmi0  driver  from  Mon
       taVista,  the /dev/imb driver from Intel, the /dev/ipmikcs
       driver from valinux, or the GNU FreeIPMI library.
 
OPTIONS
       Command line options are described below.
 
       -a     This option specifies an asset  tag  string  to  be
              written  to  the  baseboard  FRU Product area.  The
              asset tag length is limited  by  the  existing  FRU
              Product data, but is usually allowed up to 16 char
              acters.
 
       -b     Only show the  Baseboard  FRU  data.   The  default
              behavior  is  to  also scan for any SDR FRU data or
              DIMM SPD data referenced by the SDRs.
 
       -s     This option specifies a serial number string to  be
              written  to  the  baseboard  FRU Product area.  The
              serial number can be any string up  to  16  charac
              ters.
 
       -x     Causes eXtra debug messages to be displayed.
 
       -N nodename
              Nodename  of  the remote target system.  If a node
              name is specified,  IPMI  LAN  interface  is  used.
              Otherwise  the local system management interface is
              used.
 
       -U rmt_user
              Remote  username  for  the  nodename  given.    The
              default is a null username.
 
       -P/-R rmt_pswd
              Remote   password  for  the  nodename  given.   The
              default is a null password.
 
       -E     Use the remote password from  Environment  variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use a specified IPMI LAN privilege  level.  1=Call
              back   level,   2=User   level,  3=Operator  level,
              4=Administrator level (default), 5=OEM level.

SEE ALSO
       alarms(8) bmchealth(8) getevent(8) hwreset(8) icmd(8) 
       pefconfig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of fruconfig and any bug fix list.


3.7 ALARMS(8)                                               ALARMS(8)
 
NAME
       alarms - display and set alarm indicators
 
SYNOPSIS
       alarms [-cimnoprx -N node -U user -P/-R pswd -ETV]
 
DESCRIPTION
       alarms is a program that uses IPMI commands to display and
       set alarm indicators, which are usually LEDs on the system
       chassis  front  panel.   This  utility  can use either the
       /dev/ipmi0 driver from  MontaVista,  the  /dev/imb  driver
       from  Intel,  the /dev/ipmikcs driver from valinux, or the
       GNU FreeIPMI library.
 
       Note that this utility may not be the only  logic  setting
       alarm  states.   The BMC firmware, system management soft
       ware, or cluster fault manager may also want to set  alarm
       states.   Intel  provides a Telco Alarms Manager API which
       presents a consolidated interface for all alarm management
       applications.

OPTIONS
       Command line options are described below.
 
       -r     Read-only.   Show the alarms status, but do not set
              any states.  This is also the default  mode  if  no
              parameters are specified.
 
       -iN    Sets  the Chassis Identify feature, which can be an
              LED or some other alarm.   If  N=0,  turn  off  the
              Chassis ID, otherwise turn the ID on for N seconds.
              Note that this function may not be supported on all
              systems, and specifying it will display an error if
              unsupported.
 
       -aN    Sets Disk A Fault LED.  If N=0, turn  it  off.   If
              N=1,  turn it on.  Only valid for TIGPT1U platform.
 
       -bN    Sets Disk B Fault LED.  If N=0, turn  it  off.   If
              N=1,  turn it on.  Only valid for TIGPT1U platform.
 
       -cN    Sets the Critical Alarm.  If N=0, turn it off.   If
              N=1, turn it on.

       -mN    Sets  the  Major  Alarm.   If N=0, turn it off.  If
              N=1, turn it on.
 
       -nN    Sets the Minor Alarm.  If N=0,  turn  it  off.   If
              N=1, turn it on.
 
       -pN    Sets  the  Power  Alarm.   If N=0, turn it off.  If
              N=1, turn it on.  Note that the Power LED  is  also
              wired  to  the  System Fault LED in the back of the
              system, so this state may be off for Power, but the
              LED could be lit for a System Fault reason instead.
              Refer to the system Technical Product Specification
              for System Faults.
 
       -o     Sets all alarms off, including the Chassis ID.
 
       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename  of  the remote target system.  If a node
              name is specified,  IPMI  LAN  interface  is  used.
              Otherwise  the local system management interface is
              used.
 
       -P/-R rmt_pswd
              Remote  password  for  the  nodename  given.    The
              default is a null password.
 
       -U rmt_user
              Remote   username  for  the  nodename  given.   The
              default is a null username.
 
       -E     Use the remote password from  Environment  variable
              IPMI_PASSWORD.
 
       -T     Use  this  IPMI  LAN  Authentication  Type: 0=None,
              1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  this  IPMI  LAN  privilege  level.  1=Callback
              level,  2=User  level, 3=Operator level, 4=Adminis
              trator level (default), 5=OEM level.

SEE ALSO
       bmchealth(8) fruconfig(8) getevent(8)  hwreset(8)  icmd(8)
       pefconfig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of alarms and any bug fix list.


3.8 WDT(8)                                                     WDT(8)
 
NAME
       wdt - display and set WatchDog Timer parameters
 
SYNOPSIS
       wdt [-adelrtx -N node -P/-R pswd -U user -ETV]
 
DESCRIPTION
       wdt  is  a  program that uses IPMI commands to display and
       set WatchDog Timer parameters.
 
       This utility can use either  the  /dev/ipmi0  driver  from
       MontaVista,   the   /dev/imb   driver   from   Intel,  the
       /dev/ipmikcs driver from  valinux,  or  the  GNU  FreeIPMI
       library.
 
       Note  that the device-independent way to manipulate watch
       dog timers in Linux is to use the /dev/watchdog interface.
       This  utility  is  an  example  of  how to access the IPMI
       watchdog parameters directly.

OPTIONS
       Command line options are described below.
 
       -a N   Set watchdog event Action to  N.  Values:  0  =  No
              action,  1 = Hard Reset(default), 2 = Power down, 3
              = Power cycle.
 
       -d     Disables the watchdog timer.
 
       -e     Enables the watchdog timer.  The timer is not actu
              ally  started,  however,  until the timer is reset.
              The pre-timeout action is not enabled.
 
       -l     Set the watchdog dontLog bit to  not  log  watchdog
              events in the SEL.
 
       -r     Resets  the  watchdog  timer.   This should be done
              every N seconds if the timer is running to  prevent
              the  watchdog  action (usually a system reset) from
              occurring.
 
       -tN    Set the watchdog Timeout to N seconds.  The default
              is 120 seconds (2 minutes).

       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename  of  the remote target system.  If a node
              name is specified,  IPMI  LAN  interface  is  used.
              Otherwise  the local system management interface is
              used.
 
       -P/-R rmt_pswd
              Remote  password  for  the  nodename  given.    The
              default is a null password.
 
       -U rmt_user
              Remote   username  for  the  nodename  given.   The
              default is a null username.
 
       -E     Use the remote password from  Environment  variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.

       -V     Use a specified IPMI LAN privilege  level.  1=Call
              back   level,   2=User   level,  3=Operator  level,
              4=Administrator level (default), 5=OEM level.
 
SEE ALSO
       alarms(8) bmchealth(8) fruconfig(8) getevent(8) hwreset(8)
       icmd(8) pefconfig(8) sensor(8) showsel(8) tmconfig(8)
 
WARNINGS
       See  http://ipmiutil.sourceforge.net/  for the latest ver-
       sion of wdt and any bug fix list.


3.9 ICMD(8)                                                   ICMD(8)
 
NAME
       icmd  - a tool to send specific IPMI commands via the com
       mand line.
 
SYNOPSIS
       icmd [-sx -NUPRETV] bus rsSa netFn/lun cmd [data bytes]
 
DESCRIPTION
       This  icmd  tool  sends  specific  IPMI  commands  to  the
       firmware.   The commands are composed as hex values on the
       command line.  This tool was written to allow in-band  use
       to match the DOS CMDTOOL.EXE or IPMITOOL.EXE program which
       is distributed with many Intel servers.   Certain  scripts
       or pre-written commands may have been supplied for the DOS
       tool that can now be used  while  the  system  is  running
       Linux or Windows.
 
       This  utility  can  use  either the /dev/ipmi0 driver from
       MontaVista,  the   /dev/imb   driver   from   Intel,   the
       /dev/ipmikcs  driver  from  valinux,  or  the GNU FreeIPMI
       library.
 
       This tool should only be used if you are familiar with the
       IPMI  1.5  specification, or you have specific pre-written
       commands to send.
 
OPTIONS
       Command line options are described below.
 
       -s     Skips the GetDeviceID command
 
       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename of the remote target system.  If  a  node
              name  is  specified,  IPMI  LAN  interface is used.
              Otherwise the local system management interface  is
              used.
 
       -U rmt_user
              Remote   username  for  the  nodename  given.   The
              default is a null username.
 
       -P/-R rmt_pswd
              Remote  password  for  the  nodename  given.    The
              default is a null password.
 
       -E     Use  the  remote password from Environment variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  a  specified IPMI LAN privilege level. 1=Call
              back  level,  2=User   level,   3=Operator   level,
              4=Administrator level (default), 5=OEM level.
 
PARAMETERS
       The following parameters are used by icmd.  Each is repre-
       sented  as  a  two-digit hex byte.  The parameters have no
       default values.

       bus    This byte contains the bus number for this command,
              usually 00.
 
       rsSa   This  is  the  resource slave address, usually 0x20
              for the BMC.
 
       netFn/lun
              This byte combines the net Function and Lun.  The 2
              low-order bits are the Lun  and  the  6  high-order
              bits  are the net Function.  This representation is
              consistent with the DOS CMDTOOL/IPMITOOL.
 
       cmd    This byte contains the IPMI command.
 
       [data bytes]
              This  is a sequence of zero to 16 bytes that repre-
              sent data bytes specific to this command.
 
EXAMPLES
       icmd 00 20 18 01
       Sends the GetDevice ID command to the BMC.
 
       icmd 00 20 28 43 00 00 ff ff 00 ff
       Sends a Get SEL entry command for the last  entry  in  the
       firmware log.
 
SEE ALSO
       alarms(8) bmchealth(8) fruconfig(8) getevent(8) hwreset(8)
       pefconfig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See  http://ipmiutil.sourceforge.net/  for the latest ver-
       sion of icmd and any bug fix list.


3.10 GETEVENT(8)                                           GETEVENT(8)
 
NAME
       getevent - wait for IPMI events
 
SYNOPSIS
       getevent [-osx -t secs -N node -U user -P/-R pswd -ETV]
 
DESCRIPTION
       getevent  is a program that uses IPMI commands to wait for
       IPMI events sent from the BMC firmware.  These events  are
       also  sent to the IPMI System Event Log (SEL).  This util
       ity can use either the /dev/ipmi0  driver  from  OpenIPMI,
       the  /dev/imb  driver  from Intel, the /dev/ipmikcs driver
       from valinux, or the GNU FreeIPMI library.
 
OPTIONS
       Command line options are described below.
 
       -t N   Set the timeout period to N  seconds.   Default  is
              120  seconds.   A  timeout  of  0 means an infinite
              period.

       -s     Use the SEL method to get events.  This  polls  the
              SEL  once  a second for new events.  Otherwise, the
              default is to use the  ReadEventMessageBuffer  IPMI
              command to get new events.

       -o     Only run one pass to  wait  for  the  first  event.
              Default  is  to  loop  for  multiple events for the
              timeout period.
 
       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename of the remote target system.  If  a  node
              name  is  specified,  IPMI  LAN  interface is used.
              Otherwise the local system management interface  is
              used.
 
       -P/-R rmt_pswd
              Remote   password  for  the  nodename  given.   The
              default is a null password.
 
       -U rmt_user
              Remote  username  for  the  nodename  given.    The
              default is a null username.
 
       -E     Use  the  remote password from Environment variable
              IPMI_PASSWORD.

       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use  a  specified IPMI LAN privilege level. 1=Call
              back  level,  2=User   level,   3=Operator   level,
              4=Administrator level (default), 5=OEM level.

SEE ALSO
       alarms(8)  bmchealth(8)  fruconfig(8)  hwreset(8)  icmd(8)
       pefconfig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See  http://ipmiutil.sourceforge.net/  for the latest ver-
       sion of alarms and any bug fix list.


3.11 BMCHEALTH(8)                                         BMCHEALTH(8)
 
NAME
       bmchealth - show BMC health
 
SYNOPSIS
       bmchealth [-hx -N node -U user -P/-R pswd -ETV]
 
DESCRIPTION
       bmchealth is a program that uses IPMI commands to show the
       health of the  BMC.   This  utility  can  use  either  the
       /dev/ipmi0  driver from OpenIPMI, the /dev/imb driver from
       Intel, the /dev/ipmikcs driver from valinux,  or  the  GNU
       FreeIPMI library.
 
OPTIONS
       Command line options are described below.
 
       -h     Check the health of the HotSwap Controller also.
 
       -x     Causes extra debug messages to be displayed.
 
       -N nodename
              Nodename  of  the remote target system.  If a node
              name is specified,  IPMI  LAN  interface  is  used.
              Otherwise  the local system management interface is
              used.
 
       -P/-R rmt_pswd
              Remote  password  for  the  nodename  given.    The
              default is a null password.
 
       -U rmt_user
              Remote   username  for  the  nodename  given.   The
              default is a null username.
 
       -E     Use the remote password from  Environment  variable
              IPMI_PASSWORD.
 
       -T     Use  a  specified  IPMI  LAN  Authentication  Type:
              0=None, 1=MD2, 2=MD5, 4=Straight Password, 5=OEM.
 
       -V     Use a specified IPMI LAN privilege  level.  1=Call
              back   level,   2=User   level,  3=Operator  level,
              4=Administrator level (default), 5=OEM level.

SEE ALSO
       alarms(8) fruconfig(8) getevent(8) hwreset(8) icmd(8) 
       pefconfig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)
 
WARNINGS
       See http://ipmiutil.sourceforge.net/ for the  latest  ver-
       sion of alarms and any bug fix list.


--------------------------
4.0  USE CASES
--------------------------

4.1 Usage of IPMI utilities for sensor thresholds

Get and set the Baseboard Temperature sensor threshold with 
the 'sensor' utility like this:
# sensor -t
[...]
000e SDR Full 01 39 20 sensnum 30 Baseboard Temp   = 1d OK   29.00 degrees C
        hi-crit 65.00 hi-noncr 60.00 lo-noncr 10.00 lo-crit  5.00
[...]
Using sensor number 30, index 000e, and the hex raw reading (1d) as a 
baseline from above, we can set the lower threshold above the current 
reading, i.e. 0x1e or 30 C.

# sensor -i 0e -t -n 0x30 -l 30
sensor: version 1.39
idx = 0e
-- BMC version 0.48, IPMI version 1.5
_ID_ SDR_Type_xx Sz Own Typ S_Num Sens_Description   Hex & Interp Reading
000e SDR Full 01 39 20 sensnum 30 Baseboard Temp   = 1d OK   29.00 degrees C
        hi-crit 65.00 hi-noncr 60.00 lo-noncr 10.00 lo-crit  5.00
        Setting SDR 000e sensor 30 to lo=1e hi=ff
GetThreshold[30]: 30 1b 0a 05 00 3c 41 00
SetThreshold[30]: 30 03 20 1f 1e 00 00 00
SetSensorThreshold[30] to lo=1e(30.000) hi=ff(0.000), ret = 0
# 
This sets the lower non-crit to 1e (30 C), and lower crit to 1f (31 C), and
would cause a sensor threshold event.  Note that this utility takes the
raw threshold value and increments it sequentially for each of the severities.
Now we should set the lower threshold back to a more normal value of 5 C.
# sensor -i 0e -t -n 0x30 -l 5
sensor: version 1.39
idx = 0e
-- BMC version 0.48, IPMI version 1.5
_ID_ SDR_Type_xx Sz Own Typ S_Num Sens_Description   Hex & Interp Reading
000e SDR Full 01 39 20 a 01 snum 30 Baseboard Temp   = 1b Crit-lo 27.00 degrees
C
        hi-crit 66.00 hi-noncr 60.00 lo-noncr 10.00 lo-crit  5.00
        Setting SDR 000e sensor 30 to lo=05 hi=ff
GetThreshold[30]: 30 1b 20 1f 00 3c 42 00
SetThreshold[30]: 30 03 07 06 05 00 00 00
SetSensorThreshold[30] to lo=05(5.000) hi=ff(0.000), ret = 0
# 
The threshold events can be displayed via showsel.
# showsel -l4 
4b18 07/17/06 14:33:14 BMC  01 Temperature 30 LoC thresh OK now act=1b thr=06
4b04 07/17/06 14:33:14 BMC  01 Temperature 30 LoN thresh OK now act=1b thr=07
4af0 07/17/06 14:26:38 BMC  01 Temperature 30 Lo Crit thresh act=1b thr=1f
4adc 07/17/06 14:26:38 BMC  01 Temperature 30 Lo Noncrit thresh act=1b thr=20
#

4.2 Usage of IPMI utilities for BMC LAN configuration

Suppose there are a number of IPMI servers that need to have their
BMC LAN interface configured.  Shell access to the servers 
(via ssh or similar) is assumed.  

BMC LAN, Simple case, password is not changed:
[ssh connection]
# pefconfig
[ssh exit]

BMC LAN, Complex case, assuming that a password needs to be set and
that the session text (or script) must encrypt the password.  
So, using the gnupg.org utilities with public/private keys 
would look something like this:
[ Set up list (or db) of encrypted passwords & key by nodename.
  Note that the list and keyfile could reside locally, building
  the ssh script syntax, so that only the encrypted password is 
  exposed remotely. ]
[ssh connection]
# gpg --import mykey.file
# mynode=`uname -n`
# my_enc_psw=`grep $mynode mylist.file |cut -f2`
# pefconfig -p `gpg --decrypt $my_enc_psw`
[ssh exit]

4.3 Usage of IPMI Utilities to set watchdog timer

You may want to add these commands to an /etc/init.d script on the server.
# wdt -e -t 180
wdt ver 1.8
-- BMC version 0.66, IPMI version 1.5
wdt data: 01 00 1e 00 10 e0 10 e0 
Watchdog timer is stopped for use with BIOS FRB2. Logging
               pretimeout is 30 seconds, pre-action is None
               timeout is 5736 seconds, counter is 5736 seconds
               action is No action
Setting watchdog timer to 180 seconds ...
wdt data: 04 01 00 00 08 07 08 07
Watchdog timer is stopped for use with SMS/OS. Logging
               pretimeout is 0 seconds, pre-action is None
               timeout is 180 seconds, counter is 180 seconds
               action is Hard Reset
#
Now add "wdt -r" to the crontab every 60 seconds (every 1 minute):
# echo "* * * * * /usr/sbin/wdt -r" >>my.cron
# crontab my.cron


4.4 Usage of kernel panic handler code (now CONFIG_IPMI_PANIC_EVENT):

If a Linux panic occurs, the bmc_panic module will automatically save 
the date/time of the panic, and minimal information about the panic.
This information will also be sent via SNMP to the remote management console,
and (if bmcpanic.patch) the Alarms panel LED will be turned on.  
If lkcd is also configured, a full crash-dump of the panic will be saved
for later analysis.
After this, the system will automatically reboot.
This provides instant notification to the administrator, and significantly
improved post-mortem diagnosis.

Without these features, the administrator may never have any indication that
the system had crashed, and no way to know how to diagnose and fix the problem.

To enable this, set CONFIG_IPMI_PANIC_EVENT=y and CONFIG_IPMI_PANIC_STRING=y
in the kernel .config file.  

You can also run pefconfig to enable sending an SNMP trap for a kernel 
panic as an "OS Critical Stop" event.

Make sure that the panic timeout is not zero (infinite), by using 
echo "5" > /proc/sys/kernel/panic
or by adding 'append="panic=5"' to the lilo or grub configuration.

After a panic occurs, you can then use showsel to view the firmware SEL 
for that event.  It should look something like this:
# showsel
[...]
2d04 07/21/04 07:54:22 SMI  20 OS Critical Stop 46 (Fat) 6f [a1 61 74]
2d18 OEM Event 20 00 Fatal excep
2d2c OEM Event 20 01 tion
[...]


4.5 Interpreting BMC LAN SNMP Traps from Platform Events.

There are MIB files provided for BMC LAN SNMP traps with this project.
They are installed into /usr/share/ipmiutil/bmclan*.mib, and sym-linked 
into /usr/share/snmp/mibs/.
The Platform Event Traps (enterprises.3183) are defined in bmclanpet.mib.
The Alert-on-LAN traps (enterprises.3183) are defined in bmclanaol.mib.

Note that Plaform Event Traps also have a 46-byte binary variable bindings 
field included with the trap.  
See Section 12.5 and 12.6 from the Intel ISM 5.x TPS for background.

Actual PET Trap Data from a System Restart Event trap: 

snmputil: trap generic=6 specific=1208065
  from -> 10.243.42.197
Variable = .iso.org.dod.internet.private.enterprises.3183.1.1.1
Value    = String <0xa4><0x12><0x00><0x5f><0x62><0xa1><0xd5><0x11><0x00><0x80><0x60><0xff><0x94><0x47><0x03><0x00><0x21><0x19><0x0c><0x7f><0x3b><0x12><0xff><0xff><0x20><0x20><0x00><0x01><0x83><0x00><0x00><0x01><0xff><0xff><0x00><0x00><0x00><0x00><0x00><0x19><0x00><0x00>
<0x01><0x57><0x00><0x0c><0xc1>

Byte Mapping 
Bytes of the trap variable binding data are mapped.  
An extra byte of data is at the end (47).

Byte Data    Meaning
1   0xa4    System GUID (16 bytes)
2   0x12    
3   0x00    
4   0x5f    
5   0x62    
6   0xa1    
7   0xd5    
8   0x11    
9   0x00    
10  0x80    
11  0x60    
12  0xff    
13  0x94    
14  0x47    
15  0x03    
16  0x00    
17  0x21    Sequence Number/Cookie (2 bytes)
18  0x19    
19  0x0c    Local Timestamp (4 bytes)
20  0x7f    
21  0x3b    
22  0x12    
23  0xff    UTC Offset (2 bytes)
24  0xff    
25  0x20    Trap Source Type
26  0x20    Event Source Type
27  0x00    Event Severity
28  0x01    Sensor Device
29  0x83    Sensor Number
30  0x00    Entity
31  0x00    Entity Instance
32  0x01    Event Data (8 bytes max, 3 bytes used)
33  0xff    
34  0xff    
35  0x00    
36  0x00    
37  0x00    
38  0x00    
39  0x00    
40  0x19    filler byte
41  0x00    Manufacturer ID (4 bytes, 000157=Intel)
42  0x00    
43  0x01    
44  0x57    
45  0x00    Product ID   (2 bytes)
46  0x0c
47  0xc1    extra byte

-------------------------------
5.0  IPMI UTILITIES ON WINDOWS 
-------------------------------
Files contained in the ipmiutil win32 zip file:
 alarms.exe
 bmchealth.exe
 fruconfig.exe
 getevent.exe
 hwreset.exe
 icmd.exe
 pefconfig.exe
 sensor.exe
 showsel.exe
 showselmsg.dll
 tmconfig.exe
 wdt.exe

The showselmsg.dll needs to be copied into the %PATH%, usually
%SystemRoot%\system32.  The other utilities can be run independently,
or added into the %PATH%.

The usage of the utilities is the same as in Linux OS, with one caveats:
1) The only IPMI driver supported is the Intel IMB driver (imbdrv.sys), 
   which can be obtained from the Intel Resource CD for your system, 
   from the ISM CD, or from http://support.intel.com.

How to install the Windows IPMI driver (from Resource CD)
cd c:\temp
copy d:\ism\software\win32\pi\common\imb*.*
copy d:\ism\software\win32\pi\common\win2k*.exe
ren imbdrv2k.sys imbdrv.sys
copy imbapi.dll %SystemRoot%\system32
win2kinstall c:\temp\imbdrv.inf *IMBDRV
driverquery   (shows the drivers currently installed/running)

To build the ipmiutil EXEs for Windows from source,
the WIN32 compile flag needs to be turned on.
The ipmiutil doc/mk.bat shows how to compile and link 
the util/*.c files, although many people prefer to do 
makes with Microsoft VisualStudio.  
The build environment assumes that VisualStudio/VC98 and 
Windows 2003 DDK are installed.

To build the showselmsg.dll from doc/showsel.mc:
set TARG=showsel
mc -U %TARG%.mc
rc -r %TARG%.rc
link /MACHINE:IX86 -dll -noentry -out:%TARG%msg.dll %TARG%.res

--------------------------
6.0  PROBLEMS
--------------------------
Note that each tool has an option for additional debug output (-x).

Contact maintainer for best-effort support:  arcress@users.sourceforge.net
or use the ipmiutil-developer mailing list:
       http://lists.sourceforge.net/lists/listinfo/ipmiutil-developers 

Return code = 0 means success, negative numbers indicate failure, and a
positive return code represents a completion code.
Completion Codes are defined in IPMI 1.5, Table 5-2, and are also included 
below in both hex and decimal format:

Code  Dec  Description
----  ---  -----------------------------------------
0x00,   0, "Command completed successfully",
0x80, 128, "Unsupported Feature",
0xC0, 192, "Node Busy",
0xC1, 193, "Invalid Command",
0xC2, 194, "Command invalid for given LUN",
0xC3, 195, "Timeout while processing command",
0xC4, 196, "Out of space",
0xC5, 197, "Invalid Reservation ID, or cancelled",
0xC6, 198, "Request data truncated",
0xC7, 199, "Request data length invalid",
0xC8, 200, "Request data field length limit exceeded",
0xC9, 201, "Parameter out of range",
0xCA, 202, "Cannot return requested number of data bytes",
0xCB, 203, "Requested sensor, data, or record not present",
0xCC, 204, "Invalid data field in request",
0xCD, 205, "Command illegal for this sensor/record type",
0xCE, 206, "Command response could not be provided",
0xCF, 207, "Cannot execute duplicated request",
0xD0, 208, "SDR Repository in update mode, no response",
0xD1, 209, "Device in firmware update mode, no response",
0xD2, 210, "BMC initialization in progress, no response",
0xD3, 211, "Destination unavailable",
0xD4, 212, "Cannot execute command. Insufficient privilege level",
0xD5, 213, "Cannot execute command. Request parameters not supported",
0xFF, 255, "Unspecified error"

--------------------------
7.0  RELATED INFORMATION
--------------------------
History of ipmiutil:
This project started in October 2001 as part of the Carrier Grade Linux effort. 
It was then known as 'panicsel' and included a kernel patch to write a Linux 
panic event to the IPMI firmware log, as well as utilities. 
This code was first included in MontaVista CGE Linux 2.1 in July 2002. 
The panicsel functionality was included in OSDL CGL 1.0 and 2.0 requirements. 
The kernel panic functionality was included in the OpenIPMI driver for 2.6 
Linux kernels. Compile flags for Windows 2000 & 2003 support were added in 
Jan 2004. 
In August 2004, the project was moved from panicsel.sf.net to ipmiutil.sf.net. 
The new name more clearly reflects the purpose of the project in its current 
state. In November 2004, support for the FreeIPMI library was added. 
A Linux rpm and a Windows setup package for ipmiutil is included on the 
Resource CD with Intel carrier-grade servers. 
The ipmiutil (or panicsel) rpm is known to be included in the following 
distributions: MontaVista CGE 2.1/3.0/3.1/4.0, SuSE SLES9, RedFlag 5.0 

Links with information related to the IPMI Management Utilities project.

ipmiutil project, sourceforge http://ipmiutil.sourceforge.net
panicsel project, sourceforge http://panicsel.sourceforge.net
IPMI Specification            http://www.intel.com/design/servers/ipmi/index.htm
OSDL Carrier Grade Linux      http://www.osdl.org/lab_activities/carrier_grade_linux/
Intel imb ipmidrvr            http://downloadfinder.intel.com/scripts-df/Product_Search.asp?Prod_nm=ipmi*driver*source
OpenIPMI project              http://sourceforge.net/projects/openipmi/
  by Corey Minyard of MontaVista     (home= http://openipmi.sourceforge.net)
ipmitools project by San Mehat http://sourceforge.net/projects/ipmitools/
   valinux IPMI driver        http://cvs.sf.net/cgi-bin/viewcvs.cgi/ipmitools/ipmitools/kernel/kcs/patches/2.4.x/ 
GNU FreeIPMI library project  http://www.gnu.org/software/freeipmi/
LANDesk IPMI driver/daemon    http://www.landesk.com/Support/ (or see
                              Intel System Resource CD for Intel servers)
lm-sensors project            http://secure.netroedge.com/~lm78/
dmidecode project             http://www.nongnu.org/dmidecode/
IPMI vendor/mfg IDs           http://www.iana.org/assignments/enterprise-numbers

