ipmiseld(8)
๐ NAME ๐
okay bestie, meet ipmiseld โ the IPMI SEL logging daemon. This is the ipmiseld(8) manual page, and we are gonna get through every single flag together. ๐
โจ SYNOPSIS โจ
ipmiseld [OPTION...]
๐ฆ DESCRIPTION ๐ฆ
So ipmiseld is this daemon that polls the system event log (SEL) of the hosts you specify and stores those logs into your local syslog. By default, it can also make best efforts to manage the remote SELโs buffer so events are never lost โ literally protecting your event receipts. Recent logging data gets cached to disk so SEL events are not missed if the client or server is rebooted. Obsessed with not losing events, tbh. ๐
Many of the options are very similar to the ipmi-sel(8) tool. You can configure it to log the local host, a remote host, or a range of hosts to the local syslog. It can be configured via the command line arguments listed below or via the /etc/freeipmi//ipmiseld.conf configuration file. Yes, that path has a double slash โ leave it exactly like that.
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 ๐
These are the general options for configuring IPMI communication and executing general tool commands. Pick your fighter, bestie. โจ
-D IPMIDRIVER,--driver-type=IPMIDRIVERโ Use this driver type instead of doing an auto selection. The currently available outofband drivers areLANandLAN_2_0, which perform IPMI 1.5 and IPMI 2.0 respectively. The currently available inband drivers areKCS,SSIF,OPENIPMI,SUNBMC, andINTELDCMI.--disable-auto-probeโ Do not probe in-band IPMI devices for default settings.--driver-address=DRIVER-ADDRESSโ Specify the in-band driver address to use instead of the probed value.DRIVER-ADDRESSshould be prefixed with0xfor a hex value and0for an octal value.--driver-device=DEVICEโ Specify the in-band driver device path to use 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.-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 atleastUSERprivileges 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 is16for IPMI 1.5 and20for IPMI 2.0.-P,--password-promptโ Prompt for password to avoid possibility of listing it in process lists.-k K_G,--k-g=K_Gโ Specify theK_gBMC 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 with0x. E.g., the keyabccan be entered with either the stringabcor the string0x616263.-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 to20000milliseconds (20seconds) if not specified.--retransmission-timeout=MILLISECONDSโ Specify the packet retransmission timeout in milliseconds. Defaults to1000milliseconds (1second) if not specified. The retransmission timeout cannot be larger than the session timeout.-a AUTHENTICATION-TYPE,--authentication-type=AUTHENTICATION-TYPEโ Specify the IPMI 1.5 authentication type to use. The currently available authentication types areNONE,STRAIGHT_PASSWORD_KEY,MD2, andMD5. Defaults toMD5if 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 ID3if not specified. The following cipher suite ids are currently supported:0โ Authentication Algorithm =None; Integrity Algorithm =None; Confidentiality Algorithm =None1โ Authentication Algorithm =HMAC-SHA1; Integrity Algorithm =None; Confidentiality Algorithm =None2โ Authentication Algorithm =HMAC-SHA1; Integrity Algorithm =HMAC-SHA1-96; Confidentiality Algorithm =None3โ Authentication Algorithm =HMAC-SHA1; Integrity Algorithm =HMAC-SHA1-96; Confidentiality Algorithm =AES-CBC-1286โ Authentication Algorithm =HMAC-MD5; Integrity Algorithm =None; Confidentiality Algorithm =None7โ Authentication Algorithm =HMAC-MD5; Integrity Algorithm =HMAC-MD5-128; Confidentiality Algorithm =None8โ Authentication Algorithm =HMAC-MD5; Integrity Algorithm =HMAC-MD5-128; Confidentiality Algorithm =AES-CBC-12811โ Authentication Algorithm =HMAC-MD5; Integrity Algorithm =MD5-128; Confidentiality Algorithm =None12โ Authentication Algorithm =HMAC-MD5; Integrity Algorithm =MD5-128; Confidentiality Algorithm =AES-CBC-12815โ Authentication Algorithm =HMAC-SHA256; Integrity Algorithm =None; Confidentiality Algorithm =None16โ Authentication Algorithm =HMAC-SHA256; Integrity Algorithm =HMAC_SHA256_128; Confidentiality Algorithm =None17โ Authentication Algorithm =HMAC-SHA256; Integrity Algorithm =HMAC_SHA256_128; Confidentiality Algorithm =AES-CBC-128
-l PRIVILEGE-LEVEL,--privilege-level=PRIVILEGE-LEVELโ Specify the privilege level to be used. The currently available privilege levels areUSER,OPERATOR, andADMIN. Defaults toOPERATORif not specified.--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.--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.
โจ IPMISELD OPTIONS โจ
Okay bestie, these are the options that are specific to ipmiseld โ the main-character menu, if you will ๐. The general stuff already got covered, so this is the part where things get extra.
-vโ Log verbose information. This option will log additional information. Most notably it will output additional hex codes to given information on ambiguous SEL entries or SEL records. For example, it will output Generator ID hex codes for sensors without names. Additional non-critical SEL errors or issues will also be logged. Somewhat common errors, such as timeouts or invalid hostnames, will output with increased verbosity. ๐ฌ-t SENSOR-TYPE-LIST,--sensor-types=SENSOR-TYPE-LISTโ Specify sensor types of SEL events to log. By default, all sensor types are logged. A special command line type of"all"will indicate all types should be shown (may be useful for overriding configured defaults). Multiple types can be separated by commas or spaces. Users may specify sensor types by string (see--list-sensor-typesinipmi-sel(8)) or by number (decimal or hex). ๐-T SENSOR-TYPE-LIST,--exclude-sensor-types=SENSOR-TYPE-LISTโ Specify sensor types of SEL events to not log. By default, no sensor types are filtered. A special command line type of"none"will indicate no types should be excluded (may be useful for overriding configured defaults). Multiple types can be separated by commas or spaces. Users may specify sensor types by string (see--list-sensor-typesinipmi-sel(8)) or by number (decimal or hex). ๐ซ--system-event-onlyโ Log only system event records (i.e. don't log OEM records). ๐ฅ๏ธ--oem-event-onlyโ Log only OEM event records (i.e. don't log system event records). ๐ท๏ธ--event-state-config-file=FILEโ Specify an alternate event state configuration file. ๐--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. ๐--entity-sensor-namesโ Output sensor names prefixed with their entity id and instance number when appropriate. This may be necessary on some motherboards to help identify what sensors are referencing. For example, a motherboard may have multiple sensors named'TEMP'. The entity id and instance number may help clarify which sensor refers to"Processor 1"vs."Processor 2". ๐งญ--non-abbreviated-unitsโ Output non-abbreviated units (e.g.'Amps'instead of'A'). May aid in disambiguation of units (e.g.'C'for Celsius or Coulombs). ๐--event-state-filter=FILTERSTRINGโ Specify event states to be filtered out and not logged. Possible inputs areNOMINAL,WARNING,CRITICAL, andNA. Multiple states can be listed separated by comma. The special case string of"none"will indicate no event states should be excluded (may be useful for overriding configured defaults). ๐ง--warning-threshold=PERCENTINTโ Specify SEL fullness warning threshold as an integer percentage. When the SEL is past this percentage full, a warning will be output indicating that SEL is nearly full. Specify0to disable warning logs. Defaults to80. โ ๏ธ--clear-threshold=PERCENTINTโ Specify SEL fullness clear threshold as an integer percentage. When the SEL is past this percentage full,ipmiseldwill attempt to clear the SEL. Specify0to disable clearing. When the SEL is full, it will be the responsibility of the user to clear the SEL manually if clearing is disabled. Defaults to0. If specified to a non-zero value, be careful that the clearing of the SEL could affect other applications that monitor the SEL, such as monitoring applications that useipmi-sel(8)orlibipmimonitoring(3). ๐ญ
โ ๏ธ Bestie, for real: --clear-threshold with a non-zero value can mess with other apps watching the SEL. Proceed with care, fr fr.
--system-event-format=FORMATSTRINGโ Specify the format of the log output when a SEL system event is encountered. Defaults to"SEL System Event: %d, %t, %s, %I, %E"if logging locally,"SEL System Event(%H): %d, %t, %s, %I, %E"if logging outofband or with hostranges. See SEL LOG FORMAT STRING below for formatting details. ๐งพ--oem-timestamped-event-format=FORMATSTRINGโ Specify the format of the log output when a SEL OEM timestamped event is encountered. Defaults to"SEL OEM Event: %d, %t, %I, %o"if logging locally,"SEL OEM Event(%H): %d, %t, %I, %o"if logging outofband or with hostranges.. See SEL LOG FORMAT STRING below for formatting details. โฐ--oem-non-timestamped-event-format=FORMATSTRINGโ Specify the format of the log output when a SEL OEM non-timestamped event is encountered. Defaults to"SEL OEM Event: %I, %o"if logging locally,"SEL OEM Event(%H): %I, %o"if logging outofband or with hostranges.. See SEL LOG FORMAT STRING below for formatting details. ๐--poll-interval=SECONDSโ Specify the poll interval to check the SEL for new events. Defaults to300seconds (i.e. 5 minutes). โณ--log-facility=STRINGโ Specify the log facility to use. Defaults toLOG_DAEMON. Legal inputs areLOG_DAEMON,LOG_USER,LOG_LOCAL0,LOG_LOCAL1,LOG_LOCAL2,LOG_LOCAL3,LOG_LOCAL4,LOG_LOCAL5,LOG_LOCAL6,LOG_LOCAL7. ๐--log-priority=STRINGโ Specify the log priority to use. Defaults toLOG_ERR. Legal inputs areLOG_EMERG,LOG_ALERT,LOG_CRIT,LOG_ERR,LOG_WARNING,LOG_NOTICE,LOG_INFO,LOG_DEBUG. ๐จ--cache-directory=DIRECTORYโ Specify an alternate cache directory location foripmiseldto use. The cache directory will be used to cache a wide variety of data, including the SDR and recent logging information to ensure log entries are not missed on reboots and other system failures. ๐พ--ignore-sdrโ Ignore SDR 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. ๐--re-download-sdrโ Re-download the SDR on start even if it is not out of date. This may help work around systems that do not properly timestamp SDR modification times. ๐--clear-selโ On startup, clear any SEL being monitored. May be useful the first time runningipmiseldto avoid warning messages or SEL clears until a long time in the future. ๐งน--threadpool-count=NUMโ Specify the number of threads for parallel SEL polling. This option is very similar to the--fanoutoption inipmi-sel(8)but the threads are created only once on initialization for faster processing. Defaults to8, however the threadpool count will always be decreased if the number of nodes specified is less than the number of threads. ๐งต--test-runโ Do not daemonize, output the current SEL of configured hosts as a test of current settings and configuration. SEL entries will be output to stdout instead of syslog. ๐งช--foregroundโ Run daemon in the foreground. SEL entries will be output to stdout instead of syslog. ๐
๐ SEL LOG FORMAT STRING ๐
The output format of log messages can be adjusted via the --system-event-format, --oem-timestamped-event-format and --oem-non-timestamped-event-format options. Options such as --interpret-oem-data, --entity-sensor-names, and --non-abbreviated-units can further adjust the output format. The following conversion directives will allow the user to output specifics of each SEL event that occurs. โจ
For System, OEM timestamped, and OEM non-timestamped events
%Hโ target host, useful if logging from multiple hosts ๐%iโ record ID in decimal ๐ข%Iโ event state interpretation (NOMINAL,WARNING, orCRITICAL) ๐ฆ
For System and OEM timestamped events
%tโ time in formatH:M:Susing 24 hour clock ๐ฐ๏ธ%dโ date in formatMON-D-YEAR(e.g.Dec-01-2012) ๐
For System events
%Tโ sensor type ๐ก๏ธ%sโ sensor name ๐ท๏ธ%eโ event data 1 string 1๏ธโฃ%fโ event data 2 string[2]2๏ธโฃ%hโ event data 3 string 3๏ธโฃ%cโ combined event data 2 and event data 3 string ๐%pโ event data 2 previous state string โฎ๏ธ%Sโ event data 2 severity string ๐จ%Eโ combined event data 1, 2, and 3 string ๐งฉ%kโ event direction ๐งญ
For OEM timestamped events
%mโ manufacturer id ๐ญ
For OEM timestamped and OEM non-timestamped events
%oโ oem data in hex ๐ก%Oโ OEM supplied string describing the event (depends on manufacturer) ๐ท๏ธ
๐ HOSTRANGED SUPPORT ๐
Multiple hosts can be input either as an explicit comma separated lists of hosts or a range of hostnames in the general form: prefix[n-m,l-k,...], where n < m and l < k, etc. The later form should not be confused with regular expression character classes (also denoted by []). For example, foo[19] does not represent foo1 or foo9, but rather represents a degenerate range: foo19. ๐ฆ
This range syntax is meant only as a convenience on clusters with a prefixNN naming convention and specification of ranges should not be considered necessary -- the list foo1,foo9 could be specified as such, or by the range foo[1,9]. ๐ธ
Some examples of range usage follow:
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
As a reminder to the reader, some shells will interpret brackets ([ and ]) for pattern matching. Depending on your shell, it may be necessary to enclose ranged lists within quotes. ๐
In-band IPMI Communication will be used when the host "localhost" is specified. This allows the user to add the localhost into the hostranged output. ๐ซถ
๐ ๏ธ GENERAL TROUBLESHOOTING ๐ ๏ธ
okay bestie, gather round, because like 99% of the time an IPMI problem is literally just a config problem. no cap. it's not haunted, it's just set up wrong ๐
IPMI over LAN problems are basically always a misconfiguration on the remote machine's BMC. so double check that all of this is actually configured properly over there: IP address, MAC address, subnet mask, username, user enablement, user privilege, password, LAN privilege, LAN enablement, and allowed authentication type(s). for IPMI 2.0 connections, also double check that the cipher suite privilege(s) and the K_g key are configured properly. the ipmi-config(8) tool can check and/or change all of these settings for you, slay ๐ซถ
Inband IPMI problems are typically caused by improperly configured drivers or non-standard BMCs. annoying, but that's the vibe.
besides the tips down below, please also peek at WORKAROUNDS below to see if there are any vendor specific bugs that have been discovered and worked around. iykyk.
listed below are many of the common issues you'll see in error messages. for additional support, please e-mail the <freeipmi-users@gnu.org> mailing list โ the girlies there are helpful fr fr โจ
- "username invalid" โ the username you entered (or a NULL username if you entered none) is not available on the remote machine. it may also be possible that the remote BMC's username configuration is just 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 literally cannot be differentiated which one happened ๐ญ
- "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.
- "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 is not available for this privilege level. please try again with an alternate authentication type or alternate privilege level. it may also be possible 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.
- "connection timeout" โ initial IPMI communication failed. a number of potential errors are possible, including an invalid hostname specified, an IPMI IP address that cannot be resolved, IPMI not being enabled on the remote server, the network connection being bad, 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 naming names but ๐).
- "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.
- "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, respect it ๐
- "could not find inband device" โ an inband device could not be found. please check configuration or specify 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. yeah, this one's the same name as above but a whole different situation, don't @ me ๐ญ
- "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's a "not me" moment for real, please tell the devs ๐
๐ฉบ IPMISELD TROUBLESHOOTING ๐ฉบ
so some timestamps in the SEL may report a date of 1-Jan-1970 โ that's the epoch for SEL timestamps. and ngl, this timestamp is not necessarily incorrect โจ it usually indicates a hardware event that occurred before a timestamp in firmware has been initialized. for example, certain hardware components will have their internal clocks reset during a power cycle. so like, the clock just got reset mid-event, it's fine, it's giving "just woke up and forgot what day it is" energy.
however, if the internal clock of the SEL appears to be regularly incorrect, you may need to set the SEL time. this can be done using bmc-device(8). periodt ๐
the following are common SEL related messages:
- "sel config file parse error" โ a parse error was found in the sel event interpretation configuration file. please see
freeipmi_interpret_sel.conf(5).
๐ ๏ธ WORKAROUNDS ๐ ๏ธ
Okay so here's the whole situation bestie: literally so many vendors are out here writing their own IPMI implementations, and some of them... did not cook. ๐ Different vendors implement their IPMI protocols wrong in their own special little ways. Below is the rundown of the workarounds that exist right now for the compliance issues we've found.
Where we could, the workarounds are implemented so they're lowkey invisible to you โ you just never notice. But some of them you have to explicitly ask for with the -W option. So pay attention. ๐
Heads up: the hardware listed under each workaround might only be the hardware where the problem was first discovered. Newer versions of that same hardware may have fixed it. Similar machines from the same vendor may or may not have the same problem โ it's giving "your mileage may vary." And plot twist: different vendors sometimes license firmware from the same IPMI firmware developer, so even if your motherboard isn't on the list, it's still worth trying the workaround. Slay.
If you're sitting there thinking your hardware has some additional compliance issue that needs a workaround written for it, hit up the FreeIPMI maintainers at <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>. They'd genuinely love to hear from you. ๐ซถ
assumeioโ this one assumes inband interfaces talk to system I/O instead of being memory-mapped. It's the fix for systems that report base addresses that are just... wrong. If this is your issue you might be seeingdevice not supportedorcould not find inband deviceerrors. Issue observed on HP ProLiant DL145 G1.spinpollโ this flag tells some inband drivers (the KCS driver is the main character here) to spin while polling instead of putting the process to sleep. Why would you want that? Because it can significantly improve the wall clock running time of tools โ an operating system scheduler's granularity may be way bigger than the time it takes to do a single IPMI message transaction. Trade-off though: by spinning, your system may be doing less useful work, since it's not contexting the tool out for something more productive. It's giving "I'm busy but am I useful busy." ๐ญauthcapโ skip the early checks for username capabilities, authentication capabilities, and K_g support, and just let IPMI authentication succeed. It works around a whole pile of issues where the remote system doesn't properly report username capabilities, authentication capabilities, or K_g status. Hitting this one? You may seeusername invalid,authentication type unavailable for attempted privilege level, ork_g invaliderrors. Issue observed on Asus P5M2/P5MT-R/RS162-E4/RX4, Intel SR1520ML/X38ML, and Sun Fire 2200/4150/4450 with ELOM.nochecksumcheckโ tells FreeIPMI to not check the checksums returned from IPMI command responses. Works around systems that return invalid checksums because of implementation errors even though the packet is otherwise valid. โ ๏ธ Be careful with this one: it removes validation of packet integrity in a number of circumstances. That said, it's unlikely to be a problem in most situations. Symptoms of this issue includeconnection timeout,session timeout, orpassword verification timeouterrors. On IPMI 1.5 connections, thenoauthcodecheckworkaround may also be needed too. Issue observed on Supermicro X9SCM-iiF, Supermicro X9DRi-F, and Supermicro X9DRFR.idzeroโ lets the client accept empty session IDs. Works around IPMI sessions that report empty session IDs to the client. If you're hitting it you may seesession timeouterrors. Issue observed on Tyan S2882 with M3289 BMC.unexpectedauthโ allows unexpected non-null authcodes to be checked as though they were expected. Works around an issue where packets contain non-null authentication data when they should be null, because per-message authentication is disabled. You'd seesession timeouterrors. 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 is advertising. Works around an issue where per-message authentication is advertised as disabled on the remote system but is actually required for the protocol. Symptoms:session timeouterrors. Issue observed on IBM eServer 325.endianseqโ flips the endian of the session sequence numbers so the session can actually keep going. Works around IPMI 1.5 session sequence numbers that are in the wrong endian. You'd be seeingsession timeouterrors. 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 returning invalid authentication codes due to hashing or implementation errors. โ ๏ธ Caution again, bestie: this removes an authentication check that verifies the validity of a packet. That said, in most organizations it's unlikely to be a security issue. Symptoms includeconnection timeout,session timeout, orpassword verification timeouterrors. Issue observed on Xyratex FB-H8-SRAY, Intel Windmill, Quanta Winterfell, and Wiwynn Windmill.intel20โ works around several Intel IPMI 2.0 authentication issues, including padding of usernames, and password truncation if the authentication algorithm is HMAC-MD5-128. You'd seeusername invalid,password invalid, ork_g invaliderrors. 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. What it covers: handling invalid length authentication codes. Symptoms:password invaliderrors. Issue observed on Supermicro H8QME with SIMSO daughter card. Confirmed fixed on newer firmware.sun20โ works around several Sun IPMI 2.0 authentication issues, including invalid lengthed hash keys, improperly hashed keys, and invalid cipher suite records. You may seepassword invalidorbmc errorerrors. Issue observed on Sun Fire 4100/4200/4500 with ILOM. This workaround automatically includes theopensessprivworkaround, cute right? Two for one. ๐opensessprivโ slightly alters FreeIPMI's IPMI 2.0 connection protocol to work around an invalid hashing algorithm used by the remote system. Specifically: the privilege level sent during the Open Session stage of an IPMI 2.0 connection gets used for hashing keys, instead of the privilege level sent during the RAKP1 connection stage. Symptoms you might see:password invalid,k_g invalid,bad rmcpplus status code, orprivilege level cannot be obtained for this usererrors. 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 thesun20workaround.integritycheckvalueโ works around an invalid integrity check value during IPMI 2.0 session establishment when using Cipher Suite ID 0. The integrity check value should be 0 length, but the remote motherboard responds with a non-empty field. You'd seek_g invaliderrors. Issue observed on Supermicro X8DTG, Supermicro X8DTU, and Intel S5500WBV/Penguin Relion 700, and Intel S2600JF/Appro 512X.assumesystemeventโ assumes invalid SEL record types are system event records. The thing is, records may be formatted correctly but report invalid record types. Symptoms:Unknown SEL Record Typeerrors. Honestly? Output may be unknown, pray for the best. ๐ This option is confirmed to work around compliance issues on HP DL 380 G5 motherboards.- No IPMI 1.5 Support โ okay this one isn't a flag, it's a whole situation. Some motherboards that support IPMI 2.0 have been found to not support IPMI 1.5 at all. You'll see
ipmi 2.0 unavailableorconnection timeouterrors. Workaround: just use IPMI 2.0 instead of IPMI 1.5 by specifying--driver-type=LAN_2_0. Issue observed on a number of HP and Supermicro motherboards.
๐ OEM INTERPRETATION ๐
These motherboards are confirmed to have at least some support by the --interpret-oem-data option. Now โ it's highly probable the OEM data interpretations would work across other motherboards from the same manufacturer, but there are no guarantees, okay? No cap. Also some of the motherboards below may be rebranded by vendors/distributors, so don't come for me if your board has a different logo on it. ๐
- Dell Poweredge 2900
- Dell Poweredge 2950
- Dell Poweredge R610
- Dell Poweredge R710
- Fujitsu iRMC S1 and iRMC S2 systems
- Intel S5500WB/Penguin Computing Relion 700
- Intel S2600JF/Appro 512X
- Intel S5000PAL
- Inventec 5441/Dell Xanadu II
- Inventec 5442/Dell Xanadu III
- Quanta S99Q/Dell FS12-TY
- Quanta QSSC-S4R/Appro GB812X-CN
- Sun X4140
- Supermicro X7DBR-3
- Supermicro X7DB8
- Supermicro X8DTN
- Supermicro X7SBI-LN4
- Supermicro X8DTH
- Supermicro X8DTG
- Supermicro X8DTU
- Supermicro X8DT3-LN4F
- Supermicro X8DTU-6+
- Supermicro X8DTL
- Supermicro X8DTL-3F
- Supermicro X8SIL-F
- Supermicro X9SCL
- Supermicro X9SCM
- Supermicro X8DTN+-F
- Supermicro X8SIE
- Supermicro X9SCA-F-O
- Supermicro H8DGU-F
- Supermicro X9DRi-F
- Supermicro X9DRI-LN4F+
- Supermicro X9SPU-F-O
- Supermicro X9SCM-iiF
- Wistron/Dell Poweredge C6220
๐ KNOWN ISSUES ๐
On older operating systems, if you put your username, password, and other potentially security-relevant info right there on the command line, other users may be able to discover it โ like by using tools such as the ps(1) command, or by looking in the /proc file system. Not iconic. ๐ 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.
Also, to prevent brute force attacks, some BMCs will temporarily "lock up" after a number of remote authentication errors. So if you're getting rejected over and over, you may need to wait awhile for this temporary "lock up" to pass before you can authenticate again. It's not broken, it's just being dramatic. ๐ญ
๐ FILES ๐
/etc/freeipmi//ipmiseld.conf
/var/cache/ipmiseld/
(Yes, the double slash is in there. That's canon, don't touch it. ๐ )
๐ REPORTING BUGS ๐
Report bugs to <freeipmi-users@gnu.org> or <freeipmi-devel@gnu.org>.
ยฉ๏ธ COPYRIGHT ยฉ๏ธ
Copyright (C) 2012-2015 Lawrence Livermore National Security, LLC.
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. ๐ซถ
๐ SEE ALSO ๐
okay bestie, when you're done here and you want more reading material (because of course you do ๐ ), go check out:
freeipmi(7)ipmi-sel(8)ipmiseld.conf(5)bmc-device(8)ipmi-config(8)freeipmi_interpret_sel.conf(5)
and if you're a web-surfing kinda girly pop:
http://www.gnu.org/software/freeipmi/
go look at the actual website, it's giving official documentation energy โจ
okay that's literally the whole page ๐ bestie you made it to the end, I'm so proud, that was a long one ngl ๐
and for the record, this whole iconic little manual is from ipmiseld 1.6.20 โ dated 2026-10-05 โ so if you're reading some crusty old version, bestie, go update ๐ slay ๐
now go check your SEL and have the day you deserve ๐๐ธ
๐ฆ where this page comes from
- arch rolling: freeipmi 1.6.20-1 ยท GPL-3.0-or-later
- centos-stream 10: freeipmi-ipmiseld 1.6.20-1.el10 ยท GPL-3.0-or-later
- centos-stream 9: freeipmi-ipmiseld 1.6.20-1.el9 ยท GPLv3+
- Copyright (C) 2012-2015 Lawrence Livermore National Security, LLC
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms