
                    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	IPMIUTIL  
   3.2	ALARMS    (i_alarms)
   3.3	BMCHEALTH (i_health)
   3.4	FRUCONFIG (i_fru)
   3.5	GETEVENT  (i_getevt)
   3.6	HWRESET   (i_reset)
   3.7	ICMD      (i_cmd)
   3.8	PEFCONFIG (i_lan)
   3.9	SENSOR    (i_sensor)
   3.10	SHOWSEL   (i_sel)
   3.11	TMCONFIG  (i_serial)
   3.12	WDT       (i_wdt)
   3.13	ISOLCONSOLE (i_sol)
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 
   4.6  Interpreting newer PECI sensors for CPU Temperature
   4.7  How to configure a system for IPMI LAN
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.
ipmiutil       - a meta-command to invoke all of the above as sub-commands

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.

Example Hardware Platforms tested with ipmiutil:
  Intel RackMount Servers (both 32-bit and 64-bit)
  Intel ATCA 
  NSC (National SemiConductor)
  SuperMicro (with LMC)
  Dell PowerEdge 2800
  Sun   (product id 0x4701)
  Tyan
  Tatung

------------------------
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.

In order for the showsel -w function to work cleanly on a Windows system,
the showselmsg.dll should be copied to %SystemRoot%\system32, and the 
showsel.reg should be run to set up the corresponding EventLog service 
registry values.

------------------------
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     IPMIUTIL

IPMIUTIL(8)							  IPMIUTIL(8)

NAME
       ipmiutil - a meta-command to invoke various IPMI functions.

SYNOPSIS
       ipmiutil <command> [-x -NUPETVF] [other command options]

DESCRIPTION
       This utility performs various IPMI functions.   Each of the individual
       commands in the ipmiutil project can be invoked via this meta-command.
       The <command> is one of the following:
	  alarms  show/set the front panel alarm LEDs and relays
	  health  check and show the basic health of the IPMI BMC
	  fru	  show FRU inventory data, write asset tag
	  getevt  receive any IPMI events and display them
	  reset	  cause the BMC to reset or power down the system
	  cmd	  send a specified raw IPMI command to the BMC
	  lan	  show/set IPMI LAN parameters and PEF table
	  serial  show/set IPMI Serial & Terminal Mode parameters
	  sensor  show Sensor Data Records, readings, thresholds
	  sel	  show/clear firmware System Event Log records
	  sol	  start/stop an SOL console session
	  wdt	  show/set/reset the watchdog timer
       For help on each command (e.g. ’sel’), enter:
	  ipmiutil sel -?
       For man pages on each command, refer to SEE ALSO below.

       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 IPMI LAN interface.


OPTIONS
       Command options are described in the man page for each command.	Below
       are a few of the common options.

       -x     Causes extra debug messages to be displayed.

       -N nodename
	      Nodename of the remote target system.  If a nodename is  speci-
	      fied,  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_PASS-
	      WORD.

       -F drv_t
	      Force  the  driver  type to one of the followng: imb, va, open,
	      gnu, landesk, lan2, lan, kcs, smb.  The default  is  to  detect
	      any available driver type and use it.

       -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=Callback  level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes, do prompt the user  for  the	 IPMI  LAN  remote  password.
	      Alternatives for the password are -E or -P.

EXAMPLES
       ipmiutil sel
       Shows the IPMI System Event Log entries.

       ipmiutil wdt
       Shows the watchdog timer values.

SEE ALSO
       alarms(8)  bmchealth(8)	fruconfig(8)  getevent(8)  hwreset(8) pefcon-
       fig(8) sensor(8) showsel(8) tmconfig(8) wdt(8) icmd(8)

WARNINGS
       See http://ipmiutil.sourceforge.net/ for the latest  version  of	 icmd
       and any bug fix list.


3.2     ALARMS    (i_alarms) 

ALARMS(8)							    ALARMS(8)

NAME
       alarms - display and set alarm indicators

