Skip to content

OEM, chassis-specific and reserved codes seen on iDRAC, CIMC, XCC and iLO are logged as errors; event/reading types 70h-7Eh are not treated as OEM #145

Description

@bertysentry

Where: src/main/java/org/metricshub/ipmi/core/coding/commands/sdr/record/EntityId.java, DeviceType.java, SensorType.java, ReadingType.java (parseInt), src/main/java/org/metricshub/ipmi/client/runner/GetSensorsRunner.java (buildStates).

What happens: the survey of 2026-10-09 over the lab's management cards (branch fix/decoders) shows that every collection on a mainstream BMC logs several ERROR or WARN lines for values that the IPMI 2.0 specification defines as OEM, chassis-specific or reserved, and that the decoders handle as "invalid":

BMC Log line, per collection Specification
Dell iDRAC 8 (R630, x3) and iDRAC 6 ERROR DeviceType - Invalid value: 0 (x8) Table 43-12: 00h and 01h are reserved device types; Dell uses 00h in its FRU locator records
Cisco IMC (C240) ERROR EntityId - Invalid value: 208 Table 43-13: D0h-FFh are OEM System Integrator defined entity IDs
Lenovo XCC ERROR EntityId - Invalid value: 160, ERROR SensorType - Invalid value: 0 A0h-BFh are chassis-specific entity IDs; sensor type 00h is reserved
Cisco IMC, Dell iDRAC 8 WARN ReadingType - Invalid value: 28675 (7003) for sensor EntityPresence, ... (7005) for sensor ModuleBoard Table 42-1: event/reading types 70h-7Fh are OEM; only 7Fh is treated as OEM by GetSensorsRunner
HP iLO 4 WARN ReadingType - Invalid value: 2054 (806) for sensor Fan, 2584326 (276f06) for sensor Lan iLO sets state bits 6 and 7 that the reading type does not define

The values are not wrong, the library's vocabulary is incomplete, and the ERROR level makes a routine collection look broken (MetricsHub forwards these logs).

Suggested fix:

  • EntityId: map A0h-BFh to a ChassisSpecific constant and D0h-FFh to OemSystemIntegrator (or keep the raw code on the record), without logging; DeviceType 00h/01h and SensorType 00h to Reserved, without logging.
  • GetSensorsRunner.buildStates(): treat every event/reading type 70h-7Fh as OEM (0xLL or 0xHHLL state bytes), not only 7Fh.
  • ReadingType.parseInt(): an offset the type does not define is dropped at DEBUG, not WARN.

Related: #87 (reserved enum values, fixed for the rate unit, modifier unit usage and power restore policy in #143), #121 (logging), #84 (the iDRAC BIOS sensors, whose owner is not the BMC).

Activity

  1. added a commit that references this issue on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions