1BMC-DEVICE(8)                   System Commands                  BMC-DEVICE(8)
2
3
4

NAME

6       bmc-device - perform advanced BMC commands
7

SYNOPSIS

9       bmc-device [OPTION...]
10

DESCRIPTION

12       bmc-device  supports a variety of IPMI commands to perform advanced BMC
13       functions.  This tool is primarily used for development debugging,  BMC
14       error  recovery,  retrieving  detailed technical information, and other
15       advanced purposes. Most IPMI users will not need to use this tool. Some
16       of the bmc-device commands are not supported on all motherboards.
17
18       Listed  below  are general IPMI options, tool specific options, trouble
19       shooting information, workaround information, examples, and  known  is‐
20       sues. For a general introduction to FreeIPMI please see freeipmi(7).
21

GENERAL OPTIONS

23       The following options are general options for configuring IPMI communi‐
24       cation and executing general tool commands.
25
26       -D IPMIDRIVER, --driver-type=IPMIDRIVER
27              Specify the driver type to use instead of doing an  auto  selec‐
28              tion.   The  currently  available  outofband drivers are LAN and
29              LAN_2_0, which perform IPMI 1.5 and IPMI 2.0  respectively.  The
30              currently  available  inband  drivers  are  KCS, SSIF, OPENIPMI,
31              SUNBMC, and INTELDCMI.
32
33       --disable-auto-probe
34              Do not probe in-band IPMI devices for default settings.
35
36       --driver-address=DRIVER-ADDRESS
37              Specify the in-band driver address to be  used  instead  of  the
38              probed  value. DRIVER-ADDRESS should be prefixed with "0x" for a
39              hex value and '0' for an octal value.
40
41       --driver-device=DEVICE
42              Specify the in-band driver device path to be used instead of the
43              probed path.
44
45       --register-spacing=REGISTER-SPACING
46              Specify  the  in-band  driver  register  spacing  instead of the
47              probed value. Argument is in bytes (i.e. 32bit register  spacing
48              = 4)
49
50       --target-channel-number=CHANNEL-NUMBER
51              Specify  the  in-band  driver target channel number to send IPMI
52              requests to.
53
54       --target-slave-address=SLAVE-ADDRESS
55              Specify the in-band driver target slave number to send IPMI  re‐
56              quests to.
57
58       -h      IPMIHOST1,IPMIHOST2,...,      --hostname=IPMIHOST1[:PORT],IPMI‐
59       HOST2[:PORT],...
60              Specify the remote host(s) to communicate with.  Multiple  host‐
61              names  may  be separated by comma or may be specified in a range
62              format; see HOSTRANGED SUPPORT below. An optional  port  can  be
63              specified with each host, which may be useful in port forwarding
64              or similar situations.  If specifying an IPv6 address and  port,
65              use the format [ADDRESS]:PORT.
66
67       -u USERNAME, --username=USERNAME
68              Specify  the username to use when authenticating with the remote
69              host.  If not specified, a null (i.e. anonymous) username is as‐
70              sumed.  The  user must have atleast USER privileges in order for
71              this tool to operate fully.
72
73       -p PASSWORD, --password=PASSWORD
74              Specify the password to use when authenticationg with the remote
75              host.   If  not  specified,  a null password is assumed. Maximum
76              password length is 16 for IPMI 1.5 and 20 for IPMI 2.0.
77
78       -P, --password-prompt
79              Prompt for password  to  avoid  possibility  of  listing  it  in
80              process lists.
81
82       -k K_G, --k-g=K_G
83              Specify  the K_g BMC key to use when authenticating with the re‐
84              mote host for IPMI 2.0. If not specified, a null key is assumed.
85              To  input  the  key  in hexadecimal form, prefix the string with
86              '0x'. E.g., the key 'abc' can be entered  with  the  either  the
87              string 'abc' or the string '0x616263'
88
89       -K, --k-g-prompt
90              Prompt  for  k-g  to  avoid possibility of listing it in process
91              lists.
92
93       --session-timeout=MILLISECONDS
94              Specify the session timeout in milliseconds. Defaults  to  20000
95              milliseconds (20 seconds) if not specified.
96
97       --retransmission-timeout=MILLISECONDS
98              Specify  the  packet retransmission timeout in milliseconds. De‐
99              faults to 1000 milliseconds (1 second) if not specified. The re‐
100              transmission timeout cannot be larger than the session timeout.
101
102       -a AUTHENTICATION-TYPE, --authentication-type=AUTHENTICATION-TYPE
103              Specify  the  IPMI 1.5 authentication type to use. The currently
104              available authentication types are NONE,  STRAIGHT_PASSWORD_KEY,
105              MD2, and MD5. Defaults to MD5 if not specified.
106
107       -I CIPHER-SUITE-ID, --cipher-suite-id=CIPHER-SUITE-ID
108              Specify the IPMI 2.0 cipher suite ID to use. The Cipher Suite ID
109              identifies a set of authentication, integrity, and confidential‐
110              ity  algorithms to use for IPMI 2.0 communication. The authenti‐
111              cation algorithm identifies the algorithm  to  use  for  session
112              setup,  the  integrity algorithm identifies the algorithm to use
113              for session packet signatures, and the confidentiality algorithm
114              identifies the algorithm to use for payload encryption. Defaults
115              to cipher suite ID 3 if  not  specified.  The  following  cipher
116              suite ids are currently supported:
117
118              0 - Authentication Algorithm = None; Integrity Algorithm = None;
119              Confidentiality Algorithm = None
120
121              1 - Authentication Algorithm = HMAC-SHA1; Integrity Algorithm  =
122              None; Confidentiality Algorithm = None
123
124              2  - Authentication Algorithm = HMAC-SHA1; Integrity Algorithm =
125              HMAC-SHA1-96; Confidentiality Algorithm = None
126
127              3 - Authentication Algorithm = HMAC-SHA1; Integrity Algorithm  =
128              HMAC-SHA1-96; Confidentiality Algorithm = AES-CBC-128
129
130              6  -  Authentication Algorithm = HMAC-MD5; Integrity Algorithm =
131              None; Confidentiality Algorithm = None
132
133              7 - Authentication Algorithm = HMAC-MD5; Integrity  Algorithm  =
134              HMAC-MD5-128; Confidentiality Algorithm = None
135
136              8  -  Authentication Algorithm = HMAC-MD5; Integrity Algorithm =
137              HMAC-MD5-128; Confidentiality Algorithm = AES-CBC-128
138
139              11 - Authentication Algorithm = HMAC-MD5; Integrity Algorithm  =
140              MD5-128; Confidentiality Algorithm = None
141
142              12  - Authentication Algorithm = HMAC-MD5; Integrity Algorithm =
143              MD5-128; Confidentiality Algorithm = AES-CBC-128
144
145              15 - Authentication Algorithm = HMAC-SHA256; Integrity Algorithm
146              = None; Confidentiality Algorithm = None
147
148              16 - Authentication Algorithm = HMAC-SHA256; Integrity Algorithm
149              = HMAC_SHA256_128; Confidentiality Algorithm = None
150
151              17 - Authentication Algorithm = HMAC-SHA256; Integrity Algorithm
152              = HMAC_SHA256_128; Confidentiality Algorithm = AES-CBC-128
153
154       -l PRIVILEGE-LEVEL, --privilege-level=PRIVILEGE-LEVEL
155              Specify  the privilege level to be used. The currently available
156              privilege levels are USER, OPERATOR, and ADMIN. Defaults to  AD‐
157              MIN if not specified.
158
159       --config-file=FILE
160              Specify an alternate configuration file.
161
162       -W WORKAROUNDS, --workaround-flags=WORKAROUNDS
163              Specify  workarounds to vendor compliance issues. Multiple work‐
164              arounds can be specified separated by commas. A special  command
165              line flag of "none", will indicate no workarounds (may be useful
166              for overriding configured defaults). See WORKAROUNDS below for a
167              list of available workarounds.
168
169       --debug
170              Turn on debugging.
171
172       -?, --help
173              Output a help list and exit.
174
175       --usage
176              Output a usage message and exit.
177
178       -V, --version
179              Output the program version and exit.
180

