IPMI-FRU(8)

okay bestie, you found ipmi-fru(8) from the System Commands manual and honestly? iconic. ๐Ÿ’– This is the page that shows you FRU info without making you feel like youโ€™re decoding a microwave manual. Letโ€™s get into it.

๐ŸŒธ NAME ๐ŸŒธ

ipmi-fru โ€” display FRU information. periodt. ๐Ÿ’…

โœจ SYNOPSIS โœจ

ipmi-fru [OPTION...]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

ipmi-fru displays Field Replaceable Unit (FRU) Information. The FRU may hold a variety of information, such as device information, hardware information, serial numbers, and part numbers. the way that little chip holds lore ๐Ÿ˜ญ

Listed below are general IPMI options, tool specific options, trouble shooting information, workaround information, examples, and known issues. For a general introduction to FreeIPMI please see freeipmi(7).

๐Ÿ’… GENERAL OPTIONS ๐Ÿ’…

The following options are general options for configuring IPMI communication and executing general tool commands. group-chat setup energy ๐Ÿซถ

  • -D IPMIDRIVER, --driver-type=IPMIDRIVER โ€” Specify the driver type to use instead of doing an auto selection. The currently available outofband drivers are LAN and LAN_2_0, which perform IPMI 1.5 and IPMI 2.0 respectively. The currently available inband drivers are KCS, SSIF, OPENIPMI, SUNBMC, and INTELDCMI. pick your driver, bestie โœจ
  • --disable-auto-probe โ€” Do not probe in-band IPMI devices for default settings. no-probe zone ๐Ÿšซ
  • --driver-address=DRIVER-ADDRESS โ€” Specify the in-band driver address to be used instead of the probed value. DRIVER-ADDRESS should be prefixed with 0x for a hex value and 0 for an octal value.
  • --driver-device=DEVICE โ€” Specify the in-band driver device path to be used instead of the probed path.
  • --register-spacing=REGISTER-SPACING โ€” Specify the in-band driver register spacing instead of the probed value. Argument is in bytes (i.e. 32bit register spacing = 4).
  • --target-channel-number=CHANNEL-NUMBER โ€” Specify the in-band driver target channel number to send IPMI requests to.
  • --target-slave-address=SLAVE-ADDRESS โ€” Specify the in-band driver target slave number to send IPMI requests to.
  • -h IPMIHOST1,IPMIHOST2,...,, --hostname=IPMIHOST1[:PORT],IPMIHOST2[:PORT],... โ€” Specify the remote host(s) to communicate with. Multiple hostnames may be separated by comma or may be specified in a range format; see HOSTRANGED SUPPORT below. An optional port can be specified with each host, which may be useful in port forwarding or similar situations. If specifying an IPv6 address and port, use the format [ADDRESS]:PORT. hostnames, but make it cute ๐Ÿฆ‹
  • -u USERNAME, --username=USERNAME โ€” Specify the username to use when authenticating with the remote host. If not specified, a null (i.e. anonymous) username is assumed. The user must have at least USER privileges in order for this tool to operate fully.
  • -p PASSWORD, --password=PASSWORD โ€” Specify the password to use when authenticating with the remote host. If not specified, a null password is assumed. Maximum password length is 16 for IPMI 1.5 and 20 for IPMI 2.0. keep it within limits, bestie ๐Ÿ”‘
  • -P, --password-prompt โ€” Prompt for password to avoid possibility of listing it in process lists. secretive little icon ๐Ÿ™ˆ
  • -k K_G, --k-g=K_G โ€” Specify the K_g BMC key to use when authenticating with the remote host for IPMI 2.0. If not specified, a null key is assumed. To input the key in hexadecimal form, prefix the string with 0x. E.g., the key abc can be entered with either the string abc or the string 0x616263. hex key realness โœจ
  • -K, --k-g-prompt โ€” Prompt for k-g to avoid possibility of listing it in process lists.
  • --session-timeout=MILLISECONDS โ€” Specify the session timeout in milliseconds. Defaults to 20000 milliseconds (20 seconds) if not specified.
  • --retransmission-timeout=MILLISECONDS โ€” Specify the packet retransmission timeout in milliseconds. Defaults to 1000 milliseconds (1 second) if not specified. The retransmission timeout cannot be larger than the session timeout. fr fr, it cannot โš ๏ธ
  • -a AUTHENTICATION-TYPE, --authentication-type=AUTHENTICATION-TYPE โ€” Specify the IPMI 1.5 authentication type to use. The currently available authentication types are NONE, STRAIGHT_PASSWORD_KEY, MD2, and MD5. Defaults to MD5 if not specified.
  • -I CIPHER-SUITE-ID, --cipher-suite-id=CIPHER-SUITE-ID โ€” Specify the IPMI 2.0 cipher suite ID to use. The Cipher Suite ID identifies a set of authentication, integrity, and confidentiality algorithms to use for IPMI 2.0 communication. The authentication algorithm identifies the algorithm to use for session setup, the integrity algorithm identifies the algorithm to use for session packet signatures, and the confidentiality algorithm identifies the algorithm to use for payload encryption. Defaults to cipher suite ID 3 if not specified. The following cipher suite ids are currently supported:
    • 0 โ€” Authentication Algorithm = None; Integrity Algorithm = None; Confidentiality Algorithm = None
    • 1 โ€” Authentication Algorithm = HMAC-SHA1; Integrity Algorithm = None; Confidentiality Algorithm = None
    • 2 โ€” Authentication Algorithm = HMAC-SHA1; Integrity Algorithm = HMAC-SHA1-96; Confidentiality Algorithm = None
    • 3 โ€” Authentication Algorithm = HMAC-SHA1; Integrity Algorithm = HMAC-SHA1-96; Confidentiality Algorithm = AES-CBC-128
    • 6 โ€” Authentication Algorithm = HMAC-MD5; Integrity Algorithm = None; Confidentiality Algorithm = None
    • 7 โ€” Authentication Algorithm = HMAC-MD5; Integrity Algorithm = HMAC-MD5-128; Confidentiality Algorithm = None
    • 8 โ€” Authentication Algorithm = HMAC-MD5; Integrity Algorithm = HMAC-MD5-128; Confidentiality Algorithm = AES-CBC-128
    • 11 โ€” Authentication Algorithm = HMAC-MD5; Integrity Algorithm = MD5-128; Confidentiality Algorithm = None
    • 12 โ€” Authentication Algorithm = HMAC-MD5; Integrity Algorithm = MD5-128; Confidentiality Algorithm = AES-CBC-128
    • 15 โ€” Authentication Algorithm = HMAC-SHA256; Integrity Algorithm = None; Confidentiality Algorithm = None
    • 16 โ€” Authentication Algorithm = HMAC-SHA256; Integrity Algorithm = HMAC_SHA256_128; Confidentiality Algorithm = None
    • 17 โ€” Authentication Algorithm = HMAC-SHA256; Integrity Algorithm = HMAC_SHA256_128; Confidentiality Algorithm = AES-CBC-128

thatโ€™s the whole cipher suite menu, no cap ๐Ÿ’€

  • -l PRIVILEGE-LEVEL, --privilege-level=PRIVILEGE-LEVEL โ€” Specify the privilege level to be used. The currently available privilege levels are USER, OPERATOR, and ADMIN. Defaults to USER if not specified. choose your level wisely ๐Ÿ‘‘
  • --config-file=FILE โ€” Specify an alternate configuration file.
  • -W WORKAROUNDS, --workaround-flags=WORKAROUNDS โ€” Specify workarounds to vendor compliance issues. Multiple workarounds can be specified separated by commas. A special command line flag of none will indicate no workarounds (may be useful for overriding configured defaults). See WORKAROUNDS below for a list of available workarounds. vendor chaos workaround era ๐Ÿ”ฅ
  • --debug โ€” Turn on debugging.
  • -?, --help โ€” Output a help list and exit.
  • --usage โ€” Output a usage message and exit.
  • -V, --version โ€” Output the program version and exit.

๐Ÿ“ IPMI-FRU OPTIONS ๐Ÿ“

The following options are specific to ipmi-fru. this is the main character section ๐ŸŽ€

  • -e, --device-id=IDNUM โ€” Specify a specific FRU device ID.
  • -v, --verbose โ€” Increase verbosity in output to include additional output. more lore, more words โœจ
  • --bridge-fru โ€” By default, FRU entries on other satellite controllers will not be read by default. Bridging may not work on some interfaces/driver types. not every bridge is gonna slay ๐ŸŒ‰
  • --interpret-oem-data โ€” Attempt to interpret OEM data, such as event data, sensor readings, or general extra info, etc. If an OEM interpretation is not available, the default output will be generated. Correctness of OEM interpretations cannot be guaranteed due to potential changes OEM vendors may make in products, firmware, etc. See OEM INTERPRETATION below for confirmed supported motherboard interpretations. OEM data can be a little mysterious, bestie ๐Ÿ‘€
  • --fru-file=FILENAME โ€” Output data from the specified FRU binary file instead of reading FRU data off of a board.