SYNOPSIS
       alarms [-cimnoprx -N node -U user -P/-R pswd -ETVF]

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 IPMI LAN interface.	Note that a LAN user must have Administrative
       privileges to read or write the alarm LEDs.

       Note that this utility may not be the only logic setting alarm states.
       The BMC firmware, system management software, or cluster fault manager
       may also want to set alarm states.  Intel provides a Telco Alarms Man-
       ager API which presents a consolidated interface for all alarm manage-
       ment 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 nodename is speci-
	      fied, 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Administrator level (default), 5=OEM
	      level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.

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 version of alarms
       and any bug fix list.


3.3     BMCHEALTH (i_health) 

BMCHEALTH(8)							 BMCHEALTH(8)

NAME
       bmchealth - show BMC health

SYNOPSIS
       bmchealth [-hx -N node -U user -P/-R pswd -ETVF]


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 nodename is  speci-
	      fied,  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_PASS-
	      WORD.

       -F drv_t
	      Force  the  driver  type to one of the followng: imb, va, open,
	      gnu, landesk, lan2, lan, kcs, smb.  The default  is  to  detect
	      any available driver type and use it.

       -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=Callback  level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes, do prompt the user  for  the	 IPMI  LAN  remote  password.
	      Alternatives for the password are -E or -P.

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 version of  alarms
       and any bug fix list.


3.4     FRUCONFIG (i_fru)

FRUCONFIG(8)							 FRUCONFIG(8)

NAME
       fruconfig - show Field Replacable Unit configuration data

SYNOPSIS
       fruconfig [-abmsx -N node -U user -P/-R pswd -ETVF]

DESCRIPTION
       fruconfig  is a program that uses IPMI commands to show FRU configura-
       tion 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 iden-
       tify the unit, even if the storage devices  are	removed	 or  changed.
       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.

       -a asset_string
	      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
	      characters.

       -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.

       -m 002000
	      Show FRU for a specific MC (e.g. bus 00, sa 20, lun 00).	 This
	      would be used for PICMG or ATCA blade systems.

       -s serial_num
	      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 characters.

       -x     Causes eXtra debug messages to be displayed.

       -N nodename
	      Nodename	of the remote target system.  If a nodename is speci-
	      fied, 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Callback level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.

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 version of frucon-
       fig and any bug fix list.


3.5     GETEVENT  (i_getevt)

GETEVENT(8)							  GETEVENT(8)

NAME
       getevent - wait for IPMI events

SYNOPSIS
       getevent [-osx -t secs -N node -U user -P/-R pswd -ETVF]

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 utility can use either the /dev/ipmi0
       driver from OpenIPMI, the /dev/imb driver from Intel, the /dev/ipmikcs
       driver from valinux, or the IPMI LAN interface.

       Some  server  management	 functions  want to trigger custom actions or
       alerts when IPMI hardware-related events occur, but  do	not  want  to
       track  all  events, just newly occurring events.	 This utility waits a
       specified timeout period for any events, and returns interpreted	 out-
       put for each event.  It is designed as a scriptable command-line util-
       ity, but if the timeout is infinite (-t 0), then this  code  could  be
       used for a sample service as well.

       There are several methods to do this which are implemented here.

       The SEL method:
       This  method  polls the SEL once a second, keeps track of the last SEL
       event read, and only new events are processed.  This ensures that in a
       series  of  rapid  events,  all events are received in order, however,
       some transition-to-OK events may not be configured to write to the SEL
       on  certain  platforms.	 This method is used if getevent -s is speci-
       fied.

       The ReadEventMessageBuffer method:
       This uses an IPMI Message Buffer in the BMC firmware to read each  new
       event.  This receives any event, but if two events occur nearly simul-
       taneously, only the most recent of the two will be returned with	 this
       method.	 An  example  of  simultaneous	events	might  be,  if	a fan
       stops/fails, both the non-critical and critical fan  threshold  events
       would occur at that time.  This is the default method for getevent.

       The OpenIPMI custom method:
       Different  IPMI	drivers may have varying behavior.  For instance, the
       OpenIPMI driver uses the IPMI GetMessage commands internally and	 does
       not  allow client programs to use those commands.  It has its own cus-
       tom mechanism, see getevent_mv().  This method is used if the OpenIPMI
       driver is detected.

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 nodename is speci-
	      fied, 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Callback level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.

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 version of alarms
       and any bug fix list.