BMC-DEVICE OPTIONS

182       The following options are specific to bmc-device.
183
184       --cold-reset
185              Perform a cold reset.
186
187       --warm-reset
188              Perform a warm reset.
189
190       --get-self-test-results
191              Output BMC self test results.
192
193       --get-acpi-power-state
194              Get ACPI system and device power state.
195
196       --set-acpi-power-state
197              Set   ACPI   power   state.   Must   be  specified  to  use  the
198              --set-acpi-system-power-state, and --set-acpi-device-power-state
199              options listed below.
200
201       --set-acpi-system-power-state=SYSTEM_POWER_STATE
202              Set  ACPI system power state. Allowed values: S0_G0, S1, S2, S3,
203              S4,  S5_G2,  S4_S5,   G3,   SLEEPING,   G1_SLEEPING,   OVERRIDE,
204              LEGACY_ON,     LEGACY_OFF,     UNKNOWN.      Used    with    the
205              --set-acpi-power-state option.
206
207       --set-acpi-device-power-state=DEVICE_POWER_STATE
208              Set ACPI device power state. Allowed values: D0, D1, D2, D3, UN‐
209              KNOWN.  Used with the --set-acpi-power-state option.
210
211       --get-lan-statistics
212              Get IP, UDP, and RMCP statistics.
213
214       --clear-lan-statistics
215              Clear IP, UDP, and RMCP statistics.
216
217       --rearm-sensor="<record_id>    [<assertion_bitmask>   <deassertion_bit‐
218       mask>]"
219              Re-arm a sensor. Re-arming a sensor informs the internal  device
220              to  reset and re-evaluate a sensor reading and events. Most sen‐
221              sors are automatically re-armed, however a rare few  do  require
222              manual re-arming. This option may also be useful to reset a sen‐
223              sor reading or event that may be stuck due to an internal  hard‐
224              ware  or  firmware  error. If the assertion_bitmask and deasser‐
225              tion_bitmask are specified, only the specific events will be re-
226              armed.  If  not specified, all possible events will be re-armed.
227              This command requires the loading of the SDR.
228
229       --get-sdr-repository-time
230              Get SDR repository time.
231
232       --set-sdr-repository-time=TIME
233              Set SDR repository time. Input format = "MM/DD/YYYY - HH:MM:SS".
234              Note  that  hours  are input in 24 hour form. Alternatively, the
235              local system time can be specified with "now".
236
237       --get-sel-time
238              Get SEL time.
239
240       --set-sel-time=TIME
241              Set SEL time. Input format = "MM/DD/YYYY - HH:MM:SS". Note  that
242              hours are input in 24 hour form. Alternatively, the local system
243              time can be specified with "now".
244
245       --get-sel-time-utc-offset
246              Get SEL time UTC offset.
247
248       --set-sel-time-utc-offset=MINUTES
249              Set SEL time UTC offset. Input is in minutes difference from UTC
250              time,  ranging  from -1440 to 1440 minutes. A special case value
251              of "none" can be specified so no UTC offset is specified.
252
253       --platform-event="[generator_id]  <event_message_format_version>  <sen‐
254       sor_type>  <sensor_number> <event_type> <event_direction> <event_data1>
255       <event_data2> <event_data3>"
256              Instruct the BMC to process the specified event data. Typically,
257              this  data will be logged to the System Event Log (SEL), but de‐
258              pending on implementation it may be processed by  other  subsys‐
259              tems such as Platform Event Filtering (PEF). The keywords asser‐
260              tion or deassertion may be used for event_direction, or the  nu‐
261              merical  values  may  be  used  instead.  The event_message_for‐
262              mat_version is 0x03 for IPMI 1.0 and 0x04 for IPMI 1.5. The gen‐
263              erator_id  above is optional, however it is required if generat‐
264              ing the event via a system interface (i.e. inband).  If generat‐
265              ing  the  event  via  a  system interface, the system management
266              software generator id range is 0x41 to 6Fh.
267
268       --set-sensor-reading-and-event-status="<sensor_number> <sensor_reading>
269       <sensor_reading_operation> <assertion_bitmask> <assertion_bitmask_oper‐
270       ation>      <deassertion_bitmask>       <deassertion_bitmask_operation>
271       <event_data1> <event_data2> <event_data3> <event_data_operation>"
272              Instruct  the  BMC  to set a sensor reading and/or event status.
273              How the various fields are written depends on a set of operation
274              instructions specified. The sensor_reading can be written or not
275              changed with the respective operation write  and  nochange.  For
276              the assertion_bitmask and deassertion_bitmask, the 0 bits of the
277              bitmask can clear the bits of the status, the 1 bits of the bit‐
278              mask  can  set the bits of the status, the entire bitmask can be
279              written as the status, or the status cannot be  changed  respec‐
280              tively  with  the  respective  operations  clear0bits, set1bits,
281              write, and nochange. The event_data1 byte can be written  fully,
282              written  without  the event offset (bits 3:0), or not be changed
283              via the write, nooffsetwrite, or nochange operations.
284
285       --get-mca-auxiliary-log-status
286              Get machine check architecture (MCA) auxiliary log status infor‐
287              mation.
288
289       --get-ssif-interface-capabilities
290              Get SSIF interface capabilities.
291
292       --get-kcs-interface-capabilities
293              Get KCS interface capabilities.
294
295       --get-bt-interface-capabilities
296              Get BT interface capabilities.
297
298       --get-bmc-global-enables
299              Get BMC Global Enables.
300
301       --set-system-firmware-version=STRING
302              Set System Firmware Version.
303
304       --set-system-name=STRING
305              Set System Name.
306
307       --set-primary-operating-system-name=STRING
308              Set Primary Operating System Name.
309
310       --set-operating-system-name=STRING
311              Set Operating System Name.
312
313       --set-present-os-version-number=STRING
314              Set Present OS Version Number.
315
316       --set-bmc-url=STRING
317              Set BMC URL.
318
319       --set-base-os-hypervisor-url=STRING
320              Set Base OS/Hypervisor URL.
321
322       --read-fru=FILENAME
323              Read  the contents of a FRU device ID and store it in the speci‐
324              fied file. Requires setting of a device ID via --device-id.
325
326       --write-fru=FILENAME
327              Write the contents of the specified file into a FRU  device  id.
328              Requires setting of a device ID via --device-id. If --verbose is
329              specified, progress percent will also be output.
330
331       --device-id=IDNUM
332              Specify a specific FRU device ID. For use  with  --read-fru  and
333              --write-fru.
334
335       --verbose
336              Increase verbosity in output.
337

SDR CACHE OPTIONS

339       This tool requires access to the sensor data repository (SDR) cache for
340       general operation. By default, SDR data will be downloaded  and  cached
341       on the local machine. The following options apply to the SDR cache.
342
343       --flush-cache
344              Flush  a  cached  version  of  the  sensor data repository (SDR)
345              cache. The SDR is typically cached for faster subsequent access.
346              However,  it  may need to be flushed and re-generated if the SDR
347              has been updated on a system.
348
349       --quiet-cache
350              Do not output information about cache creation/deletion. May  be
351              useful in scripting.
352
353       --sdr-cache-recreate
354              If the SDR cache is out of date or invalid, automatically recre‐
355              ate the sensor data repository (SDR) cache. This option  may  be
356              useful for scripting purposes.
357
358       --sdr-cache-file=FILE
359              Specify a specific sensor data repository (SDR) cache file to be
360              stored or read from. If this option is used when multiple  hosts
361              are  specified,  the  same  SDR  cache file will be used for all
362              hosts.
363
364       --sdr-cache-directory=DIRECTORY
365              Specify an alternate directory for sensor data repository  (SDR)
366              caches to be stored or read from. Defaults to the home directory
367              if not specified.
368

TIME OPTIONS

370       By IPMI definition, all IPMI times and timestamps are stored in  local‐
371       time. However, in many situations, the timestamps will not be stored in
372       localtime. Whether or not a system truly stored the timestamps  in  lo‐
373       caltime varies on many factors, such as the vendor, BIOS, and operating
374       system.  The following options will allow the user to adjust the inter‐
375       pretation of the stored timestamps and how they should be output.
376
377       --utc-to-localtime
378              Assume  all  times are reported in UTC time and convert the time
379              to localtime before being output.
380
381       --localtime-to-utc
382              Convert all localtime timestamps to UTC before being output.
383
384       --utc-offset=SECONDS
385              Specify a specific UTC offset in seconds to be  added  to  time‐
386              stamps.   Value can range from -86400 to 86400 seconds. Defaults
387              to 0.
388

HOSTRANGED OPTIONS

390       The following options manipulate hostranged output. See HOSTRANGED SUP‐
391       PORT below for additional information on hostranges.
392
393       -B, --buffer-output
394              Buffer  hostranged output. For each node, buffer standard output
395              until the node has completed its IPMI operation. When specifying
396              this  option, data may appear to output slower to the user since
397              the the entire IPMI operation must complete before any data  can
398              be output.  See HOSTRANGED SUPPORT below for additional informa‐
399              tion.
400
401       -C, --consolidate-output
402              Consolidate hostranged output. The complete standard output from
403              every  node  specified  will  be consolidated so that nodes with
404              identical output are not output twice. A header will list  those
405              nodes  with  the consolidated output. When this option is speci‐
406              fied, no output can be seen until the  IPMI  operations  to  all
407              nodes  has  completed.  If  the  user  breaks out of the program
408              early, all currently consolidated output  will  be  dumped.  See
409              HOSTRANGED SUPPORT below for additional information.
410
411       -F NUM, --fanout=NUM
412              Specify multiple host fanout. A "sliding window" (or fanout) al‐
413              gorithm is used for parallel IPMI communication so  that  slower
414              nodes or timed out nodes will not impede parallel communication.
415              The maximum number of threads available at the same time is lim‐
416              ited by the fanout. The default is 64.
417
418       -E, --eliminate
419              Eliminate  hosts  determined  as undetected by ipmidetect.  This
420              attempts to remove the common issue of hostranged execution tim‐
421              ing  out  due  to  several nodes being removed from service in a
422              large cluster. The ipmidetectd daemon must  be  running  on  the
423              node executing the command.
424
425       --always-prefix
426              Always prefix output, even if only one host is specified or com‐
427              municating in-band. This option is primarily useful for  script‐
428              ing  purposes.  Option  will be ignored if specified with the -C
429              option.
430

HOSTRANGED SUPPORT

432       Multiple hosts can be input either as an explicit comma separated lists
433       of  hosts  or  a  range of hostnames in the general form: prefix[n-m,l-
434       k,...], where n < m and l < k, etc. The later form should not  be  con‐
435       fused  with  regular expression character classes (also denoted by []).
436       For example, foo[19] does not represent foo1 or foo9, but rather repre‐
437       sents a degenerate range: foo19.
438
439       This  range  syntax  is  meant only as a convenience on clusters with a
440       prefixNN naming convention and specification of ranges  should  not  be
441       considered  necessary -- the list foo1,foo9 could be specified as such,
442       or by the range foo[1,9].
443
444       Some examples of range usage follow:
445           foo[01-05] instead of foo01,foo02,foo03,foo04,foo05
446           foo[7,9-10] instead of foo7,foo9,foo10
447           foo[0-3] instead of foo0,foo1,foo2,foo3
448
449       As a reminder to the reader, some shells will interpret brackets ([ and
450       ])  for  pattern matching. Depending on your shell, it may be necessary
451       to enclose ranged lists within quotes.
452
453       When multiple hosts are specified by the user, a thread  will  be  exe‐
454       cuted  for each host in parallel up to the configured fanout (which can
455       be adjusted via the -F option). This will allow communication to  large
456       numbers of nodes far more quickly than if done in serial.
457
458       By  default,  standard  output  from each node specified will be output
459       with the hostname prepended to each line. Although this output is read‐
460       able  in  many  situations, it may be difficult to read in other situa‐
461       tions. For example, output from multiple nodes may be  mixed  together.
462       The -B and -C options can be used to change this default.
463
464       In-band  IPMI  Communication  will be used when the host "localhost" is
465       specified. This allows the user to add  the  localhost  into  the  hos‐
466       tranged output.
467

GENERAL TROUBLESHOOTING