๐ŸŽ€ SDR CACHE OPTIONS ๐ŸŽ€

This tool requires access to the sensor data repository (SDR) cache for general operation. By default, SDR data will be downloaded and cached on the local machine. The following options apply to the SDR cache. SDR cache is doing a lot of heavy lifting ๐Ÿ’…

  • --flush-cache โ€” Flush a cached version of the sensor data repository (SDR) cache. The SDR is typically cached for faster subsequent access. However, it may need to be flushed and re-generated if the SDR has been updated on a system.
  • --quiet-cache โ€” Do not output information about cache creation/deletion. May be useful in scripting. shhh, cache business ๐Ÿคซ
  • --sdr-cache-recreate โ€” If the SDR cache is out of date or invalid, automatically recreate the sensor data repository (SDR) cache. This option may be useful for scripting purposes.
  • --sdr-cache-file=FILE โ€” Specify a specific sensor data repository (SDR) cache file to be stored or read from. If this option is used when multiple hosts are specified, the same SDR cache file will be used for all hosts.
  • --sdr-cache-directory=DIRECTORY โ€” Specify an alternate directory for sensor data repository (SDR) caches to be stored or read from. Defaults to the home directory if not specified. home directory core ๐Ÿ 
  • --ignore-sdr-cache โ€” Ignore SDR cache related processing. May lead to incomplete or less useful information being output, however it will allow functionality for systems without SDRs or when the correct SDR cannot be loaded. could be incomplete, but sometimes you gotta ๐Ÿ˜ญ

โฐ TIME OPTIONS โฐ

By IPMI definition, all IPMI times and timestamps are stored in localtime. However, in many situations, the timestamps will not be stored in localtime. Whether or not a system truly stored the timestamps in localtime varies on many factors, such as the vendor, BIOS, and operating system. The following options will allow the user to adjust the interpretation of the stored timestamps and how they should be output. timezone lore is real ๐Ÿ•ฐ๏ธ

  • --utc-to-localtime โ€” Assume all times are reported in UTC time and convert the time to localtime before being output.
  • --localtime-to-utc โ€” Convert all localtime timestamps to UTC before being output.
  • --utc-offset=SECONDS โ€” Specify a specific UTC offset in seconds to be added to timestamps. Value can range from -86400 to 86400 seconds. Defaults to 0. math but make it timestamp โœจ

โœจ HOSTRANGED OPTIONS โœจ