3.6     HWRESET   (i_reset)

HWRESET(8)							   HWRESET(8)

NAME
       hwreset - perform a hardware reset on the system

SYNOPSIS
       hwreset [-dcnorsx -N node -U user -P/-R pswd -ETVF]

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

       -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.

       -s     Do a hard reset and reboot to the Service Partition,  for	 this
	      reboot only.  Reboots to the default if no service partition is
	      configured.

       -b     Do a hard reset and reboot to the BIOS  Setup  menu,  for	 this
	      reboot only.

       -e     Reboots to EFI, if EFI boot is enabled, for this reboot only.

       -f     Reboots to Floppy/Removable, for this reboot only.

       -h     Reboots to a Hard Disk, for this reboot only.

       -m     Reboots to CDROM Media, for this reboot only.

       -p     Reboots to PXE

       -r     Hard Reset the system chassis (default action)

       -s     Reset and boot to the Service Partition

       -w     Wait for BMC ready after a reset before exiting the utility.

       -x     Causes extra debug messages to be displayed.

       -N nodename
	      Nodename or IP address 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Callback level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.

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 version of hwreset
       and any bug fix list.


3.7     ICMD      (i_cmd)

ICMD(8)								      ICMD(8)

NAME
       icmd - a tool to send specific IPMI commands via the command line.

SYNOPSIS
       icmd [-sx -NUPRETVF] bus rsSa netFn/lun cmd [data bytes]

DESCRIPTION
       This icmd tool sends specific IPMI commands to the firmware.  The com-
       mands 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 IPMI-
       TOOL.EXE program which is distributed with many Intel  servers.	 Cer-
       tain  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 nodename is  speci-
	      fied,  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_PASS-
	      WORD.

       -F drv_t
	      Force  the  driver  type to one of the followng: imb, va, open,
	      gnu, landesk, lan2, lan, kcs, smb.  The default  is  to  detect
	      any available driver type and use it.

       -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=Callback  level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes, do prompt the user  for  the	 IPMI  LAN  remote  password.
	      Alternatives for the password are -E or -P.

PARAMETERS
       The  following  parameters are used by icmd.  Each is represented 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	Func-
	      tion.   This  representation  is	consistent  with the DOS CMD-
	      TOOL/IPMITOOL.

       cmd    This byte contains the IPMI command.

       [data bytes]
	      This is a sequence of zero to  16	 bytes	that  represent	 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)  pefcon-
       fig(8) sensor(8) showsel(8) tmconfig(8) wdt(8)

WARNINGS
       See  http://ipmiutil.sourceforge.net/  for  the latest version of icmd
       and any bug fix list.


3.8     PEFCONFIG (i_lan)

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 [-deq#rstx -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 -Fimb ]
		[-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 without options,
       pefconfig behaves as if option -r were used.  To configure IPMI LAN  &
       PEF, use option -e.

       -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 parame-
	      ters from the OS automatically, 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  inter-
	      face  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.

       -#     Same as -q below.

       -q     Specify  an alternate user number for the LAN username from the
	      -u option.  This is normally user number 2, 3, or 4, where 2 is
	      the default.  The maximum number of users is 15.

       -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 automatically 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
	      parameter.  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 param-
	      eter 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 speci-
	      fied, 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 password 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 tech-
	      nical 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 nodename is speci-
	      fied, 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Callback level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.


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 -e -I 192.168.1.1 -A 192.168.1.10

       To set the IPMI LAN password for the default user:
       pefconfig -e -p mypassword

       To disable access to the IPMI LAN channel:
       pefconfig -d


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:
       PEF(01): 01 Temperature Sensor event - enabled for alert
       01 c0 01 01 00 ff ff 01 ff 01 95 0a 00 00 00 00 00 00 00 00 00
       PEF(02): 02 Voltage Sensor event - enabled for alert
       02 c0 01 01 00 ff ff 02 ff 01 95 0a 00 00 00 00 00 00 00 00 00
       PEF(03): 04 Fan Failure event - enabled for alert
       03 c0 01 01 00 ff ff 04 ff 01 95 0a 00 00 00 00 00 00 00 00 00
       PEF(04): 05 Chassis Intrusion event - enabled for alert
       04 c0 01 01 00 ff ff 05 05 6f 01 00 00 00 00 00 00 00 00 00 00
       PEF(05): 08 Power Supply Fault event - enabled for alert
       05 c0 01 01 00 ff ff 08 ff 6f 06 00 00 00 00 00 00 00 00 00 00
       PEF(06): 0c Memory ECC Error event - enabled for alert
       06 c0 01 01 00 ff ff 0c 08 6f 02 00 00 00 00 00 00 00 00 00 00
       PEF(07): 0f FRB Failure event - enabled for alert
       07 c0 01 01 00 ff ff 0f 06 6f 01 00 00 00 00 00 00 00 00 00 00
       PEF(08): 07 BIOS POST Error event - enabled for alert
       08 c0 01 01 00 ff ff 07 ff 6f 1c 00 00 00 00 00 00 00 00 00 00
       PEF(09): 13 Fatal NMI event - enabled for alert
       09 c0 01 01 00 ff ff 13 ff 6f 3e 03 00 00 00 00 00 00 00 00 00
       PEF(10): 23 Watchdog Timer Reset event - enabled for alert
       0a c0 01 01 00 ff ff 23 03 6f 0e 00 00 00 00 00 00 00 00 00 00
       PEF(11): 12 System Restart event - enabled for alert
       0b c0 01 01 00 ff ff 12 ff 6f 02 00 00 00 00 00 00 00 00 00 00

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 version of pefcon-
       fig and any bug fix list.


3.9     SENSOR    (i_sensor)

SENSOR(8)							    SENSOR(8)

NAME
       sensor - show Sensor Data Records

SYNOPSIS
       sensor [-acmpstwx -i id -n snum -h tval -l tval -NUPRETVF]

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	 sys-
       tem.   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 available via IPMI.

OPTIONS
       Command line options are described below.

       -a snum
	      ReArms the sensor number for events

       -c     Shows SDRs for the Child MCs on a PICMG or ATCA system.

       -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.

       -m 002000
	      Show SDRs for a specific MC (e.g. bus 00, sa 20, lun 00).	 This
	      would be used for PICMG or ATCA blade systems.

       -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
	      runlevel.	 For Windows, the filename is thresholds.cmd.

       -r     Show Raw SDR bytes also.

       -s     Show sensor list in  a  simpler  format  without	uninterpreted
	      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 nodename is speci-
	      fied, 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Callback level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.

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 version of sensor
       and any bug fix list.


3.10    SHOWSEL   (i_sel)

SHOWSEL(8)							   SHOWSEL(8)

NAME
       showsel - show firmware System Event Log records

SYNOPSIS
       showsel [-clswvx -N node -P/-R pswd -U user -ETVF]

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, incremen-
       tally 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 nodename is  speci-
	      fied,  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_PASS-
	      WORD.

       -F drv_t
	      Force  the  driver  type to one of the followng: imb, va, open,
	      gnu, landesk, lan2, lan, kcs, smb.  The default  is  to  detect
	      any available driver type and use it.

       -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=Callback  level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes, do prompt the user  for  the	 IPMI  LAN  remote  password.
	      Alternatives for the password are -E or -P.

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 version of showsel
       and any bug fix list.


3.11    TMCONFIG  (i_serial)

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	  [-bcdflq#rsxB	 -m0  -m1  -n  ser_chan	 -u  user  -p  passwd
       -NUPRETVF]

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	 com-
       mand-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 protected by a username/pass-
       word login, which can be specified 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	pass-
	      word.

       -c     Configure	 and enable the Serial Port EMP parameters for Termi-
	      nal Mode management functions, shared with BIOS  Console	Redi-
	      rection.	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.

       -f     Specifies the Flow Control for the Serial EMP.  0 means no flow
	      control, and 1 means RTS/CTS flow control (default).  This must
	      match the BIOS Serial Console setting.

       -l     Show LAN Parameters. This option reads  and  displays  the  LAN
	      Parameter configuration also.

       -m0    Switch the Serial Port MUX to Baseboard/BIOS Console operation.
	      Set no other configuration parameters.

       -m1    Switch the Serial Port MUX to Terminal Mode management.  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.

       -#     Same as -q below.

       -q     Specify an alternate user number for the EMP Username from  the
	      -u option.  This is normally user number 2, 3, or 4, where 3 is
	      the default.  The maximum number of users is 15.

       -r     Read Only.  This option just reads the Serial Parameter config-
	      uration 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 Baseboard Console operation.

       -t     Configure and enable the Serial Port EMP parameters for  Termi-
	      nal  Mode	 management functions, shared with BIOS Console Redi-
	      rection.	Same as -c, but easier to remember.

       -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 speci-
	      fied, will be set for user 3, unless option -q is specified.

       -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.

       -x     Causes extra debug messages to be displayed.

       -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 nodename is  speci-
	      fied, the IPMI LAN interface is used.  Otherwise the local sys-
	      tem 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_PASS-
	      WORD.

       -F drv_t
	      Force  the  driver  type to one of the followng: imb, va, open,
	      gnu, landesk, lan2, lan, kcs, smb.  The default  is  to  detect
	      any available driver type and use it.

       -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=Callback  level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes, do prompt the user  for  the	 IPMI  LAN  remote  password.
	      Alternatives for the password are -E or -P.

EXAMPLES
       tmconfig -t (or -c)
	      Enables  Terminal	 Mode  management functions, shared with BIOS
	      Serial Console redirection.  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 con-
	      sole 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 informa-
       tion.

DEPENDENCIES
       The tmconfig utility is intended to configure the EMP serial  port  on
       the  server for shared access between BMC/IPMI functions and BIOS Con-
       sole 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, 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 applica-
       tion.

       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 functions.  On your system, run "tmcon-
       fig  -r"	 to check whether Serial Param(29): "Terminal Mode Config" is
       supported.  If not, configure Basic Mode via "tmconfig -s".

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 some non-Intel 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=ttyS1,19200n8 console=tty0"
       (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
	 default 0
	 timeout 8
	 #These two lines are not needed, just the kernel console=
	 # serial --unit=1 --speed=19200 --word=8 --parity=no --stop=1
	 # terminal --timeout=10 serial console
	 title linux
	   # Using COM2
	   kernel (hd0,0) /vmlinuz  root=/dev/sda2  console=ttyS1,19200n8 console=tty0
	   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/init-
       tab:
	 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

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 version of tmcon-
       fig and any bug fix list.


3.12    WDT       (i_wdt)

WDT(8)								       WDT(8)

NAME
       wdt - display and set WatchDog Timer parameters

SYNOPSIS
       wdt [-adelrtx -N node -P/-R pswd -U user -ETVF]

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 watchdog timers  in
       Linux is to use the /dev/watchdog interface.  This utility is an exam-
       ple 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 actually 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 sec-
	      onds (2 minutes).

       -x     Causes extra debug messages to be displayed.

       -N nodename
	      Nodename	of the remote target system.  If a nodename is speci-
	      fied, 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_PASS-
	      WORD.

       -F drv_t
	      Force the driver type to one of the followng:  imb,  va,	open,
	      gnu,  landesk,  lan2,  lan, kcs, smb.  The default is to detect
	      any available driver type and use it.

       -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=Callback level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes,  do	prompt	the  user  for	the IPMI LAN remote password.
	      Alternatives for the password are -E or -P.

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 version of wdt and
       any bug fix list.


3.13    ISOLCONSOLE (i_sol)"

ISOLCONSOLE(8)						       ISOLCONSOLE(8)

NAME
       isolconsole - an IPMI Serial-Over-LAN Console application

SYNOPSIS
       isolconsole [-a -d -e -x -NUPETVF]

DESCRIPTION
       This utility starts an IPMI Serial-Over-LAN console session.  The tar-
       get system/node must first have its BIOS serial parameters configured,
       its  IPMI serial (tmconfig) and lan (pefconfig) parameters configured,
       and usually its Linux grub and inittab  parameters  configured  before
       SOL sessions can be started.
       This  utility  uses either the IPMI LAN 1.5 or 2.0 SOL interface.  The
       1.5 SOL interface is specific to Intel BMCs, while any  IPMI  2.0  BMC
       should support 2.0 SOL.

OPTIONS
       -a     Activate	the SOL Console session, and enter console mode.  Use
	      the escape character (’~’) to exit the session.

       -d     Deactivate the SOL Console session.  Use this if	the  previous
	      session was aborted abnormally and starting a new session gives
	      an error.

       -e     Turn Encryption off in negotiation when activating  a  session.
	      By  default,  encryption is on for Serial-Over-LAN console ses-
	      sions.

       -x     Causes extra debug messages to be displayed.

       -N nodename
	      Nodename of the remote target system.  If a nodename is  speci-
	      fied,  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_PASS-
	      WORD.

       -F drv_t
	      Force  the  driver  type to one of the followng: imb, va, open,
	      gnu, landesk, lan2, lan, kcs, smb.  The default  is  to  detect
	      any supported driver type and use it.

       -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=Callback  level,
	      2=User   level,	3=Operator   level,   4=Administrator	level
	      (default), 5=OEM level.

       -Y     Yes, do prompt the user  for  the	 IPMI  LAN  remote  password.
	      Alternatives for the password are -E or -P.

EXAMPLES
       isolconsole -a -N nodename -U username -P password
       Starts  an SOL console session to the nodename.	Detect the lan proto-
       col.

       isolconsole -a -N nodename -U username -P password  -Flan2
       Starts an SOL console session to the nodename.  Force lan protocol  to
       2.0.

SEE ALSO
       alarms(8)  bmchealth(8)	fruconfig(8)  getevent(8)  hwreset(8) pefcon-
       fig(8) sensor(8) showsel(8) tmconfig(8) wdt(8) icmd(8) ipmiutil(8)

WARNINGS
       See http://ipmiutil.sourceforge.net/ for the latest  version  of	 icmd
       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


4.6  Interpreting newer PECI sensors for CPU Temperature

The newer CPUs do more monitoring internally rather that using absolute 
temperature thresholds from the BMC.  The CPU knows best what its 
thresholds  should be, and the thresholds may be different for different 
CPUs.  So, there are several IPMI sensors that expose the state of the 
CPU temperature via the newer PECI interface. 

1) Thermal Margin - A negative value indicating margin to throttling point.  
   Once margin reaches 0, throttling begins
2) Therm Control % - Reports the percentage of time within a 5.8 second 
   sliding window during which the processor was throttling
3) VRD Hot - Discrete sensor indicating one of the phases of the processor 
   VRD circuit on the baseboard has exceeded it's limit.  This is not 
   indicative of CPU - just the VR circuit on the baseboard.  