469       Most often, IPMI problems are due to configuration problems.
470
471       IPMI  over  LAN  problems  involve a misconfiguration of the remote ma‐
472       chine's BMC.  Double check to make sure the  following  are  configured
473       properly  in  the remote machine's BMC: IP address, MAC address, subnet
474       mask, username, user enablement, user privilege, password,  LAN  privi‐
475       lege,  LAN enablement, and allowed authentication type(s). For IPMI 2.0
476       connections, double check to make sure the  cipher  suite  privilege(s)
477       and  K_g  key  are  configured properly. The ipmi-config(8) tool can be
478       used to check and/or change these configuration settings.
479
480       Inband IPMI problems are  typically  caused  by  improperly  configured
481       drivers or non-standard BMCs.
482
483       In  addition  to the troubleshooting tips below, please see WORKAROUNDS
484       below to also if there are any vendor specific bugs that have been dis‐
485       covered and worked around.
486
487       Listed below are many of the common issues for error messages.  For ad‐
488       ditional support, please e-mail  the  <freeipmi-users@gnu.org>  mailing
489       list.
490
491       "username  invalid"  - The username entered (or a NULL username if none
492       was entered) is not available on the remote machine.  It  may  also  be
493       possible the remote BMC's username configuration is incorrect.
494
495       "password  invalid"  - The password entered (or a NULL password if none
496       was entered) is not correct. It may also be possible the  password  for
497       the user is not correctly configured on the remote BMC.
498
499       "password  verification timeout" - Password verification has timed out.
500       A "password invalid" error (described  above)  or  a  generic  "session
501       timeout" (described below) occurred.  During this point in the protocol
502       it cannot be differentiated which occurred.
503
504       "k_g invalid" - The K_g key entered (or a NULL K_g key if none was  en‐
505       tered)  is not correct. It may also be possible the K_g key is not cor‐
506       rectly configured on the remote BMC.
507
508       "privilege level insufficient" - An IPMI command requires a higher user
509       privilege  than  the one authenticated with. Please try to authenticate
510       with a higher privilege. This may require authenticating to a different
511       user which has a higher maximum privilege.
512
513       "privilege  level  cannot  be  obtained  for this user" - The privilege
514       level you are attempting to authenticate with is higher than the  maxi‐
515       mum  allowed for this user. Please try again with a lower privilege. It
516       may also be possible the maximum privilege level allowed for a user  is
517       not configured properly on the remote BMC.
518
519       "authentication  type  unavailable for attempted privilege level" - The
520       authentication type you wish to authenticate with is not available  for
521       this privilege level. Please try again with an alternate authentication
522       type or alternate privilege level. It may also be possible  the  avail‐
523       able  authentication  types you can authenticate with are not correctly
524       configured on the remote BMC.
525
526       "cipher suite id unavailable" - The cipher suite id you wish to authen‐
527       ticate  with  is not available on the remote BMC. Please try again with
528       an alternate cipher suite id. It may also be possible the available ci‐
529       pher suite ids are not correctly configured on the remote BMC.
530
531       "ipmi  2.0 unavailable" - IPMI 2.0 was not discovered on the remote ma‐
532       chine. Please try to use IPMI 1.5 instead.
533
534       "connection timeout" - Initial IPMI communication failed. A  number  of
535       potential errors are possible, including an invalid hostname specified,
536       an IPMI IP address cannot be resolved, IPMI is not enabled on  the  re‐
537       mote server, the network connection is bad, etc. Please verify configu‐
538       ration and connectivity.
539
540       "session timeout" - The IPMI session has timed out.  Please  reconnect.
541       If this error occurs often, you may wish to increase the retransmission
542       timeout. Some remote BMCs are considerably slower than others.
543
544       "device not found" - The specified device could not  be  found.  Please
545       check configuration or inputs and try again.
546
547       "driver  timeout"  -  Communication with the driver or device has timed
548       out. Please try again.
549
550       "message timeout" - Communication with the driver or device  has  timed
551       out. Please try again.
552
553       "BMC  busy"  - The BMC is currently busy. It may be processing informa‐
554       tion or have too many simultaneous sessions to manage. Please wait  and
555       try again.
556
557       "could  not  find inband device" - An inband device could not be found.
558       Please check configuration or specify specific device or driver on  the
559       command line.
560
561       "driver timeout" - The inband driver has timed out communicating to the
562       local BMC or service processor. The BMC or  service  processor  may  be
563       busy or (worst case) possibly non-functioning.
564

WORKAROUNDS

