Git Product home page Git Product logo

freeipmi-mirror's Introduction

FreeIPMI - Copyright (C) 2003-2015 FreeIPMI Core Team

FreeIPMI
--------

FreeIPMI provides in-band and out-of-band IPMI software based on the
IPMI v1.5/2.0 specification.

What is IPMI?
-------------

The IPMI specification defines a set of interfaces for platform
management.  It is utilized by a wide variety of vendors for system
management on motherboards.  The features of IPMI that most users will
be interested in are sensor monitoring, remote power control,
serial-over-LAN (SOL), and system debugging.  The FreeIPMI tools and
libraries listed below should provide users with the ability to access
and utilize these features.

Getting Started with IPMI
-------------------------

IPMI can be used in-band (i.e. running on a machine locally) or
out-of-band (i.e. connecting remotely).

Most FreeIPMI tools can operate in-band by using one of the in-band
drivers included.  These in-band drivers include a userspace KCS
interface driver, a SSIF driver through the Linux SSIF device
(i.e. /dev/i2c-0), the OpenIPMI Linux kernel driver (i.e. /dev/ipmi0),
the Sun/Solaris BMC driver (i.e. /dev/bmc), and the Intel DCMI/MEI
driver (i.e. /dev/dcmi).  If your system requires the use of installed
drivers, those appropriate modules must be installed ahead of time.
However, most systems should automatically load these drivers when
appropriate.

Under most scenarios, the FreeIPMI tools should automatically discover
which in-band interface to use and the proper settings to use.  Users
may execute the tools on the command line to begin using them.  Some
motherboards may require you to determine driver type, addresses,
paths, etc. on your own and pass them as command line options to the
tools.  You may use ipmi-locate(8) to help determine this information.
Other tools such as dmidecode(8) may also provide this information.

To use IPMI out-of-band with tools such as ipmipower(8) or
ipmi-sensors(8), the remote machine's BMC must first be configured for
out of band communication.  Typically, this involves setting a
username, password, IP address, MAC address, and a few other
parameters.  This can be done using the tool ipmi-config(8).
Additional information on how to configure with ipmi-config(8) can be
found in the ipmi-config.conf(5) manpage.  Some vendors may
pre-configure their motherboards with default values so that
ipmi-config(8) can be used remotely to configure the machine.  However,
most of the time, the BMC must be configured in-band before
out-of-band access can be allowed (for example, the correct IP address
and MAC address must be configured).

In order to remotely connect to a machine, you typically must specify
the host, username, and password for the tool in order to connect.
Depending on configuration settings, a K_g key, privilege level,
authentication type, cipher suite id, or protocol version may need to
be specified.

Some vendors may have not implemented IPMI properly and a workaround
must be specified into FreeIPMI to ensure the tool can execute
properly.  For example, a fair number of vendors have populated their
FRU records with invalid checksums.  To properly ignore these set of
checksums a 'skipchecks' workaround has been added to ipmi-fru(8).
Please see each of the tool manpages to see a list of available
workarounds.

Additional information, examples, and general trouble-shooting can be
found in each of the tool manpages.

General Use
-----------

The primary tools that most users of FreeIPMI will be interested in
for system management are the following:

ipmi-sensors

A tool to read IPMI sensor readings to aid in system monitoring.

ipmi-sel

A tool to read and manage IPMI System Event Log (SEL) records to aid
in system debugging.

ipmipower

A tool for remote power control.

ipmiconsole

A tool for Serial-over-Lan (SOL) console access.

Many other tools and libraries are listed below that cover additional
features and areas of IPMI.

Additional information, examples, and general trouble-shooting can be
found in each of the tool manpages.

Configuration
-------------

In order to avoid typing in a long list of command line options to
specify IPMI communication requirements every time a command is
executed (e.g. driver paths, usernames, passwords, etc.), an
alternate set of default values can be set for most FreeIPMI
tools in the FreeIPMI configuration file.  See freeipmi.conf(5)
for more information.

HPC Support
-----------

Much of FreeIPMI was written with HPC support in mind.  Ipmi-config(8)
comes with file input/output support so that configuration can be
copied and verified across nodes in a cluster.  Most tools (like
ipmipower(8) and ipmi-sensors(8)) come with hostrange support so
multiple hosts can be specified on the command line at the same time
and IPMI can be executed against the hosts in parallel.  See tool
manpages for more information.  Also see the document
freeipmi-hostrange.txt for detailed usage and explanation.
Ipmi-sensors(8) and the libipmimonitoring(3) library support the
ability to interpret sensor readings as well as just reporting them.
By mapping sensor readings into NOMINAL, WARNING, or CRITICAL states,
it makes monitoring sensors easier across large numbers of nodes.

Development
-----------

For information on the libraries that can be used to program IPMI
applications with, please see, please see libfreeipmi(3),
libipmiconsole(3), libipmimonitoring(3), and libipmidetect(3).  Or
see the document freeipmi-libraries.txt.

Project Tools
-------------

The following tools are distributed and supported by FreeIPMI.

bmc-info

A tool to read information about a BMC such as device version numbers,
device support, and globally unique IDs (guids).

bmc-watchdog

A tool/daemon to manage a BMC Watchdog. This tool is typically used
for system timeout management and automatic system restarts in the
event of a system crash.

ipmi-chassis

A tool to manage/monitor a chassis, such as chassis power,
identification (i.e. LED control), and status.

ipmi-fru

A tool to read field replaceable unit (FRU) information from a
motherboard/machine.

ipmi-sel

A tool to read and manage IPMI System Event Log (SEL) records.  SEL
records store system event information and may be useful for debugging
problems.

ipmi-sensors

A tool to read IPMI sensor readings and sensor data repository (SDR)
information.

ipmipower

A tool for remote power control.

ipmiconsole

A tool for Serial-over-Lan (SOL) console access.

ipmi-config

A tool to configure BMC and IPMI information.  In can be used to
configured usernames, passwords, networking information, security,
Serial-over-LAN (SOL), Platform Event Filtering (PEF), boot devices,
power restoration policy, sensor thresholds, sensor events, and many
more configuration options.

ipmi-raw

A tool that provides hex input/output of IPMI commands.

ipmi-locate

A tool that can probe for information about the location of a BMC
device, such as device addresses.

ipmi-pet

A tool to parse and interpret Platform Event Traps (PET).

ipmi-dcmi

A tool to perform Data Center Manageability Interface (DCMI) IPMI
extension commands.  Supports extensions for asset management and
power usage management.

bmc-device

A tool to perform advanced BMC commands, such as resetting the BMC,
configuring ACPI, configuring SDR/SEL time, manually generating
events, re-arming sensors, and configuring manufacturer settings.

ipmiping

An IPMI ping tool for debugging.

rmcpping

A RMCP ping tool for debugging.

ipmi-oem

An IPMI tool for OEM specific commands.

ipmidetect/ipmidetectd

A tool and daemon for IPMI node detection.

ipmiseld

A daemon that regularly polls the SEL and stores the events to the
local syslog.

Additional information, examples, and general trouble-shooting can be
found in each of the tool manpages.

Project Libraries
-----------------

The following libraries are distributed and supported by FreeIPMI.

libfreeipmi

A C library that includes KCS, SSIF, OpenIPMI Linux, and Solaris BMC
drivers, IPMI 1.5 and IPMI 2.0 LAN communication interfaces, IPMI
packet building utilities, IPMI command utilities, and utilities for
reading/interpreting/managing IPMI.  This library is for programmers
intimately familiar with the IPMI protocol and IPMI specification.
Most users may wish to use the libraries listed below.

libipmiconsole

A library for Serial-over-Lan (SOL) console access.  SOL console
access is abstracted into a file descriptor interface, so users may
read and write console data through a file descriptor.

libipmimonitoring

A library for sensor and system event log (SEL) monitoring that
abstracts away most IPMI details.  Interpretation of those sensors and
events is abstracted into an API with an iterator interface.

libipmidetect

A library for IPMI node detection.

Building
--------

For those who have downloaded official releases, please follow the
directions in INSTALL for building and installation.

For those trying to build from the repo you typically need to run
autogen.sh first.  i.e.

> ./autogen.sh; ./configure; make

to build.

Most systems should have all the packages you need to build already
installed.  The one semi-untypical package that may not be installed
is libgcrypt and its development headers (i.e. libgcrypt-devel or
libgcrypt-dev).

To build an rpm, you typically want to make a release distribution and
use rpmbuild with it.  In modern systems, typically the following will
work:

> make dist
> rpmbuild -ta --with systemd freeipmi-<VERSION>.tar.gz

Help, Questions, etc.
---------------------

Please send comments, help, and questions to the freeipmi mailing
lists, [email protected] and [email protected].  Or see
our webpage at http://www.gnu.org/software/freeipmi/.

freeipmi-mirror's People

Contributors

bmwiedemann avatar casual-lemon avatar charles-rose avatar chkohn avatar chu11 avatar cpaelzer avatar dannf avatar fantu avatar ffontaine avatar ikepanhc avatar lamontj avatar lipixx avatar pcahyna avatar planeta avatar rlpowell avatar sevagh avatar thesamesam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

freeipmi-mirror's Issues

Incorrect temperature sensor reading with ipmi-sensor

ipmi-sensors reads the wrong sensor on a Lenovo BMC (although the problem may happen on other BMCs as well)

More information here:
https://bugs.launchpad.net/ubuntu/+source/freeipmi/+bug/1926299

ubuntu@ubuntu:~$ ipmi-sensors --version
ipmi-sensors - 1.4.11
ubuntu release - Bionic 18.04

ipmi-sensors -u USERID -p XXXXXXX -D LAN_2_0 -l USER -h x.x.x.x | grep DIMM | grep Temp

146 | DIMM 13 Temp | Temperature | 27.00 | C | 'OK'
149 | DIMM 14 Temp | Temperature | 26.00 | C | 'OK'
152 | DIMM 15 Temp | Temperature | 24.00 | C | 'OK'
155 | DIMM 16 Temp | Temperature | 24.00 | C | 'OK'
158 | DIMM 17 Temp | Temperature | 218.00 | C | 'OK'
161 | DIMM 18 Temp | Temperature | 212.00 | C | 'OK'
165 | DIMM 19 Temp | Temperature | 212.00 | C | 'OK'
Device LUNs
[3] - 1b = LUN 3 has sensors
[2] - 1b = LUN 2 has sensors
[1] - 1b = LUN 1 has sensors
[0] - 1b = LUN 0 has sensors

The issue occurs because an IPMI sensor with multi-LUN (LUN larger than zero) is not handled properly in VMware ESXi. This only impacts AMD 2P based servers and ThinkSystem V2 based servers. 
      10h] = sensor_owner_id[ 7b]
       0h] = sensor_owner_lun[ 2b]
       0h] = sensor_owner_lun.reserved[ 2b]