Therm Margin is the one to watch if you want max performance without 
throttling.  If it reaches 0, you will start losing performance to throttling.


4.7  How to configure a system for IPMI LAN

Below is a sample IPMI LAN configuration with IPMI LAN enabled, 
PEF Alerts enabled, and 2 users configured for IPMI LAN.  

The key unique LAN parameters that must be configured for basic
IPMI LAN functionality are: 3,4,5,6,12,13, plus the
Channel Access Mode and User Access.  
Additional parameters for PEF and SOL are shown below also.

Defaults for required parameters are detected by ipmiutil lan, except 
for the username, password, and the BMC LAN IP if it is not shared.  
The detection uses the OS LAN configuration to find the gateway IP,
MAC addresses, mask, etc.  

Running "ipmiutil -e -u user2 -p password2" would set up all required
IPMI LAN parameters if the OS and BMC share an IP address.  If not,
the -I parameter should be added to specify the BMC IP.  Note that -e 
also sets up the PEF table for events, but the channel is not enabled 
for PEF events unless an Alert destination is specified, either in 
snmpd.conf or via -A.  You can use -l instead of -e if you want to
set up the LAN but not the PEF table.

Note that the BMC LAN protocol works only from remote systems. 
The BMC LAN cannot recognize LAN commands from the local system
because those requests never really go onto the physical network.
Use the non-LAN form of the command (without -N) to run locally.