566       With  so  many different vendors implementing their own IPMI solutions,
567       different vendors may implement their IPMI protocols  incorrectly.  The
568       following describes a number of workarounds currently available to han‐
569       dle discovered compliance issues. When possible, workarounds have  been
570       implemented so they will be transparent to the user. However, some will
571       require the user to specify a workaround be used via the -W option.
572
573       The hardware listed below may only indicate the hardware that a problem
574       was  discovered on. Newer versions of hardware may fix the problems in‐
575       dicated below. Similar machines from vendors may or may not exhibit the
576       same  problems.  Different  vendors may license their firmware from the
577       same IPMI firmware developer, so it may  be  worthwhile  to  try  work‐
578       arounds listed below even if your motherboard is not listed.
579
580       If  you  believe  your hardware has an additional compliance issue that
581       needs a workaround to be implemented, please contact the FreeIPMI main‐
582       tainers on <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>.
583
584       assumeio  - This workaround flag will assume inband interfaces communi‐
585       cate with system I/O rather than being memory-mapped.  This  will  work
586       around  systems  that report invalid base addresses. Those hitting this
587       issue may see "device not supported" or "could not find inband  device"
588       errors.  Issue observed on HP ProLiant DL145 G1.
589
590       spinpoll  -  This workaround flag will inform some inband drivers (most
591       notably the KCS driver) to spin while polling rather than  putting  the
592       process to sleep. This may significantly improve the wall clock running
593       time of tools because an operating system scheduler's  granularity  may
594       be  much larger than the time it takes to perform a single IPMI message
595       transaction. However, by spinning, your system may be  performing  less
596       useful work by not contexting out the tool for a more useful task.
597
598       authcap  - This workaround flag will skip early checks for username ca‐
599       pabilities, authentication capabilities, and K_g support and allow IPMI
600       authentication to succeed. It works around multiple issues in which the
601       remote system does not properly report username capabilities, authenti‐
602       cation  capabilities,  or  K_g status. Those hitting this issue may see
603       "username invalid",  "authentication  type  unavailable  for  attempted
604       privilege  level",  or  "k_g  invalid"  errors.  Issue observed on Asus
605       P5M2/P5MT-R/RS162-E4/RX4,   Intel   SR1520ML/X38ML,   and   Sun    Fire
606       2200/4150/4450 with ELOM.
607
608       nochecksumcheck  - This workaround flag will tell FreeIPMI to not check
609       the checksums returned from IPMI command  responses.  It  works  around
610       systems that return invalid checksums due to implementation errors, but
611       the packet is otherwise valid. Users are cautioned on the use  of  this
612       option,  as  it  removes  validation of packet integrity in a number of
613       circumstances. However, it is unlikely to be an issue  in  most  situa‐
614       tions.  Those hitting this issue may see "connection timeout", "session
615       timeout", or "password verification timeout" errors. On IPMI  1.5  con‐
616       nections,  the  "noauthcodecheck" workaround may also needed too. Issue
617       observed on Supermicro X9SCM-iiF, Supermicro  X9DRi-F,  and  Supermicro
618       X9DRFR.
619
620       idzero  -  This  workaround flag will allow empty session IDs to be ac‐
621       cepted by the client. It works around IPMI sessions that  report  empty
622       session  IDs  to  the client. Those hitting this issue may see "session
623       timeout" errors. Issue observed on Tyan S2882 with M3289 BMC.
624
625       unexpectedauth - This workaround flag will  allow  unexpected  non-null
626       authcodes  to  be checked as though they were expected. It works around
627       an issue when packets contain non-null authentication  data  when  they
628       should  be  null due to disabled per-message authentication. Those hit‐
629       ting this issue may see "session timeout"  errors.  Issue  observed  on
630       Dell PowerEdge 2850,SC1425. Confirmed fixed on newer firmware.
631
632       forcepermsg  -  This workaround flag will force per-message authentica‐
633       tion to be used no matter what is advertised by the remote  system.  It
634       works  around an issue when per-message authentication is advertised as
635       disabled on the remote system, but it is actually required for the pro‐
636       tocol.  Those hitting this issue may see "session timeout" errors.  Is‐
637       sue observed on IBM eServer 325.
638
639       endianseq - This workaround flag will flip the endian  of  the  session
640       sequence  numbers  to  allow the session to continue properly. It works
641       around IPMI 1.5 session sequence numbers that  are  the  wrong  endian.
642       Those  hitting  this  issue may see "session timeout" errors. Issue ob‐
643       served on some Sun ILOM 1.0/2.0 (depends on service processor endian).
644
645       noauthcodecheck - This workaround flag will tell FreeIPMI to not  check
646       the  authentication  codes returned from IPMI 1.5 command responses. It
647       works around systems that return invalid authentication  codes  due  to
648       hashing  or  implementation  errors.  Users are cautioned on the use of
649       this option, as it removes an authentication check verifying the valid‐
650       ity of a packet. However, in most organizations, this is unlikely to be
651       a security issue. Those hitting this issue may  see  "connection  time‐
652       out",  "session  timeout",  or  "password verification timeout" errors.
653       Issue observed on Xyratex FB-H8-SRAY, Intel  Windmill,  Quanta  Winter‐
654       fell, and Wiwynn Windmill.
655
656       intel20  - This workaround flag will work around several Intel IPMI 2.0
657       authentication issues. The issues covered include padding of usernames,
658       and  password  truncation  if  the  authentication  algorithm  is HMAC-
659       MD5-128. Those hitting this issue may see "username invalid", "password
660       invalid",  or  "k_g  invalid" errors. Issue observed on Intel SE7520AF2
661       with Intel Server Management Module (Professional Edition).
662
663       supermicro20 - This workaround flag will work around several Supermicro
664       IPMI  2.0  authentication  issues  on  motherboards  w/  Peppercon IPMI
665       firmware. The issues covered include handling invalid length  authenti‐
666       cation  codes.  Those hitting this issue may see "password invalid" er‐
667       rors.  Issue observed on Supermicro H8QME  with  SIMSO  daughter  card.
668       Confirmed fixed on newerver firmware.
669
670       sun20 - This workaround flag will work work around several Sun IPMI 2.0
671       authentication issues. The issues covered include invalid lengthed hash
672       keys,  improperly  hashed keys, and invalid cipher suite records. Those
673       hitting this issue may see "password invalid" or  "bmc  error"  errors.
674       Issue  observed  on Sun Fire 4100/4200/4500 with ILOM.  This workaround
675       automatically includes the "opensesspriv" workaround.
676
677       opensesspriv - This workaround flag will slightly alter FreeIPMI's IPMI
678       2.0 connection protocol to workaround an invalid hashing algorithm used
679       by the remote system. The privilege level sent during the Open  Session
680       stage of an IPMI 2.0 connection is used for hashing keys instead of the
681       privilege level sent during the RAKP1 connection stage.  Those  hitting
682       this  issue may see "password invalid", "k_g invalid", or "bad rmcpplus
683       status code" errors.  Issue observed on Sun  Fire  4100/4200/4500  with
684       ILOM, Inventec 5441/Dell Xanadu II, Supermicro X8DTH, Supermicro X8DTG,
685       Intel S5500WBV/Penguin Relion 700,  Intel  S2600JF/Appro  512X,  Quanta
686       QSSC-S4R/Appro  GB812X-CN, and Dell C5220. This workaround is automati‐
687       cally triggered with the "sun20" workaround.
688
689       integritycheckvalue - This workaround flag will work around an  invalid
690       integrity check value during an IPMI 2.0 session establishment when us‐
691       ing Cipher Suite ID 0. The integrity check value should  be  0  length,
692       however  the  remote motherboard responds with a non-empty field. Those
693       hitting this issue may see "k_g invalid" errors. Issue observed on  Su‐
694       permicro  X8DTG,  Supermicro  X8DTU,  and Intel S5500WBV/Penguin Relion
695       700, and Intel S2600JF/Appro 512X.
696
697       assumemaxsdrrecordcount - This workaround will inform  SDR  reading  to
698       stop  reading  after  a  known  maximum number of SDR records have been
699       read. This will work around  systems  that  have  miss-implemented  SDR
700       reading  functions.  Those hitting this issue may see "SDR record count
701       invalid" errors. Issue observed on unspecified Inspur motherboard.
702
703       No IPMI 1.5 Support - Some motherboards that support IPMI 2.0 have been
704       found  to  not support IPMI 1.5. Those hitting this issue may see "ipmi
705       2.0 unavailable" or "connection timeout"  errors.  This  issue  can  be
706       worked  around  by  using  IPMI  2.0  instead of IPMI 1.5 by specifying
707       --driver-type=LAN_2_0. Issue observed on a number of HP and  Supermicro
708       motherboards.
709

