From 63c5f2dca5154ccd183279eb32a7bebcd92796c3 Mon Sep 17 00:00:00 2001 From: Markus Hilger Date: Fri, 14 Aug 2026 02:57:55 +0200 Subject: [PATCH] Keep the device available bit out of the firmware version The top bit of the major revision byte of Get Device ID says the device is still initialising or taking a firmware update. It was read as part of the revision, so immediately after a bmc reset nodefirmware reported "BMC Version: 131.11" for what is 3.11, and settled down only once the bit cleared. Mask it as sdr.py already does for the same byte, so the two agree about the same field. --- confluent_server/aiohmi/ipmi/command.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/confluent_server/aiohmi/ipmi/command.py b/confluent_server/aiohmi/ipmi/command.py index 229ad3a7..48ce9dd7 100644 --- a/confluent_server/aiohmi/ipmi/command.py +++ b/confluent_server/aiohmi/ipmi/command.py @@ -2233,7 +2233,10 @@ class Command(object): await self.oem_init() mcinfo = await self.raw_command(netfn=6, command=1) major, minor = struct.unpack('BB', mcinfo['data'][2:4]) - bmcver = '{0}.{1}'.format(major, hex(minor)[2:]) + # The top bit of the major byte says the device is still initialising + # or taking an update, and is not part of the revision, so mask it off + # the way sdr.py does rather than reporting 131.11 for 3.11 + bmcver = '{0}.{1}'.format(major & 0b1111111, hex(minor)[2:]) async for x in self._oem.get_oem_firmware(bmcver, components, category): yield x