# ipmiutil lan -r
ipmiutil ver 1.8
pefconfig ver 1.64 
-- BMC version 0.53, IPMI version 2.0 

pefconfig: GetPefEntry ...
PEFilter(01): 01 Temperature Sensor event - enabled for alert
PEFilter(02): 02 Voltage Sensor event - enabled for alert
PEFilter(03): 04 Fan Failure event - enabled for alert
PEFilter(04): 05 Chassis Intrusion event - enabled for alert
PEFilter(05): 08 Power Supply Fault event - enabled for alert
PEFilter(06): 0c Memory ECC Error event - enabled for alert
PEFilter(07): 0f FRB Failure event - enabled for alert
PEFilter(08): 07 BIOS POST Error event - enabled for alert
PEFilter(09): 13 Fatal NMI event - enabled for alert
PEFilter(10): 23 Watchdog Timer Reset event - enabled for alert
PEFilter(11): 12 System Restart event - enabled for alert
PEFilter(12): 20 OS Critical Stop event - enabled for alert
PEFilter(13): 02 Power Redundancy Lost event - enabled for alert
PEF Control: 01 PEFenable 
PEF Actions: 2f Alert PwrDn Reset PwrCyc DiagInt 
PEF Startup Delay: 60 sec
PEF Alert Startup Delay: 60 sec
PEF Alert Policy[1]: 01 18 11 00 Chan[1] Dest[1] Enabled 
PEF Alert Policy[2]: 02 00 00 00 Disabled 
PEF Alert Policy[3]: 03 00 00 00 Disabled 
PEF Alert Policy[4]: 04 00 00 00 Disabled 