ipmi-sensors output again to see if the two 0x61 sensor id objects have different lun numbers
DIMM 16
100.x.x.x: [              10h] = sensor_owner_id[ 7b]
100.x.x.x: [               1h] = sensor_owner_lun[ 2b]
100.x.x.x: [               0h] = sensor_owner_lun.reserved[ 2b]

DIMM 17
100.x.x.x: [              10h] = sensor_owner_id[ 7b]
100.x.x.x: [               0h] = sensor_owner_lun[ 2b]
100.x.x.x: [               0h] = sensor_owner_lun.reserved[ 2b]

When the LUN number is not the default (00b) the sensor is reporting
back an incorrect temperature reading.
You are allowed to change the default, but unless otherwise specified,
commands listed as mandatory must be accessed with LUN 00b.
Note ipmi-tools correctly reports the sensor temperature
because it knows how to use the alternative LUN number correctly.

Static build failure with ipmitool

Static build of ipmitool with freeipmi raises the following build failure because both packages define md5_init and md5_finish:

/tmp/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips64el-buildroot-linux-uclibc/8.4.0/../../../../mips64el-buildroot-linux-uclibc/bin/ld: /tmp/instance-1/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/lib64/../lib64/libfreeipmi.a(libfreeipmi_la-ipmi-md5.o): in function `md5_init':
/tmp/instance-1/output-1/build/freeipmi-1.6.8/libfreeipmi/libcommon/ipmi-md5.c:130: multiple definition of `md5_init'; ../lib/.libs/libipmitool.a(md5.o):/tmp/instance-1/output-1/build/ipmitool-1.8.18/lib/../src/plugins/lan/md5.c:316: first defined here
/tmp/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips64el-buildroot-linux-uclibc/8.4.0/../../../../mips64el-buildroot-linux-uclibc/bin/ld: /tmp/instance-1/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/lib64/../lib64/libfreeipmi.a(libfreeipmi_la-ipmi-md5.o): in function `md5_finish':
/tmp/instance-1/output-1/build/freeipmi-1.6.8/libfreeipmi/libcommon/ipmi-md5.c:357: multiple definition of `md5_finish'; ../lib/.libs/libipmitool.a(md5.o):/tmp/instance-1/output-1/build/ipmitool-1.8.18/lib/../src/plugins/lan/md5.c:362: first defined here

Full build log: http://autobuild.buildroot.org/results/feb/feb68f64d53648f7c95ae825b9c35d086a16154f/build-end.log

I would advise to prefix md5 functions with freeipmi_ to fix the issue.

comment error in libipmimonitoring

Per discussion on users mailing list

...
/*
 * ipmi_monitoring_sensor_iterator_next
 *
 * Advance iterator to the next set of sensors information
 *
 * Returns 0 on success, -1 on error
 */
int ipmi_monitoring_sensor_iterator_next (ipmi_monitoring_ctx_t c);
...

However I see different behavior - the function returns 1 if iterator has
been advanced successfully, and it returns 0 in the end.

Failure to build on Ubuntu with GCC 7.3.0

From from mailing list

Please also see my question and answer on SO:

https://stackoverflow.com/questions/49565383/gcc-ver-7-3-0-preprocessor-fails-if-output-file-doesnt-exist


---------- Forwarded message ----------
From: Aleksey Yakovlev <[email protected]>
Date: Thu, Mar 29, 2018 at 5:52 PM
Subject: Failure to build on Ubuntu with GCC 7.3.0
To: [email protected]


I got a problem building the FreeIPMI Ver 1.6.1 on a box with GCC 7.3.0.
The 'make' tool enters the 'man' subdirectory and calls the GCC
preprocessor, and it looks like it's unable to process input files.

Can anybody please take a look and invent some way to overcome that?

add new IPMI errata #6 IPv6 support into libfreeipmi

This is a fork off of issue #8

Here's some initial thoughts on the more manual activities that have to be done to get IPv6 support into ipmi-config. Some times unknown w/ quesiton marks attached

libfreeipmi/include/freeipmi/spec/ipmi-lan-configuration-parameters-spec.h

  • - Table 23-4 new IPv6 configs

libfreeipmi/include/freeipmi/cmds/ipmi-lan-cmds.h
libfreeipmi/cmds/ipmi-lan-cmds.c

  • - Table 23-4 new templates
  • - Table 23-4 new fill functions
  • - new macros needed for config parameters/options?

libfreeipmi/include/freeipmi/templates/ipmi-lan-cmds-templates.h

  • - document new templates

libfreeipmi/include/freeipmi/api/ipmi-lan-cmds-api.h
libfreeipmi/api/ipmi-lan-cmds-api.c

  • - Table 23-4 new API equivalents

23.2a DHCPv6 Timing Parameters

  • - macros/enums needed?

23.2b Neighbor Discovery / SLAAC Timing Parameters

  • - macros/enums needed?

improve performance of libipmiconsole

At scale w/ Conman, can eat up tons of CPU.

Minimally ipmi_get_random() can be better by not constantly opening/closing /dev/urandom. For example, default to using gcrypt's randomize function.

Running w/ a good profiler is step number one past this.

Freeipmi 1.6.3 ipmi-sel command exits with an error on PowerEdge FC830 servers

Hello this is in reference to the issue we discussed on the following freeipmi users mailing list:
https://lists.gnu.org/archive/html/freeipmi-users/2019-08/msg00013.html

$ sudo dmidecode -s system-product-name
PowerEdge FC830
$ sudo ./ipmi-sel --version
ipmi-sel - 1.6.3
Copyright (C) 2003-2015 FreeIPMI Core Team
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.`
$ sudo ./ipmi-sel
Caching SDR repository information: /root/.freeipmi/sdr-cache/sdr-cache-XXXX.localhost
Caching SDR record 216 of 217 (current record ID 216)
ipmi_sdr_cache_create: internal IPMI error`
$ sudo ./ipmi-sel --debug
Caching SDR repository information: /root/.freeipmi/sdr-cache/sdr-cache-XXXX.localhost
=====================================================
Get SDR Repository Info Request
=====================================================
[              20h] = cmd[ 8b]
=====================================================
Get SDR Repository Info Response
=====================================================
[              20h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              D9h] = record_count[16b]
[            FFEFh] = free_space[16b]
[        FFFFFFFFh] = most_recent_addition_timestamp[32b]
[        FFFFFFFFh] = most_recent_erase_timestamp[32b]
[               0h] = get_sdr_repository_allocation_info_command_supported[ 1b]
[               1h] = reserve_sdr_repository_command_supported[ 1b]
[               0h] = partial_add_sdr_command_supported[ 1b]
[               0h] = delete_sdr_command_supported[ 1b]
[               0h] = reserved[ 1b]
[               2h] = modal_non_modal_sdr_repository_update_operation_supported[ 2b]
[               0h] = overflow_flag[ 1b]
=====================================================
Reserve SDR Repository Request
=====================================================
[              22h] = cmd[ 8b]
=====================================================
Reserve SDR Repository Response
=====================================================
[              22h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              E4h] = reservation_id[16b]
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[               0h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[              FFh] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               2h] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[22B]
[ 01h 00h 51h 12h 11h 20h 00h 00h ]
[ DFh 00h 00h 00h 07h 01h 00h C6h ]
[ 69h 44h 52h 41h 43h 38h ]
Caching SDR record 1 of 217 (current record ID 0) 
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[               2h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[              FFh] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               3h] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[35B]
[ 02h 00h 51h 02h 1Eh 20h 00h 72h ]
[ 07h 01h 6Fh C0h 10h 6Fh 50h 00h ]
[ 00h 00h 14h 00h C0h 00h 00h 01h ]
[ 00h 00h 00h 00h 00h 00h 00h C3h ]
[ 53h 45h 4Ch ]
Caching SDR record 2 of 217 (current record ID 2) 
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[               3h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[              FFh] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               4h] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[28B]
[ 03h 00h 51h 11h 17h 20h 00h 80h ]
[ 00h 00h 09h 02h 07h 01h 00h CCh ]
[ 53h 79h 73h 74h 65h 6Dh 20h 42h ]
[ 6Fh 61h 72h 64h ]
Caching SDR record 3 of 217 (current record ID 3) 
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[               4h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[              FFh] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               5h] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[20B]
[ 04h 00h 51h 11h 0Fh 00h B0h 00h ]
[ 00h 00h 00h 00h 03h 01h 00h C4h ]
[ 43h 50h 55h 31h ]
<snip>
Caching SDR record 215 of 217 (current record ID 215) 
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[              D8h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[              FFh] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              D9h] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[43B]
[ D8h 00h 51h 02h 26h B1h 00h 35h ]
[ 22h 01h 2Eh 40h C8h 6Fh 40h 00h ]
[ 00h 00h 40h 00h C0h 00h 00h 11h ]
[ 00h 00h 00h 00h 00h 00h 00h CBh ]
[ 4Dh 52h 43h 20h 57h 61h 72h 6Eh ]
[ 69h 6Eh 67h ]
Caching SDR record 216 of 217 (current record ID 216) 
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[              D9h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[              FFh] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[              C3h] = comp_code[ 8b]
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[              D9h] = record_id[16b]
[               0h] = offset_into_record[ 8b]
[               5h] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[            FFFFh] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[ 5B]
[ D9h 00h 51h 02h 26h ]
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[              D9h] = record_id[16b]
[               5h] = offset_into_record[ 8b]
[              10h] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[            FFFFh] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[16B]
[ B1h 00h 36h 22h 01h 2Eh 40h C8h ]
[ 6Fh 80h 00h 00h 00h 80h 00h C0h ]
=====================================================
Get SDR Request
=====================================================
[              23h] = cmd[ 8b]
[              E4h] = reservation_id[16b]
[              D9h] = record_id[16b]
[              15h] = offset_into_record[ 8b]
[              10h] = bytes_to_read[ 8b]
=====================================================
Get SDR Response
=====================================================
[              23h] = cmd[ 8b]
[              C3h] = comp_code[ 8b]
[            FFFFh] = next_record_id[16b]
[  BYTE ARRAY ... ] = record_data[16B]
[ B1h 00h 36h 22h 01h 2Eh 40h C8h ]
[ 6Fh 80h 00h 00h 00h 80h 00h C0h ]

ipmi_sdr_cache_create: internal IPMI error`

Hardcoded config directory

I forgot to check this particular case before #41 closed.

EnvironmentFile=-@X_SYSCONFDIR@/sysconfig/bmc-watchdog

I still had sed -i "s/sysconfig/conf.d/" in my build scripts. Sorry! That's on me.

Arch Linux has a specific directory for sysconfig /etc/conf.d/ where other Linux distributions have /etc/sysconfig or /etc/default or whatever else there is. Sure would be nice if distributions could agree on a few things.

This isn't a major concern because I've already worked around it in the AUR package.

add a no-authentication option

The Get DCMI Capabilities Info command along with the IPMI commands get authentication, get system guid, get channel auth capabilities, get cipher suites, and get pet ack (!) require no authentication or session at all, according to the IPMI specification, but there is no way to remotely execute these commands with FreeIPMI tools without having to supply a valid username and password to the BMC.

It'd be great to have a --no-auth/--no-session or some flag that would allow you to execute these without authentication.

Thanks!

receiving "SEL illegal timestamp situation" in logs when using ipmiseld

As the title says, my rsyslog files are populated only with a single entry for every SEL event: "SEL illegal timestamp situation".

This happens with default or custom-defined string output.

I can generate accurate reports with the '--test-run' option.

here's an example of my output

ipmiseld -v --poll-interval=5 --log-facility=LOG_LOCAL4 --system-event-format '%i %d %t %T %s %I %E' --oem-timestamped-event-format '%i %d %t %I %o'

and my rsyslog config in /etc/rsyslog.d/ipmiseld.conf:

# BMC System Event Log events
local4.*                                                /var/log/ipmiseld.log

Output for all events looks like:

Sep  3 10:20:44 xxx ipmiseld[359204]: SEL illegal timestamp situation
Sep  3 10:25:45 xxx ipmiseld[359204]: SEL illegal timestamp situation
Sep  3 10:40:22 xxx ipmiseld[8106]: SEL illegal timestamp situation

1.6.10 release

Hi, is there any ETA about 1.6.10 release?
IPv6 patches was applied on debian (and derivates) packages 6 months ago and used also in latest ubuntu LTS (jammy), I created also a backport for debian 11 and ubuntu 20.04, for now on debian and ubuntu bugtracker no issue was reported related to it

ipv6 AF_INET6 support

1.4.11 lacks any ipv6 support. 1.5.3 (current upstream from 1 Aug 2016) also lacks ipv6 support.

Note that both ipmitool (since 2014 or so) and openipmi (since 2003-11-11) support IPv6, according to their changelogs. I suspect that the openipmi stuff is either vendor-specific, or simply that it started using AF_INET6 sockets...

At a minimum, the things we've run into:

  1. Cannot specify an ipv6 address for the bmc address, to any of the tools.
  2. bmc-config --checkout doesn't dump ipv6 address information.

Happy to test changes -- generally using HP Proliant's with iLo 4 or so.

Update FAQ SOL instructions

Link is broken, and that link pointed to a system that still used inittab. Find a good up2date instruction page.

libipmiconsole header file comments

Some of the comments regarding defaults vs libipmiconsole.conf flags defaults could be improved. The language should probably state something more along the lines of "is set to XXX_DEFAULTS, or whatever is specified in libipmiconsole.conf. Otherwise, use the default of XXX".

Documentation: Add example for conserver

Hi,

Here's a small addition to the FAQ on how to add an ipmi console to conserver.
Apologies for not succeeding to add this myself to texinfo (/me markdown person)

@section How do you setup Conserver with ipmiconsole?

You can find more details in the conserver.cf
(@uref{https://www.conserver.com/docs/conserver.cf.man.html}) manpage.

Here is an example configuration entry from the conserver.cf file:

@example
break 3 { string '"\d\z"'; delay 250; }

default ipmisol {
  break 3;
  motd "Generic IPMI SOL. Use \"Ctrl+E c ?\" for help, \"Ctrl+E c l 0 <key>\" for SysRq, \"Return [ ?\" for ipmi sol help";
  username toor;
  type ipmi;
}

console node42 {
  include ipmisol;
  master conserver.example.com;
  password terces;
  host node42.bmc.example.com;
}
@end example

Public key for verify signed tar

Hi, I saw that any tar of freeipmi have signature file but from a look to freeipmi site I didn't found the public key to check them.
@chu11 can you tell me where is the public key to check the signature please?

picmg hpm.1

Would like to support, but specification is not free, only available to members. Really should be added by a vendor that needs to support FreeIPMI for customers.

libfreeipmi/sdr: check sdr info record count changed

can also be used to indicate if an SDR is now invalid. Note that should store record count from sdr-info specifically, do not trust the actual number of sdr records. Optional: read manufacturer id and also call cache invalid?

Toggle executable name in syslog

Hello,

ipmiseld is putting stuff in syslog with the full executable path:

Feb 26 11:44:11 app-server-1 /usr/sbin/ipmiseld[30021]: SEL System Event: Feb-26-2018, 19:39:24, Sensor #0, Warning, Correctable memory error

It would be cool if it just logged with the name ipmiseld (stripping /usr/sbin) - is this toggleable from the config options?

sensor_units_rate '0x4' not supported

Hello,

I have a problem with reading the state of the FAN sensors of my server, the library gives the following message trying to read the unit rate :
(ipmi_monitoring_sensor_reading.c, _get_sensor_units, 426): sensor_units_rate '0x4' not supported

Although the reading works in the "ipmimonitoring" command.

image

I think the problem is just adding the 0x4 as the right unit in ipmi_monitoring.h
Here is the full sensor record :

[ 14h] = record_id[16b]
[ 1h] = sdr_version_major[ 4b]
[ 5h] = sdr_version_minor[ 4b]
[ 1h] = record_type[ 8b]
[ 3Bh] = record_length[ 8b]
[ 0h] = sensor_owner_id.type[ 1b]
[ 10h] = sensor_owner_id[ 7b]
[ 0h] = sensor_owner_lun[ 2b]
[ 0h] = sensor_owner_lun.reserved[ 2b]
[ 0h] = channel_number[ 4b]
[ 15h] = sensor_number[ 8b]
[ Ah] = entity_id[ 8b]
[ 4h] = entity_instance[ 7b]
[ 0h] = entity_instance.type[ 1b]
[ 1h] = sensor_initialization.sensor_scanning[ 1b]
[ 1h] = sensor_initialization.event_generation[ 1b]
[ 0h] = sensor_initialization.init_sensor_type[ 1b]
[ 1h] = sensor_initialization.init_hysteresis[ 1b]
[ 1h] = sensor_initialization.init_thresholds[ 1b]
[ 1h] = sensor_initialization.init_events[ 1b]
[ 0h] = sensor_initialization.init_scanning[ 1b]
[ 0h] = sensor_initialization.reserved[ 1b]
[ 0h] = sensor_capabilities.event_message_control_support[ 2b]
[ 1h] = sensor_capabilities.threshold_access_support[ 2b]
[ 1h] = sensor_capabilities.hysteresis_support[ 2b]
[ 1h] = sensor_capabilities.auto_re_arm_support[ 1b]
[ 1h] = sensor_capabilities.entity_ignore_support[ 1b]
[ 4h] = sensor_type[ 8b]
[ 1h] = event_reading_type_code[ 8b]
[ 0h] = threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_low_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_high_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.upper_non_critical_going_low_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.upper_non_critical_going_high_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.upper_critical_going_low_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.upper_critical_going_high_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_low_supported[ 1b]
[ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_high_supported[ 1b]
[ 0h] = lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
[ 1h] = lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
[ 0h] = lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
[ 0h] = lower_threshold_reading_mask.reserved[ 1b]
[ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_high_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_low_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_high_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_low_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_high_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[ 1b]
[ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[ 1b]
[ 0h] = upper_threshold_reading_mask.upper_non_critical_threshold_is_comparison[ 1b]
[ 0h] = upper_threshold_reading_mask.upper_critical_threshold_is_comparison[ 1b]
[ 0h] = upper_threshold_reading_mask.upper_non_recoverable_is_comparison[ 1b]
[ 0h] = upper_threshold_reading_mask.reserved[ 1b]
[ 0h] = readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
[ 1h] = readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
[ 0h] = readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
[ 0h] = readable_threshold_mask.upper_non_critical_threshold_is_readable[ 1b]
[ 0h] = readable_threshold_mask.upper_critical_threshold_is_readable[ 1b]
[ 0h] = readable_threshold_mask.upper_non_recoverable_threshold_is_readable[ 1b]
[ 0h] = readable_threshold_mask.reserved1[ 1b]
[ 0h] = readable_threshold_mask.reserved2[ 1b]
[ 0h] = settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
[ 1h] = settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
[ 0h] = settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
[ 0h] = settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
[ 0h] = settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
[ 0h] = settable_threshold_mask.upper_non_recoverable_threshold_is_settable[ 1b]
[ 0h] = settable_threshold_mask.reserved1[ 1b]
[ 0h] = settable_threshold_mask.reserved2[ 1b]
[ 0h] = sensor_unit1.percentage[ 1b]
[ 0h] = sensor_unit1.modifier_unit[ 2b]
[ 4h] = sensor_unit1.rate_unit[ 3b]
[ 0h] = sensor_unit1.analog_data_format[ 2b]
[ 12h] = sensor_unit2.base_unit[ 8b]
[ 0h] = sensor_unit3.modifier_unit[ 8b]
[ 0h] = linearization[ 7b]
[ 0h] = linearization.reserved[ 1b]
[ 50h] = m_ls[ 8b]
[ 1h] = tolerance[ 6b]
[ 0h] = m_ms[ 2b]
[ 0h] = b_ls[ 8b]
[ 1h] = accuracy_ls[ 6b]
[ 0h] = b_ms[ 2b]
[ 0h] = sensor_direction[ 2b]
[ 0h] = accuracy_exp[ 2b]
[ 0h] = accuracy_ms[ 4b]
[ 0h] = b_exponent[ 4b]
[ 0h] = r_exponent[ 4b]
[ 0h] = analog_characteristics_flag.nominal_reading[ 1b]
[ 0h] = analog_characteristics_flag.normal_max[ 1b]
[ 0h] = analog_characteristics_flag.normal_min[ 1b]
[ 0h] = analog_characteristics_flag.reserved[ 5b]
[ 0h] = nominal_reading[ 8b]
[ 0h] = normal_maximum[ 8b]
[ 0h] = normal_minimum[ 8b]
[ FFh] = sensor_maximum_reading[ 8b]
[ 0h] = sensor_minimum_reading[ 8b]
[ FFh] = upper_non_recoverable_threshold[ 8b]
[ FFh] = upper_critical_threshold[ 8b]
[ FFh] = upper_non_critical_threshold[ 8b]
[ 0h] = lower_non_recoverable_threshold[ 8b]
[ 5h] = lower_critical_threshold[ 8b]
[ 0h] = lower_non_critical_threshold[ 8b]
[ 0h] = positive_going_threshold_hysteresis[ 8b]
[ 3h] = negative_going_threshold_hysteresis[ 8b]
[ 0h] = reserved[16b]
[ 80h] = oem[ 8b]
[ C8h] = id_string_type_length_code[ 8b]
[ BYTE ARRAY ... ] = id_string[16B]
[ 46h 41h 4Eh 20h 50h 53h 55h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
(ipmi_monitoring_sensor_reading.c, _get_sensor_units, 426): sensor_units_rate '0x4' not supported

Spelling errors spotted by lintian

Hi, lintian spotted some spelling errors:
https://salsa.debian.org/debian/freeipmi/-/jobs/4214071

# NOT CHECKED:
I: libfreeipmi17: spelling-error-in-binary Grammer Grammar [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary INFOMATION INFORMATION [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary InCASE In case [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Informations Information [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Internation International [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Mangement Management [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Millenium Millennium [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Nam Name [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Netowrks Networks [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Neworks Networks [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Ontain Contain [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Optio Option [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Oriente Oriented [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary PRESENSE PRESENCE [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Performace Performance [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Prefered Preferred [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Ressources Resources [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Skelton Skeleton [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Softwares Software [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Sofware Software [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Structual Structural [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Sytems Systems [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Taylored Tailored [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Transmittion Transmission [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Transparity Transparency [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Updata Update [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary VERION VERSION [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary comunication communication [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary formely formerly [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary limted limited [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary serie series [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]

# CHECKED AND SEEMS NOT TO CHANGE:

# in specification files
I: libfreeipmi17: spelling-error-in-binary Absolut Absolute [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Accet Accept [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary CENARIO SCENARIO [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Comit Commit [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Communcation Communication [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary DEVELOPPEMENT DEVELOPMENT [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Developement Development [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Develpment Development [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Embeded Embedded [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary ExPet Expect [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary FUNCION FUNCTION [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Folse False [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Gloabl Global [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]
I: libfreeipmi17: spelling-error-in-binary Goverment Government [usr/lib/x86_64-linux-gnu/libfreeipmi.so.17.2.9]

Some probably must remain as they are because they are part of code or specifications while some may be correctable errors, I have posted them in case someone want to check and correct where needed and possible

EDIT:
I checked some with grep and are all related to specification files, some seems almost surely a typo, it would be useful to know if they have actually been added as it is in the specifications and their modification would cause functioning problems or if there are strings used for "display only" and the correction of typo would not compromise the functioning

should some tools be in /usr/bin instead of /usr/sbin

per mailing list, should ipmiconsole and maybe ipmipower be in /usr/bin instead of /usr/sbin? Argument is that while they are "system administration" tools, they do not require root.

It's a good point, but its been so long, many will have / may have hard coded the path "/usr/sbin". ipmipower more likely than ipmiconsole.

Perhaps backwards compatibility symlinks will be needed? (also for manpages)

Hardcoded sbindir in systemd units

/usr/sbin is hardcoded in systemd units, so the path specified when running ./configure --sbindir=/other/sbin/path is not respected.

All service files in etc seem to be affected.

ipmi-sel: more granular datetime ranges

This is a feature request.

Since SEL entry timestamps are UNIX timestamps, they have a resolution of 1 second. Currently the --date-range command line option has a resolution of 1 day. It would be nice to be able to have more granular setting.

I was thinking about extending --date-range to accept ISO 8601 style %Y-%m-%dT%H:%M:%S or introducing new include/exclude --datetime-range option pair that accepts it? I am also willing to propose an implementation for this if the proposal is accepted.

ipmi-config lan6_conf section disabled

Hi, one user on ubuntu reported he use lan6_conf in production and is working
https://bugs.launchpad.net/ubuntu/+source/freeipmi/+bug/1956213
An ubuntu LTS version (Bionic) have it enabled and working, also other minor versions and there was a backport also to another LTS (Xenial), I saw no bugs reported related to it but one about its lack in newer version so is confirmed was used and working.
After he confirmed is working also on unofficial backport of latest version with it enable I'll enable it in next build for debian unstable (and will be also in next ubuntu).
I suppose that can be enabled also upstream, @chu11 what do you think?

HPE DL360 Gen10 servers do not report power supplies properly

Hello,

On HPE DL360 Gen10 servers running CentOS7 with free-ipmi version 1.6.8 power supplies are not properly reported. When I use the HP provided ilorest tool I see the health of the power supplies reported, in this case one is failing, but in the ipmi-sensors output the the status of the power supplies is reported as N/A.

I have included the output of ipmi-sensors -debug and some sample output below.

ipmi-sensors-debug.txt

# dmidecode -s system-product-name
ProLiant DL360 Gen10

# ./ipmi-sensors --version
ipmi-sensors - 1.6.8
Copyright (C) 2003-2015 FreeIPMI Core Team
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.

# ./ipmi-sensors -W discretereading | grep -i power
72 | Power Supply 1   | Power Supply             | N/A        | N/A         | N/A
73 | PS 1 Output      | Power Supply             | N/A        | W           | N/A
74 | Power Supply 2   | Power Supply             | N/A        | N/A         | N/A
75 | PS 2 Output      | Power Supply             | N/A        | W           | N/A
76 | Power Meter      | Other Units Based Sensor | 630.00     | W           | 'OK'
79 | Power Supplies   | Power Supply             | N/A        | N/A         | N/A

# ilorest serverinfo --power
------------------------------------------------
Power Supply 1:
------------------------------------------------
Power Capacity: 800 W
Last Power Output: 629 W
Input Voltage: 201 V
Input Voltage Type: ACHighLine
Hotplug Capable: True
iPDU Capable: False
Health: OK
State: Enabled
------------------------------------------------
Power Supply 2:
------------------------------------------------
Power Capacity: 800 W
Last Power Output: 0 W
Input Voltage: 0 V
Input Voltage Type: Unknown
Hotplug Capable: True
iPDU Capable: False
Health: Critical
State: UnavailableOffline
------------------------------------------------
PowerSupply Redundancy Group 1
------------------------------------------------

FRU busy error workaround

I have the error "ipmi_sdr_cache_iterate: error returned in callback" on a Lenovo x3650 M5 Server HW rev 9. Other M5s working well.

The last section in debug before closing the session is below. This has no meaning for me, and any help is much appreciated.

10.100.212.11: =====================================================
10.100.212.11: IPMI 2.0 Get FRU Inventory Area Info Response
10.100.212.11: =====================================================
10.100.212.11: RMCP Header:
10.100.212.11: ------------
10.100.212.11: [               6h] = version[ 8b]
10.100.212.11: [               0h] = reserved[ 8b]
10.100.212.11: [              FFh] = sequence_number[ 8b]
10.100.212.11: [               7h] = message_class.class[ 5b]
10.100.212.11: [               0h] = message_class.reserved[ 2b]
10.100.212.11: [               0h] = message_class.ack[ 1b]
10.100.212.11: IPMI RMCPPLUS Session Header:
10.100.212.11: -----------------------------
10.100.212.11: [               6h] = authentication_type[ 4b]
10.100.212.11: [               0h] = reserved1[ 4b]
10.100.212.11: [               0h] = payload_type[ 6b]
10.100.212.11: [               1h] = payload_type.authenticated[ 1b]
10.100.212.11: [               1h] = payload_type.encrypted[ 1b]
10.100.212.11: [        638898C2h] = session_id[32b]
10.100.212.11: [              B1h] = session_sequence_number[32b]
10.100.212.11: [              20h] = ipmi_payload_len[16b]
10.100.212.11: IPMI RMCPPLUS Payload:
10.100.212.11: ----------------------
10.100.212.11: [  BYTE ARRAY ... ] = confidentiality_header[16B]
10.100.212.11: [ 38h 2Dh E7h A8h 52h 65h 91h 6Fh ]
10.100.212.11: [ FCh A8h 2Bh CDh DBh B9h E2h 19h ]
10.100.212.11: [  BYTE ARRAY ... ] = payload_data[ 8B]
10.100.212.11: [ 81h 2Ch 53h 20h 84h 10h 81h CBh ]
10.100.212.11: [ 707060504030201h] = confidentiality_trailer[64b]
10.100.212.11: IPMI Message Header:
10.100.212.11: --------------------
10.100.212.11: [              81h] = rq_addr[ 8b]
10.100.212.11: [               0h] = rq_lun[ 2b]
10.100.212.11: [               Bh] = net_fn[ 6b]
10.100.212.11: [              53h] = checksum1[ 8b]
10.100.212.11: [              20h] = rs_addr[ 8b]
10.100.212.11: [               0h] = rs_lun[ 2b]
10.100.212.11: [              21h] = rq_seq[ 6b]
10.100.212.11: IPMI Command Data:
10.100.212.11: ------------------
10.100.212.11: [              10h] = cmd[ 8b]
10.100.212.11: [              81h] = comp_code[ 8b]
10.100.212.11: IPMI Trailer:
10.100.212.11: -------------
10.100.212.11: [              CBh] = checksum2[ 8b]
10.100.212.11: IPMI RMCPPLUS Session Trailer:
10.100.212.11: ------------------------------
10.100.212.11: [            FFFFh] = integrity_pad[16b]
10.100.212.11: [               2h] = pad_length[ 8b]
10.100.212.11: [               7h] = next_header[ 8b]
10.100.212.11: [  BYTE ARRAY ... ] = authentication_code[12B]
10.100.212.11: [ DEh 3Ah 51h DDh 19h F9h 9Bh 0Ch ]
10.100.212.11: [ F5h 0Bh F2h 18h ]
ipmi_fru_open_device_id: internal IPMI error
ipmi_sdr_cache_iterate: error returned in callback

remove legacy support

Consider removing legacy support in next "big" release of FreeIPMI

  • legacy output in most tools changed in 2009, so its been 10 years
  • legacy config file names / locations
  • legacy config field names from in bmc-config, pef-config, etc.
  • legacy options

refactor OEM files into per motherboard files

sometime ago I refactored all of the OEM stuff into per vendor files (i.e. dell, intel, etc.). I think there is now enough OEM info in specific vendors to warrant refactoring into per-motherboard files. Some of the files are getting huge.

Add SEL interpretations for SuperMicro X10

I have a lot of SuperMicro servers that exhibit various SEL messages that are not currently understood by ipmi-sel. (Memory DIMMs failing, SMART errors, etc. All the things you get when you have a few hundred of the things.) The SuperMicro-provided ipmicfg tool understands these OEM codes, but ipmi-sel does not. It would be really helpful for me if these were added to ipmi-sel, since the official tool only works on x86 and I need to manage these servers from an ARM machine where I can only run ipmi-sel.

I'm happy to provide the comparative output of the two tools for the errors I get.

Enable environment variable for password

Hi,
this is an enhancement request. I'd prefer using ipmiconsole over ipmitool because sending of sysrq commands works way easier in ipmiconsole.
There is one drawback, though: for scripting one must pass the passwort with -p in cleartext. That does allow anyone to see it with ps or pgrep because the password isn't masked in the process list.
ipmitool has a nice feature allowing the IPMI_PASSWORD variable to be set and let ipmitool take the password from this variable. Thus, it can be hidden from other users when used in scripts.

So I'd like to ask if you could consider adding support for storing the password in an environment variable, too.

cu,
Frank

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.