A nice overview of IPMI can be found here, if you are interested.
OpenIPMI consists of two main parts: A device driver that goes into the Linux kernel, and a user-level library that provides a higher-level abstraction of IPMI and generic services that can be used on any operation system.
A new document is being created to support OpenIPMI, it helps document a lot of IPMI proper and reduces (and hopefully eliminates) the need to look at the IPMI specification. It is still very rough and incomplete, but is probably useful in its current form. This is also included in current releases of OpenIPMI. It will be udpated as time goes by.
The Open IPMI Linux device driver is designed as a full-function IPMI device driver with the following features:
If you use the code as a module with high-res timers, you might need this patch because some symbols are not exported from the high-res timer code.
The releases are on the sourceforge page. Each release has a release relative to a plain kernel.org kernel (eg linux-ipmi-2.6.13-v36.1.base.diff). There are generally no diffs from previous version for the 2.6 kernel as the patches are pushed into the kernel pretty quickly. For 2.4 kernels, there are sometimes diffs from the previous version. Support has ceased for the 2.4 kernel except for serious bug fixes. The patches present are:
This document describes the design. The user's guide is what comes in the kernel Documentation directory.
Raw access to IPMI is rather difficult to use. Parsing SDRs, scanning for devices on the IPMB bus, scanning for events, and handling all the pieces is rather complicated. The OpenIPMI library provides a higher-level abstraction of this, the user of the OpenIPMI library deals directly with sensors and entities and does not have to worry about the lower-level details of IPMI.
Note that the OpenIPMI library is not Linux-specific. It was written with an os-layer so it could be ported to other operating systems. Of course, it works by default on Linux, but I would like to see it running on other operating systems. It includes an IPMI LAN interface, an interface for the OpenIPMI driver, but interfaces for other drivers and connections could be written.
The OpenIPMI library also includes the ipmicmd program, a small program that lets you inject and receive messages. You can register for incoming commands, set your source IPMB address, and other nifty things, too.