pefconfig: GetLanEntry for channel 1 ...
Lan Param(0) Set in progress: 00 
Lan Param(1) Auth type support: 17 None MD2 MD5 Pswd  
Lan Param(2) Auth type enables: 16 16 16 16 00 
Lan Param(3) IP address: 10 243 42 229 
Lan Param(4) IP addr src: 01 Static 
Lan Param(5) MAC addr: 00 04 23 bc ac 12 
Lan Param(6) Subnet mask: 255 255 255 0 
Lan Param(7) IPv4 header: 40 40 10 
Lan Param(10) BMC grat ARP : 01 
Lan Param(11) grat ARP interval: 04 
Lan Param(12) Def gateway IP: 10 243 42 251 
Lan Param(13) Def gateway MAC: 00 d0 06 21 eb fc 
Lan Param(14) Sec gateway IP: 0 0 0 0 
Lan Param(15) Sec gateway MAC: 00 00 00 00 00 00 
Lan Param(16) Community string: public 
Lan Param(17) Num dest: 04 
Lan Param(18) Dest type: 01 00 01 00 00 
Lan Param(18) Dest type: 02 00 01 00 00 
Lan Param(18) Dest type: 03 00 00 00 00 
Lan Param(18) Dest type: 04 00 00 00 00 
Lan Param(19) Dest address: 01 00 00 [10 243 42 217] 00 07 e9 06 15 80 
Lan Param(19) Dest address: 02 00 00 [0 0 0 0] 00 00 00 00 00 00 
Lan Param(19) Dest address: 03 00 00 [0 0 0 0] 00 00 00 00 00 00 
Lan Param(19) Dest address: 04 00 00 [0 0 0 0] 00 00 00 00 00 00 
Lan Param(192) DHCP Server IP: 0 0 0 0 
Lan Param(193) DHCP MAC Address: 00 00 00 00 00 00 
Lan Param(194) DHCP Enable: 00 
GetChanAcc(lan), ret = 0, new value = 02
  Access = Always Avail, PEF Alerts Enabled
