IPMI – A Gentle Introduction
with OpenIPMI
Corey Minyard <minyard@acm.org>
Montavista Software
November 5, 2021
2
Preface
This document describes IPMI in great detail; how it works and what it does and does not do. It starts
from the basics and moves into details. If you’ve heard about IPMI and want to find out more, this is the
document for you. If you know something about IPMI but wish to find out more, you can gloss over the
introductory text and dive more into the details.
This document also descr i bes OpenIPMI and how to use that library. A b asic understanding of IPMI is
required to use OpenIPMI. However, OpenIPMI hides the details of IPMI like messages and data formats;
if you do not care about those things you can skip th ose sections.
IPMI stand s for Intelligent Platform Management Interface. Not a great name, but not too bad. It is
intelligent (in a manner of speaking, anyway) because it req ui r es a processor besides the main processor that
is always on and maintaining the system. In most s ys te ms with IPMI, you can monitor and maintain the
system even when the main processor is turned off (though the system must generally be plugged in).
Platform means that IPMI deals with the platform, not the software running on the platform. Software
management is mostly out of the scope of IPMI
Management Interface means that the management system uses IPMI to talk to the system to monitor
and perform maintenance on the platform. IPMI is mostly about monitoring, though it does have a few minor
management functions. However, many companies and organizations have built more extensive management
control using OEM extensions to IPMI.
The IPMI specification[2], of course, has the details, but they can be obscure. This document hopefully
provides an easier to understand introduction to IPMI.
i
ii PREFACE
Contents
Preface i
Acronyms ix
1 Management, Systems, and IPMI 1
1.1 IPMI Impleme ntation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 System Typ e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 OpenIPMI 9
2.1 The User View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 OpenIPMI Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Event-Driven Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 The OS Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.5 OpenIPMI Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.6 Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 OpenIPMI Include Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.1 Files the normal user deals with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2 Files dealing with messaging interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.3 File for system configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.4 Semi-internal includes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Starting Up OpenIPMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Creating O penIPMI Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.1 Domain Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.2 Domain Fully Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.3 Redundancy in Domain Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.4 Domain Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Use Cases 27
3.1 Simple Hardware Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Redundant S ys t ems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Monitoring Clusters of Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Bus Syst ems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
iii