README
1
2 ipmitool
3 Duncan Laurie
4 duncan (a] iceblink.org
5
6 Overview
7 ========
8 ipmitool is a utility for managing and configuring devices that support
9 the Intelligent Platform Management Interface. IPMI is an open standard
10 for monitoring, logging, recovery, inventory, and control of hardware
11 that is implemented independent of the main CPU, BIOS, and OS. The
12 service processor (or Baseboard Management Controller, BMC) is the brain
13 behind platform management and its primary purpose is to handle the
14 autonomous sensor monitoring and event logging features.
15
16 The ipmitool program provides a simple command-line interface to this BMC.
17 It features the ability to read the sensor data repository (SDR) and print
18 sensor values, display the contents of the System Event Log (SEL), print
19 Field Replaceable Unit (FRU) inventory information, read and set LAN
20 configuration parameters, and perform remote chassis power control.
21
22
23 Background
24 ==========
25 I originally wrote ipmitool while between projects and employeed at Sun
26 Microsystems. Sun had just embarked on a new line of general-purpose x86
27 servers that inclued an OEM Intel board with an IPMIv1.5 BMC on board.
28 It started with an idea that remote chassis power control would be a handy
29 feature for my systems in the lab and from there it grew into a multi-
30 purpose tool that lots of people found useful. I decided to release it
31 under a BSD license and give others the chance to make use of it.
32
33 ipmitool was not written to provide large-scale (aka Enterprise) management
34 application functionality. The functionality that ipmitool proivides is
35 easily accomplished by sending simple IPMI request messages and parsing
36 the returned response. It is intended to be used by system administrators
37 who like the simplicity and scriptability of command-line utilities, as
38 well as those debugging or developing their own BMC implementations.
39
40
41 Requirements
42 ============
43 Obviously the largest requirement is hardware with a service processor
44 that supports the IPMI specification. Many x86-based servers are now
45 comming with IPMI support, check with your preferred hardware vendor
46 about available prodcuts.
47
48 Once you are certain you have the required hardware, you then need to
49 decide how you want to access the BMC. The most common case involve
50 access through the System Interface or over the LAN. (or serial, but
51 currently ipmitool does not support the serial interface)
52
53
54 System Interface
55 ----------------
56 There are multiple types of system interfaces, but they are all similar
57 enough to allow a single well-designed driver to support them all.
58 Different types of system interfaces include Keyboard Controller Style
59 (KCS), Block Transfer (BT), System Management Interface Chip (SMIC) and
60 SMBus. Different hardware vendors will have different preference and
61 implementations.
62
63 On Linux the OpenIPMI kernel driver should support all of these system
64 interfaces and it should be a simple matter of loading the right
65 kernel modules and setting up the device node to use it. The driver
66 module names vary slightly in different kernel versions, but for all
67 releases you need these two modules:
68
69 ipmi_msghandler: incoming and outgoing message handler
70 ipmi_devintf: character device interface to IPMI driver
71
72 For 2.4.x and early 2.6.x kernels you need to choose a module based on
73 the type of system interface your hardware supports. For example:
74
75 ipmi_kcs_drv: Keyboard Controller Style driver
76
77 More recent 2.6.x kernels have combined these into a single module:
78
79 ipmi_si: a universal IPMI system interface driver
80
81 See the documentation that comes with your distribution and/or kernel
82 for more information on what kernel modules are required. Once the
83 required modules are loaded and the driver has found a suitable system
84 interface to the BMC then you need to ensure the device node at
85 /dev/ipmi0 is pointing at the correct major number.
86
87 This is because OpenIPMI is given a dynamically assigned major number
88 when it is loaded, but depending on what other modules are present
89 this number may be anywhere from 254 on down. The easiest way to tell
90 is to check the output of /proc/devices and see what major number the
91 "ipmidev" device is assigned to.
92
93 There is a sample script included with ipmitool called ipmi.init that
94 can be used to automate this process at bootup.
95
96
97 LAN Interface
98 -------------
99 This is often referred to as "IPMI-over-LAN" and defines how IPMI messages
100 can be sent to and from the BMC encapsulated in Remote Management Control
101 Protocol (RMCP) packets which are then transferred as UDP datagrams.
102
103 IPMI-over-LAN is only supported with version 1.5 and higher of the IPMI
104 specification. The RMCP packet format is defined by the Alert Standard
105 Forum, and it has been followed up with the RMCP+ protocol that adds
106 encryption and payload support. The IPMIv2 specification was updated
107 accordingly to to support the RMCP+ protocol and brings with it enhanced
108 security with encryption as well as support for Serial over LAN.
109
110 There are different types of LAN interfaces as well. Some systems have
111 shared management networks where the NIC will intercept UDP packets to
112 port 623 and redirect them to the BMC over SMBUS. This type of LAN
113 interface requires that the BMC be configured with the same settings that
114 the system uses. It also suffers from an increased security risk just by
115 the nature of sharing that interface with normal traffic.
116
117 I have also seen bugs in some implementations that have rendered the
118 IPMI-over-LAN feature "dangerous" to enable in some situations. (in
119 particular there can be an issue with RPC because it will sometimes choose
120 to use port 623 and you will lose response packets...)
121
122 There is a sample shell script included with ipmitool called bmclanconf
123 that can be used to simplify the LAN settings configuration process using
124 the System Interface to configure the settings. In some cases the
125 hardware will come with a utility (often a DOS bootable CD) for configuring
126 enabling the LAN interface as well.
127
128 In order to support the IPMIv2.0 interface you must have an OpenSSL library
129 with the required encrytion functions. Recent distributions should have
130 no problems. The IPMIv1.5 interface will attempt to use OpenSSL for MD5
131 hash function at compile time but if that is not found it will use an
132 internal library.
133
134
135 Usage
136 =====
137 All invocations of ipmitool require specifying an interface to use, unless
138 you want to use the default interface as set at compile time. Each call
139 must also specify a command to run. You can see the list of supported
140 interfaces and which is default as well as a list of top level commands in
141 the usage output available with the -h option:
142
143 usage: ipmitool [options...] <command>
144
145 -h This help
146 -V Show version information
147 -v Verbose (can use multiple times)
148 -c Display output in comma separated format
149 -I intf Interface to use
150 -H hostname Remote host name for LAN interface
151 -p port Remote RMCP port [default=623]
152 -L level Remote session privilege level [default=USER]
153 -A authtype Force use of authtype NONE, PASSWORD, MD2 or MD5
154 -U username Remote session username
155 -P password Remote session password
156 -f file Read remote session password from file
157 -a Prompt for remote password
158 -E Read password from IPMI_PASSWORD environment variable
159 -m address Set local IPMB address
160 -t address Bridge request to remote target address
161
162 Interfaces:
163 open Linux OpenIPMI Interface [default]
164 imb Intel IMB Interface
165 lan IPMI v1.5 LAN Interface
166 lanplus IPMI v2.0 RMCP+ LAN Interface
167
168 Commands:
169 raw Send a RAW IPMI request and print response
170 lan Configure LAN Channels
171 chassis Get chassis status and set power state
172 event Send pre-defined events to BMC
173 bmc Print BMC status and configure global enables
174 sdr Print Sensor Data Repository entries and readings
175 sensor Print detailed sensor information
176 fru Print built-in FRU and scan SDR for FRU locators
177 sel Print System Evelnt Log
178 sol Configure IPMIv2.0 Serial-over-LAN
179 user Configure BMC users
180 channel Configure BMC channels
181 session Print session information
182 shell Launch interactive IPMI shell
183 exec Run list of commands from file
184 set Set runtime variable for shell and exec
185
186
187 Commands
188 ========
189 More help on the supported commands can be found by running them with the
190 help argument, for example "chassis help". There are a few commands with
191 special meaning:
192
193 > shell: This command will launch an shell interface to the ipmitool
194 command set. You can use this for interactively entering commands to
195 monitor system status. An example session:
196
197 # ipmitool -I open shell
198 ipmitool> chassis status
199 System Power : off
200 Power Overload : false
201 Power Interlock : inactive
202 Main Power Fault : false
203 Power Control Fault : false
204 Power Restore Policy : always-off
205 Last Power Event : command
206 Chassis Intrusion : active
207 Front-Panel Lockout : inactive
208 Drive Fault : false
209 Cooling/Fan Fault : false
210 ipmitool> user list 7
211 ID Name Callin Link Auth IPMI Msg Channel Priv Limit
212 1 true false true ADMINISTRATOR
213 ipmitool> exit
214
215 > exec: This command will read a text file and execute ipmitool commands
216 in sequence. It can be used for scriptable commands:
217
218 # cat lansetup.scr
219 lan set 7 ipsrc static
220 lan set 7 ipaddr 10.1.1.10
221 lan set 7 netmask 255.255.255.0
222 lan set 7 defgw ipaddr 10.1.1.254
223 # ipmitool -I open exec lansetup.scr
224 Setting LAN IP Address to 10.1.1.10
225 Setting Lan Subnet Mask to 255.255.255.0
226 Setting Lan Default Gateway IP to 10.1.1.254
227
228 > set: This command can be used by the shell and exec modes to configure
229 various session parameters:
230
231 hostname <host> Session hostname
232 username <user> Session username
233 password <pass> Session password
234 privlvl <level> Session privilege level force
235 authtype <type> Authentication type force
236 localaddr <addr> Local IPMB address
237 targetaddr <addr> Remote target IPMB address
238 port <port> Remote RMCP port
239 csv [level] enable output in comma separated format
240 verbose [level] Verbose level
241
242 # cat getstatus.scr
243 set hostname sf-v20z-1
244 set password admin
245 chassis status
246 # ipmitool -I lan exec getstatus.scr
247 Set session hostname to lx50
248 Set session password
249 System Power : off
250 Power Overload : false
251 Power Interlock : inactive
252 Main Power Fault : false
253 Power Control Fault : false
254 Power Restore Policy : always-off
255 Last Power Event : command
256 Chassis Intrusion : active
257 Front-Panel Lockout : inactive
258 Drive Fault : false
259 Cooling/Fan Fault : false
260
261
262 ipmievd
263 =======
264 Included with ipmitool is another utility called ipmievd that is a daemon
265 which will listen for events from the BMC that are being sent to the SEL
266 and also log those messages to syslog. By default when run (as root) with
267 no arguments it will daemonize and poll on the OpenIPMI device waiting for
268 an event notification. Upon receipt of an event it will log it to syslog
269 with the LOG_LOCAL4 facility. You can test ipmievd by sending test events
270 over the LAN interface with ipmitool:
271
272 remote# ipmievd
273
274 local$ ipmitool -I lan -H lx50 -P admin event help
275 usage: event <num>
276 1 : Temperature - Upper Critical - Going High
277 2 : Voltage Threshold - Lower Critical - Going Low
278 3 : Memory - Correctable ECC
279 local$ ipmitool -I lan -H lx50 -P admin event 1
280 Sending Temperature - Upper Critical - Going High event to BMC
281 local$ ipmitool -I lan -H lx50 -P admin event 2
282 Sending Voltage Threshold - Lower Critical - Going Low event to BMC
283 local$ ipmitool -I lan -H lx50 -P admin event 3
284 Sending Memory - Correctable ECC event to BMC
285
286 remote# tail /var/log/messages (timestamps removed)
287 ipmievd: Waiting for events...
288 ipmievd: Temperature Sensor 30 - Upper Critical - going high
289 ipmievd: Voltage Sensor 60 - Lower Critical - going low
290 ipmievd: Memory Sensor 01 - Correctable ECC
291
292
293 Resources
294 =========
295 IPMItool homepage
296 http://ipmitool.sourceforge.net
297
298 IPMItool manpage
299 http://ipmitool.sourceforge.net/manpage.html
300
301 IPMItool overview paper from Linux.conf.au 2004
302 http://ipmitool.sourceforge.net/lca2004_ipmitool.pdf
303
304 Intelligent Platform Management Interface specification
305 http://www.intel.com/design/servers/ipmi/spec.htm
306
307 OpenIPMI project: Linux IPMI kernel driver and userland library
308 http://openipmi.sourceforge.net
309
310