Channel Access Mode(Lan): 02 04 
GetSOL for channel 1 ...
SOL Enable: 01 enabled
SOL Auth: 02 User  
SOL Accum Interval: 04 32  20 msec
SOL Retry Interval: 06 14  200 msec
SOL nvol Baud Rate: 07 19.2k
SOL vol Baud Rate: 00 nobaud
SOL Payload Access(1,1): 02 00 00 00 enabled
SOL Payload Support(1): 03 00 15 00 00 00 00 00 
Get User Access(1): 04 02 01 14 IPMI, Admin  ()
Get User Access(2): 04 02 01 14 IPMI, Admin  (root)
Get User Access(3): 04 02 01 02 User   (test)
Get User Access(4): 04 02 01 02 User   ()
pefconfig: completed successfully


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

The showselmsg.dll needs to be copied into the %SystemRoot%\System32
directory and then run showsel.reg, so that the Windows EventLog service
can find information about the showsel events.  
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://www.intel.com by searching downloads 
   for IMB driver.

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 is used.  
The ipmiutil buildwin.cmd shows how to compile and link 
the lib and exe files, although many people prefer to do 
builds with the Microsoft VisualStudio project GUI.  
The build environment assumes that VisualStudio 6.0 VC98 or
later is installed. 

Before running buildwin.cmd, first download the contributed
files for Windows (getopt.* and openssl).
A copy of these files is available from 
   http://ipmiutil.sf.net/FILES/ipmiutil-contrib.zip
See getopt.c and getopt.h from GNU at
   http://svn.xiph.org/trunk/ogg-tools/oggsplit/.
See openssl at http://www.openssl.org/source/openssl-0.9.7l.tar.gz.

Copy the getopt.c & getopt.h into the util directory.  
>   copy getopt.*   util
Build a copy of openssl for Windows, and copy the built 
openssl files needed to lib & inc.
Follow its build instructions from INSTALL.W32 for VC++.
>   copy libeay32.lib  lib
>   copy ssleay32.lib  lib
>   copy libeay32.dll  util
>   copy ssleay32.dll  util
>   mkdir   lib\lanplus\inc\openssl
>   copy openssl\*.h   lib\lanplus\inc\openssl


--------------------------
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:

Note: completion codes 0x80-0x9f may vary depending on the command 

Code  Dec  Description
----  ---  -----------------------------------------
0x00,   0, "Command completed successfully",
0x80, 128, "Invalid Session Handle or Empty Buffer",
0x81, 129, "Lost Arbitration",
0x82, 130, "Bus Error",
0x83, 131, "NAK on Write - busy",
0x84, 132, "Truncated Read",
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 driver source       http://downloadfinder.intel.com/scripts-df-external/Product_Search.asp?Prod_nm=ipmi*driver*source
Intel imb driver for Windows  http://downloadfinder.intel.com/scripts-df-external/Product_Search.aspx?Prod_nm=imb+driver
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

