dogread, dogreset, dogarm, dogdisarm, deadman, and rc.watchdog.

These all have to be run by root, as they access I/O ports.  rc.watchdog
can be invoked by rc.local; it runs dogarm, which sets the timer to
5 minutes and causes a reset on expiration.  Then, it runs dogreset, which
starts the timer, and finally it runs deadman.  deadman wakes every minute
and resets the timer.

Use dogdisarm to disable the system reset on expiration.

Use dogread to read the status of the time - the last two items are the
timer set count (3000=5 minutes) and the current count.  Resolution is
100 msec.

Also, there's sdrread at this location, which reports temperatures, 
voltages, etc... 


*** Original README Follows ***

This package contains very rough code to read out sensor data records and
sensor values (temperature, fan speed, voltages) on the newer Intel
motherboards which contain a BMC and conform to the draft IPMI specification.
Also included are codes to arm, disarm, read, and reset the watchdog timer.

The ipmitool and sdrread programs are known to work with the N440BX
motherboard from Intel.  They may also work with the T440BX and Intel Xeon
server motherboards.

To start with, you must obtain the "ipmitool.zip" file from the Intel web
site, by selecting the "Developer Test Tool" download link on the following
page: 
  http://developer.intel.com/design/servers/ipmi/tools.htm

Next, unzip this file in the directory containing this README.  Perform the
following commands:

  unzip ipmitool.zip          # to unzip the file
  rm *.EXE MAKEFILE           # don't need the included executable or Makefile

  for f in [A-Z]*.* ; do                       # convert all uppers to all lowers
    mv $f `echo $f | tr '[A-Z]' '[a-z]'`
  done

  patch -p0 --verbose < ipmi.diff            # patch to get Linux versions

To make, type
  make all

The ipmitool executable corresponds to IPMITOOL.EXE described in Intel's
README.  The sdrread tool dumps out all sensor data records, then reads all
corresponding sensors and converts the raw readings to scaled outputs using
the fit parameters in the SDR's.

Both ipmitool and sdrread need to run as root, as they access I/O registers.
Following the instructions from Intel in readme.txt, you can test ipmitool by
attempting to display the BMC version number:

  mynode# ./ipmitool 20 18 1
  20 1C 01 00 05 01 00 40 10 1F

Note that the second example, './ipmitool C0 18 1', fails on a N440BX:

  mynode# ./ipmitool C0 18 1
  Error sending command to IPMB.
  I2C retry error

The sdrread tool dumps the sensor data records as well as reports the current
values of all sensors.

The watchdog tools consist of dogarm, dogdisarm, dogreset, dogread, and deadman.
dogarm configures the hardware watchdog timer to perform a hard reset after the
time, set for 5 minutes, expires.  dogreset must be called to start and to reset
the timer.  dogread reports the configuration of the watchdog timer, including
the initial count and the current count.  dogdisarm resets the watchdog timer
to default values, disabling the hard system reset at expiration.  deadman resets
the watchdog timer every minute; it runs in a real time scheduler queue at 
maximum priority, so if any system scheduling is occurring deadman will reset
the counter in time to prevent system resets at expiration.  A critial system
will typically invoke dogarm, dogreset, and deadman in rc.local. 

Documentation for the IPMI protocol is available at links from:
  http://developer.intel.com/design/servers/ipmi/

Though there are inconsistencies, the N440BX motherboard seems to conform to
version 0.90 of the IPMI specification.

Please send error and success reports to:
  Don Holmgren
  Fermilab
  djholm@fnal.gov