okay so these next ones are all about how the output gets formatted when you're blasting the same command at a whole pile of hosts at once. lowkey this is the good stuff โ€” see HOSTRANGED SUPPORT below for the full tea on hostranges. ๐Ÿ’…

  • -B, --buffer-output โ€” buffers the hostranged output, bestie. For each node, standard output gets held back until that node has completely finished its IPMI operation. so yeah, when you use this the data might look like it's coming at you slower, because the entire IPMI operation has to wrap up before literally any of it can be printed. it's giving patience. see HOSTRANGED SUPPORT below for more deets. ๐Ÿซถ
  • -C, --consolidate-output โ€” consolidates the hostranged output. the complete standard output from every node you specified gets smooshed together so that nodes with identical output don't get printed twice. a header will list which nodes share that consolidated output. heads up though: when you use this, you see nothing until the IPMI operations to all the nodes have completed. absolute silence. and if you break out of the program early, all the currently consolidated output gets dumped. still giving. see HOSTRANGED SUPPORT below. ๐Ÿ˜ญ
  • -F NUM, --fanout=NUM โ€” sets the multiple host fanout. it's a "sliding window" (aka fanout) algorithm used for parallel IPMI communication, so that slower nodes or nodes that time out don't block the parallel communication for everyone else. the max number of threads running at the same time is limited by the fanout. default is 64. sixty-four besties at once, iconic. ๐ŸŒˆ
  • -E, --eliminate โ€” eliminates hosts that ipmidetect has determined are undetected. this is here to fix the extremely common vibe-killer where hostranged execution times out because a bunch of nodes got removed from service in a large cluster. the ipmidetectd daemon must be running on the node that's executing the command. no daemon, no dice. โญ
  • --always-prefix โ€” always prefix the output, even if there's only one host specified or you're communicating in-band. this one's mostly for scripting purposes, fr fr. important: this option will be ignored if you specify it with the -C option. they do not get along. ๐Ÿ’€

๐ŸŒธ HOSTRANGED SUPPORT ๐ŸŒธ

so you can input multiple hosts two ways: as an explicit comma-separated list of hosts, or as a range of hostnames in the general form prefix[n-m,l-k,...], where n < m and l < k, etc. please do not confuse the range form with regular expression character classes (which also use [], iykyk). for example, foo[19] does not mean foo1 or foo9 โ€” it represents a degenerate range: foo19. not me being surprised by this the first time either. ๐Ÿ™ˆ

this range syntax is only meant to be a convenience on clusters that use a prefixNN naming convention, and specifying ranges should not be considered necessary โ€” the list foo1,foo9 could just be specified as such, or via the range foo[1,9]. either way slays.

some examples of range usage:

foo[01-05] instead of foo01,foo02,foo03,foo04,foo05
foo[7,9-10] instead of foo7,foo9,foo10
foo[0-3] instead of foo0,foo1,foo2,foo3

quick reminder to the reader bestie: some shells will interpret brackets ([ and ]) for pattern matching. depending on your shell, you may need to enclose ranged lists within quotes. don't get caught out. ๐ŸŽ€

when multiple hosts are specified, a thread gets executed for each host in parallel up to the configured fanout (which, remember, you can adjust with the -F option). this lets you talk to a huge number of nodes way faster than if you did it all in serial. parallel queen behavior. ๐Ÿ‘‘

by default, standard output from each node gets output with the hostname prepended to each line. this is readable in a lot of situations, but it can get rough in others โ€” for example, output from multiple nodes may get mixed together into one big soup. the -B and -C options exist to change this default. pick your fighter.

in-band IPMI communication will be used when the host localhost is specified. this lets you add localhost into the hostranged output. cute and convenient. ๐Ÿ’–


๐Ÿ”ง GENERAL TROUBLESHOOTING ๐Ÿ”ง

okay so real talk โ€” most of the time, IPMI problems are due to configuration problems. like, it's almost always config. breathe. let's go through it.

IPMI over LAN problems

IPMI over LAN problems involve a misconfiguration of the remote machine's BMC. double check that the following are configured properly in the remote machine's BMC: IP address, MAC address, subnet mask, username, user enablement, user privilege, password, LAN privilege, LAN enablement, and allowed authentication type(s). that's a lot of checkboxes, bestie, tick them all. for IPMI 2.0 connections, also double check that the cipher suite privilege(s) and K_g key are configured properly. the ipmi-config(8) tool can be used to check and/or change these configuration settings. it's literally right there, use it. โœจ

Inband IPMI problems

