Open Source IPMI Software Guide
IPMI, the Intelligent Platform Management Interface, as a popular hardware management standard that is implemented into almost all major commercial servers. It can be used to monitor hardware status, diagnose problems, manage power, access the remote console, and help with inventory management. There are a lot of open source projects that help you manage your servers with IPMI. The following is a guide to the major open source IPMI software you can use. Higher level monitoring software, such as Ganglia, Nagios, and Cacti, all use plugins for the software below, so higher level software will not be discussed in this article.
IPMItool is the most popular open source IPMI project. It is distributed by most major open source Linux distributions, including Redhat, Suse, Debian, and Ubuntu. It also operates under BSD, Solaris, and has been ported to work in Windows under Cygwin, although it cannot work in-band under the latter. The in-band IPMI drivers supported by IPMItool are the OpenIPMI driver, Solaris BMC driver, Solaris LIPMI driver, FreeIPMI driver, and Intel IMB driver. IPMItool supports all major features of IPMI via a single command line tool. IPMItool has been released under a BSD license.
For most users, IPMItool is the software to use. It doesn't offer anything particularly fancy, but it gets the job done. You'll be able to use it to power your servers, read sensors, diagnose hardware errors via the SELL, perform serial-over-LAN to access the console, and more. OEM specific extensions for HP, Dell, Supermicro, and many other vendors are also supported. It also supports some IPMI standards extensions, such as DCMI. The major downside to IPMItool is that libraries are not available, so programming through IPMItool is typically done through scripting. If you need programmable interfaces, see some of the projects below.
There two components to OpenIPMI, both of which are referred to as OpenIPMI. This often confuses those first hearing about this project. There is a kernel driver and a set of userspace libraries/tools in OpenIPMI. While they were originally distributed together, they are now separate. This sometimes leads to confusion.
The OpenIPMI kernel driver is now distributed as the default Linux kernel IPMI driver, and is sometimes referred to as the "OpenIPMI driver". The OpenIPMI kernel driver offers a system device (e.g. /dev/ipmi0) for IPMI software to communicate to the BMC. The OpenIPMI driver is independent of the OpenIPMI libraries and tools. Other software, such as IPMItool, FreeIPMI, and IPMIutil, support the OpenIPMI kernel driver as an interface to perform in-band communication. An OpenIPMI compatible driver also exists for FreeBSD.
The OpenIPMI libraries supply a programmable API to do IPMI communication, both in-band and out-of-band. It supports C, Perl, and Python libraries. For local IPMI communication, it only supports the OpenIPMI kernel driver. Along with its userspace package, several tools are supported, such as a command shell and GUI. These tools collectively provide most of the major IPMI features, although not with the breadth of options and features supported by IPMItool, FreeIPMI, and IPMIUtil.
The OpenIPMI kernel driver is distributed by all Linux distributions, since it is a part of the Linux kernel. The OpenIPMI userspace libraries and tools and distributed by most major Linux distributions as well. OpenIPMI is released under a GPL license for the kernel driver and the LGPL license for the userspace software.
Most users will still stick to IPMItool for their userspace needs, as the OpenIPMI userspace tools are a bit more advanced and will be confusing to most. Those looking for programmable interfaces or scriptable shells, may find OpenIPMI a bit better for their needs.
FreeIPMI provides both libraries and tools for IPMI communication. For in-band communication, FreeIPMI supports its own KCS driver, its own SSIF driver, the OpenIPMI kernel driver, and the Sun BMC driver. FreeIPMI is supported under Linux, BSD, Solaris, and Windows under Cygwin. Similar to IPMItool, the in-band communication is not supported under Cygwin. FreeIPMI is distributed in most major Linux and BSD distributions. FreeIPMI is released under a GPL license.
The collection of command line tools in FreeIPMI support approximately the same breadth of options and features of IPMItool. Some additional extension standards, such as DCMI or the Intel Power Manager, are also supported. A large variety of OEM vendor support from Dell, Fujitsu, Supermicro, and others is also supported. A C library is the only library available, but it is there for those looking for a programmable interface.
The predominant advantage of using FreeIPMI is it contains a large set of features for running IPMI in large cluster or HPC environments. These features are not very noticeable in smaller environments with just a few servers.
IPMIutil is similar to FreeIPMI, offering multiple command line tools to perform all major features of IPMI. It supports the largest number of in-band interfaces, including the OpenIPMI driver, Intel IMB driver, FreeIPMI driver, LANDesk ldipmi daemon, VALinux driver, Solaris BMC, Microsoft IPMI driver, and direct userspace I/O via KCS or SSIF/SMBus. It is the only open source project that supports Windows natively, both for in-band and out-of-band communication. Similar to IPMItool, there are no libraries available, therefore most script against IPMIutil itself. IPMIutil has been released under a BSD license. As you might suspect from the language above, IPMIUtil's predominant advantage is its ability to run in many environments. If you have a very heterogenous environment with multiple operating systems and vendors, IPMIUtil may be useful for running a single IPMI software across all hardware.