EXAMPLES

711       # bmc-device --cold-reset
712
713       Perform a cold reset.
714
715       # bmc-device -h ahost -u myusername -p mypassword --cold-reset
716
717       Perform a cold reset of a remote machine using IPMI over LAN.
718
719       # bmc-device -h mycluster[0-127] -u myusername -p mypassword --cold-re‐
720       set
721
722       Perform a cold reset across a cluster using IPMI over LAN.
723

DIAGNOSTICS

725       Upon successful execution, exit status is 0. On error, exit  status  is
726       1.
727
728       If multiple hosts are specified for communication, the exit status is 0
729       if and only if all targets successfully  execute.  Otherwise  the  exit
730       status is 1.
731

KNOWN ISSUES

733       On  older  operating systems, if you input your username, password, and
734       other potentially security relevant information on  the  command  line,
735       this information may be discovered by other users when using tools like
736       the ps(1) command or looking in the /proc file system. It is  generally
737       more  secure  to input password information with options like the -P or
738       -K options. Configuring security relevant information in  the  FreeIPMI
739       configuration file would also be an appropriate way to hide this infor‐
740       mation.
741
742       In order to prevent brute force attacks,  some  BMCs  will  temporarily
743       "lock  up" after a number of remote authentication errors. You may need
744       to wait awhile in order to this temporary "lock up" to pass before  you
745       may authenticate again.
746

REPORTING BUGS

748       Report bugs to <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>.
749
751       Copyright © 2008-2015 FreeIPMI Core Team.
752
753       This program is free software; you can redistribute it and/or modify it
754       under the terms of the GNU General Public License as published  by  the
755       Free  Software Foundation; either version 3 of the License, or (at your
756       option) any later version.
757

SEE ALSO

759       freeipmi.conf(5), freeipmi(7)
760
761       http://www.gnu.org/software/freeipmi/
762
763
764
765bmc-device 1.6.11                 2023-06-07                     BMC-DEVICE(8)
Impressum