Inband IPMI problems are typically caused by improperly configured drivers or non-standard BMCs. that's the whole story on that one.

in addition to the troubleshooting tips below, please also see WORKAROUNDS below to check if there are any vendor specific bugs that have been discovered and worked around. ๐Ÿ˜Œ

the error messages, decoded

listed below are many of the common issues for error messages. for additional support, please e-mail the freeipmi-users@gnu.org mailing list. they're nice, I promise.

  • "username invalid" โ€” the username entered (or a NULL username if none was entered) is not available on the remote machine. it may also be possible that the remote BMC's username configuration is incorrect. ๐Ÿ™ˆ
  • "password invalid" โ€” the password entered (or a NULL password if none was entered) is not correct. it may also be possible the password for the user is not correctly configured on the remote BMC.
  • "password verification timeout" โ€” password verification has timed out. a "password invalid" error (described above) or a generic "session timeout" (described below) occurred. at this point in the protocol it cannot be differentiated which one happened. the ambiguity is the drama. ๐Ÿ’€
  • "k_g invalid" โ€” the K_g key entered (or a NULL K_g key if none was entered) is not correct. it may also be possible the K_g key is not correctly configured on the remote BMC.
  • "privilege level insufficient" โ€” an IPMI command requires a higher user privilege than the one you authenticated with. please try to authenticate with a higher privilege. this may require authenticating to a different user which has a higher maximum privilege. glow up your privilege level. ๐Ÿ‘‘
  • "privilege level cannot be obtained for this user" โ€” the privilege level you're attempting to authenticate with is higher than the maximum allowed for this user. please try again with a lower privilege. it may also be possible the maximum privilege level allowed for a user is not configured properly on the remote BMC.
  • "authentication type unavailable for attempted privilege level" โ€” the authentication type you wish to authenticate with isn't available for this privilege level. please try again with an alternate authentication type or alternate privilege level. it may also be possible that the available authentication types you can authenticate with are not correctly configured on the remote BMC.
  • "cipher suite id unavailable" โ€” the cipher suite id you wish to authenticate with is not available on the remote BMC. please try again with an alternate cipher suite id. it may also be possible the available cipher suite ids are not correctly configured on the remote BMC.
  • "ipmi 2.0 unavailable" โ€” IPMI 2.0 was not discovered on the remote machine. please try to use IPMI 1.5 instead. downgrade era, but make it work. ๐Ÿ˜ญ
  • "connection timeout" โ€” initial IPMI communication failed. a number of potential errors are possible here, including an invalid hostname specified, an IPMI IP address that cannot be resolved, IPMI not being enabled on the remote server, a bad network connection, etc. please verify configuration and connectivity. ๐Ÿฆ‹
  • "session timeout" โ€” the IPMI session has timed out. please reconnect. if this error occurs often, you may wish to increase the retransmission timeout. some remote BMCs are considerably slower than others. not everyone can be fast, ok. ๐Ÿ“
  • "device not found" โ€” the specified device could not be found. please check configuration or inputs and try again.
  • "driver timeout" โ€” communication with the driver or device has timed out. please try again.
  • "message timeout" โ€” communication with the driver or device has timed out. please try again. (yes it's worded the same as the one above, no I'm not kidding, they're two separate things fr fr.)
  • "BMC busy" โ€” the BMC is currently busy. it may be processing information or have too many simultaneous sessions to manage. please wait and try again. she's booked and busy. ๐Ÿ’…
  • "could not find inband device" โ€” an inband device could not be found. please check configuration or specify a specific device or driver on the command line.
  • "driver timeout" โ€” the inband driver has timed out communicating to the local BMC or service processor. the BMC or service processor may be busy or (worst case) possibly non-functioning. ๐Ÿซ 
  • "internal IPMI error" โ€” an IPMI error has occurred that FreeIPMI does not know how to handle. please e-mail freeipmi-users@gnu.org to report the issue. that one's not on you, bestie, that's on us. ๐Ÿ™
if you're seeing a bunch of these in a row, it's almost always the config, not the tool. double check the BMC settings first before spiraling. ๐Ÿ’œ

๐Ÿ› ๏ธ WORKAROUNDS ๐Ÿ› ๏ธ

okay so here's the tea: every vendor out there is out here implementing their own IPMI solution, and likeโ€ฆ some of them did it wrong. Not being mean, it's just facts. So the following is the whole rundown of workarounds available for the compliance issues people have found. When it's possible, the workarounds are implemented so they're transparent to you โ€” you won't even notice. But some of them? You gotta specify them yourself via the -W option. iykyk.

The hardware listed below may only indicate the hardware that a problem was discovered on. Newer versions of hardware might have fixed these problems already. Similar machines from the same vendors may or may not have the same problems โ€” it's giving "your mileage may vary". And bestie, listen: different vendors may license their firmware from the same IPMI firmware developer, so it's genuinely worth trying the workarounds below even if your motherboard isn't on the list. ๐Ÿ‘‘

If you think your hardware has an extra compliance issue that needs a workaround implemented, pls contact the FreeIPMI maintainers at <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>. They'd love to hear from you fr.


  • assumeio โ€” this workaround flag assumes inband interfaces communicate with system I/O instead of being memory-mapped. It works around systems that report invalid base addresses. If you're hitting this, you might see "device not supported" or "could not find inband device" errors. Issue observed on HP ProLiant DL145 G1.
  • spinpoll โ€” this flag tells some inband drivers (most notably the KCS driver) to spin while polling instead of putting the process to sleep. The way this can significantly improve the wall clock running time of tools ๐Ÿ˜ญ because an operating system scheduler's granularity may be much larger than the time it takes to perform a single IPMI message transaction. But heads up: by spinning, your system may be doing less useful work by not contexting out the tool for a more useful task. Tradeoffs, bestie.
  • authcap โ€” this one skips early checks for username capabilities, authentication capabilities, and K_g support, and just lets IPMI authentication succeed. It works around multiple issues where the remote system doesn't properly report username capabilities, authentication capabilities, or K_g status. Hitting this? You might see "username invalid", "authentication type unavailable for attempted privilege level", or "k_g invalid" errors. Issue observed on Asus P5M2/P5MT-R/RS162-E4/RX4, Intel SR1520ML/X38ML, and Sun Fire 2200/4150/4450 with ELOM.
  • nochecksumcheck โ€” this flag tells FreeIPMI to not check the checksums returned from IPMI command responses. It works around systems that return invalid checksums due to implementation errors, even though the packet is otherwise valid. > โš ๏ธ Users are cautioned on the use of this option, because it removes validation of packet integrity in a number of circumstances. That said, it's unlikely to be an issue in most situations, so no panic. If you're hitting this, you might see "connection timeout", "session timeout", or "password verification timeout" errors. On IPMI 1.5 connections, the "noauthcodecheck" workaround may also be needed too. Issue observed on Supermicro X9SCM-iiF, Supermicro X9DRi-F, and Supermicro X9DRFR.
  • idzero โ€” allows empty session IDs to be accepted by the client. Works around IPMI sessions that report empty session IDs to the client. Hitting this? You might see "session timeout" errors. Issue observed on Tyan S2882 with M3289 BMC.
  • unexpectedauth โ€” allows unexpected non-null authcodes to be checked as though they were expected. It works around an issue when packets contain non-null authentication data when they should be null due to disabled per-message authentication. Hitting this? "session timeout" errors. Issue observed on Dell PowerEdge 2850,SC1425. Confirmed fixed on newer firmware โœจ.
  • forcepermsg โ€” forces per-message authentication to be used no matter what the remote system advertises. Works around an issue when per-message authentication is advertised as disabled on the remote system, but it's actually required for the protocol. Hitting this? "session timeout" errors. Issue observed on IBM eServer 325.
  • endianseq โ€” flips the endian of the session sequence numbers so the session can continue properly. Works around IPMI 1.5 session sequence numbers that are the wrong endian. Hitting this? "session timeout" errors. Issue observed on some Sun ILOM 1.0/2.0 (depends on service processor endian).
  • noauthcodecheck โ€” tells FreeIPMI to not check the authentication codes returned from IPMI 1.5 command responses. Works around systems that return invalid authentication codes due to hashing or implementation errors. > โš ๏ธ Users are cautioned on the use of this option, as it removes an authentication check verifying the validity of a packet. However, in most organizations, this is unlikely to be a security issue. Hitting this? "connection timeout", "session timeout", or "password verification timeout" errors. Issue observed on Xyratex FB-H8-SRAY, Intel Windmill, Quanta Winterfell, and Wiwynn Windmill.
  • intel20 โ€” works around several Intel IPMI 2.0 authentication issues. The issues covered include padding of usernames, and password truncation if the authentication algorithm is HMAC-MD5-128. Hitting this? "username invalid", "password invalid", or "k_g invalid" errors. Issue observed on Intel SE7520AF2 with Intel Server Management Module (Professional Edition).
  • supermicro20 โ€” works around several Supermicro IPMI 2.0 authentication issues on motherboards w/ Peppercon IPMI firmware. The issues covered include handling invalid length authentication codes. Hitting this? "password invalid" errors. Issue observed on Supermicro H8QME with SIMSO daughter card. Confirmed fixed on newerver firmware. (that's the original spelling, bestie, I don't make the rules ๐Ÿ™ˆ)
  • sun20 โ€” works around several Sun IPMI 2.0 authentication issues. The issues covered include invalid lengthed hash keys, improperly hashed keys, and invalid cipher suite records. Hitting this? "password invalid" or "bmc error" errors. Issue observed on Sun Fire 4100/4200/4500 with ILOM. ๐Ÿ’ก This workaround automatically includes the "opensesspriv" workaround.
  • opensesspriv โ€” slightly alters FreeIPMI's IPMI 2.0 connection protocol to work around an invalid hashing algorithm used by the remote system. The privilege level sent during the Open Session stage of an IPMI 2.0 connection is used for hashing keys instead of the privilege level sent during the RAKP1 connection stage. Hitting this? "password invalid", "k_g invalid", "bad rmcpplus status code", or "privilege level cannot be obtained for this user" errors. Issue observed on Sun Fire 4100/4200/4500 with ILOM, Inventec 5441/Dell Xanadu II, Supermicro X8DTH, Supermicro X8DTG, Intel S5500WBV/Penguin Relion 700, Intel S2600JF/Appro 512X, Quanta QSSC-S4R/Appro GB812X-CN, Dell C5220, and the OpenIPMI software BMC. This workaround is automatically triggered with the "sun20" workaround.
  • integritycheckvalue โ€” works around an invalid integrity check value during an IPMI 2.0 session establishment when using Cipher Suite ID 0. The integrity check value should be 0 length, however the remote motherboard responds with a non-empty field. Hitting this? "k_g invalid" errors. Issue observed on Supermicro X8DTG, Supermicro X8DTU, and Intel S5500WBV/Penguin Relion 700, and Intel S2600JF/Appro 512X.
  • assumemaxsdrrecordcount โ€” informs SDR reading to stop reading after a known maximum number of SDR records have been read. Works around systems that have miss-implemented SDR reading functions. Hitting this? "SDR record count invalid" errors. Issue observed on unspecified Inspur motherboard.
  • skipchecks โ€” skips FRU checksum checks. Some FRUs have incorrect checksums, but the FRU data is correct. Hitting this? "checksum invalid" errors in your FRU output. > ๐Ÿ˜ญ Output may be unknown, pray for the best. This option is confirmed to work around compliance issues on Inventec 5441/Dell Xanadu II, Dell Poweredge R610, and Dell Poweredge R710 motherboards.
  • No IPMI 1.5 Support โ€” not a flag, but a whole vibe: some motherboards that support IPMI 2.0 have been found to not support IPMI 1.5. Hitting this? "ipmi 2.0 unavailable" or "connection timeout" errors. You can work around it by using IPMI 2.0 instead of IPMI 1.5, which you do by specifying --driver-type=LAN_2_0. Issue observed on a number of HP and Supermicro motherboards.

๐Ÿ”ฎ OEM INTERPRETATION ๐Ÿ”ฎ

okay so the following motherboards are confirmed to have atleast some support by the --interpret-oem-data option. (yes, "atleast" โ€” that's the original spelling, we keep it ๐Ÿ’…). While it's highly probable the OEM data interpretations would work across other motherboards by the same manufacturer, there are no guarantees. Also some of the motherboards below may be rebranded by vendors/distributors, so don't come for me if the label looks different.

  • Wistron/Dell Poweredge C6220

โœจ EXAMPLES โœจ

get you a bestie who can do both ๐Ÿ’– โ€” here's how it actually looks:

# ipmi-fru

Gets the FRU information of the local machine. local queen behavior ๐Ÿ‘‘

# ipmi-fru --verbose

Gets verbose FRU information of the local machine. she's giving detail.

# ipmi-fru -h ahost -u myusername -p mypassword

Gets FRU information of a remote machine using IPMI over LAN. remote but still close to my heart ๐Ÿซถ

# ipmi-fru -h mycluster[0-127] -u myusername -p mypassword

Gets FRU information across a cluster using IPMI over LAN. 128 hosts at once, she ate ๐Ÿ”ฅ


๐Ÿ’€ IPMI-FRU KNOWN ISSUES ๐Ÿ’€

Not all language codes are supported in ipmi-fru. ๐Ÿ˜ญ If you need additional language code support, please contact the FreeIPMI maintainers. They're the ones who can hook you up.


๐Ÿฉบ DIAGNOSTICS ๐Ÿฉบ

Upon successful execution, exit status is 0. On error, exit status is 1. Simple as that, no cap.

If multiple hosts are specified for communication, the exit status is 0 if and only if all targets successfully execute. Otherwise the exit status is 1. So like, one flop ruins it for everyone. main character energy but make it a cluster.


โš ๏ธ KNOWN ISSUES โš ๏ธ

On older operating systems, if you input your username, password, and other potentially security relevant information on the command line, this information may be discovered by other users when using tools like the ps(1) command or looking in the /proc file system. ๐Ÿ™ˆ Not the vibe. It's generally more secure to input password information with options like the -P or -K options. Configuring security relevant information in the FreeIPMI configuration file would also be an appropriate way to hide this information. Do that instead bestie, please.

In order to prevent brute force attacks, some BMCs will temporarily "lock up" after a number of remote authentication errors. You may need to wait awhile in order for this temporary "lock up" to pass before you may authenticate again. She's just in her timeout era, give her a minute. ๐Ÿ’…


๐Ÿ› REPORTING BUGS ๐Ÿ›

Report bugs to <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>. They genuinely wanna know fr fr ๐Ÿซถ

okay so legal stuff, but like, it's important bestie, don't skip it ๐Ÿซถ

  • Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
  • Copyright (C) 2007 The Regents of the University of California.

and the license, no cap, quoting the vibe exactly:

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

like, it's giving "free as in freedom" ๐Ÿ˜ญ๐Ÿ’… slay.


๐ŸŒˆ SEE ALSO ๐ŸŒˆ

your little friend group of other man pages, go say hi ๐Ÿ‘‹

  • freeipmi(7) โ€” the big-picture overview one, the main character of the family ๐Ÿ‘‘
  • ipmi-config(8) โ€” for when you wanna configure things instead of just reading FRU stuff

and the official site, the mothership fr fr:

http://www.gnu.org/software/freeipmi/

okay bestie, that's literally the whole page ๐Ÿ’– you now know ipmi-fru better than most people know their own passwords. go read some FRU data and be iconic about it โœจ๐ŸŽ€๐Ÿฆ‹

this page is ipmi-fru version 1.6.20, dated 2026-10-05 โ€” yeah, it's old-school cool, but it still ate ๐Ÿ’… periodt.

๐Ÿ“ฆ where this page comes from