Reading Supermicro PSU Info from Linux (SMBus)

I have a SM PSU, PDU/PDB, and mobo with a I2C SMBus port and IPMI, and i’m trying to read the PSU info from baremetal linux running on that box.

my setup:

PWS-1K62P-1R (PSU)PDB-PT418-B6824 (PDU/PDB) --(SMBus I2C)–> X13SAE-F (Mobo)

the PDU takes up to four PSUs for redundancy, but i only have one plugged in. the PSUs and PDU are part of an EoL SM chassis.

i have found the following resources that contain some hints:

with I2C from the PDU connected to the mobo, i get telemetry in the mobo’s redfish webui:

of particular interest is the AC Input Power which i have found to precisely agree (within 1W) with a Kill A Watt. this is quite dope, and i’d like to be able log that and the rest of the info in grafana or something.

here’s where i’ve gotten so far…

with SMCIPMITool, a CLI tool by SM that can run in linux, i can successfully pull the info like this:

./SMCIPMITool <BMC IP> ADMIN <BMC pw> pminfo

[Module 1]
 Item                           |                          Value
 ----                           |                          -----
 Status                         |                             OK
 Input Voltage                  |                        120.0 V
 Input Current                  |                         1.03 A
 Main Output Voltage            |                        12.01 V
 Main Output Current            |                         7.81 A
 Temperature 1                  |                        21C/70F
 Temperature 2                  |                        31C/88F
 Fan 1                          |                       3200 RPM
 Fan 2                          |                       5632 RPM
 Main Output Power              |                           93 W
 Input Power                    |                          124 W
 PMBus Revision                 |                           0x11
 PWS Serial Number              |                     [redacted]
 PWS Module Number              |                   PWS-1K62P-1R
 PWS Revision                   |                            1.3

this is much better than having to web scrape redfish, but it sucks because, afaik, SMCIPMITool requires a network connection to the BMC unlike a tool like ipmitool that can use the OpenIPMI kernel driver to make local connections without even needing to plug in the BMC’s NIC.

i have not figured out how to pull this info with ipmitool yet. this kind of device lacks the Just Works™ certification.

it could work in theory – the correct bus just needs to be queried with the right commands over i2c or ipmb (i2c over ipmi), but idk what i’m doing, and i’m especially stuck without documentation.

i started dicking around with raw ipmi commands with hints from the aforementioned SM page, but this documentation is quite skimp, and it’s not even for my PSU.

i managed to read out some bytes. did i query the right thing, and are these the bytes i want? no idea yet.

sudo ipmitool -v raw 0x06 0x52 0x07 0x70 0x40 0x00

Loading IANA PEN Registry...
Running Get VSO Capabilities my_addr 0x20, transit 0, target 0
Invalid completion code received: Invalid command
Discovered IPMB address 0x0
RAW REQ (channel=0x0 netfn=0x6 lun=0x0 cmd=0x52 data_len=4)
RAW REQUEST (4 bytes)
 07 70 40 00
RAW RSP (64 bytes)
 01 01 00 00 03 0b 00 f0 01 20 1d 30 01 5f 04 04
 00 00 00 00 10 08 20 20 01 08 00 ca 53 55 50 45
 52 4d 49 43 52 4f cc 50 57 53 2d 31 4b 36 32 50
 2d 31 52 cc 50 57 53 2d 31 4b 36 32 50 2d 31 52

has anyone here accomplished something like this? i could use some help.

i’ll try asking SM for support later (lol), but i’m not hopeful.

my other idea was to capture packets from SMCIPMITool. maybe i can get lucky and reverse engineer it that way.

2 Likes

(lack of) progress:

SM support:

Thank you for contacting Super Micro Technical Support!

Unfortunately, we are NOT able to provide the detail of I2C design information to the customer according to our IPMI support team. Thank you for your understanding!

Have a great day!

lol

and the SMCIPMITool tcpdump was a bust. the newer versions of ipmi-over-lan are encrypted.

update:

it’s not really what i wanted since it still needs to go through the BMC NIC, but instead of using SMCIPMITool, i can at least use the redfish api to get this info:

curl -sS https://${BMC_HOST}/redfish/v1/Chassis/1/Power/ -k -u ${BMC_USER}:${BMC_PASS}

this gives json back

1 Like

Very interesting find about the smbus. So is via the web stuff the only wayt to have a reading on the pwr supply data ? As you mention via ipmitool it do not work… Or it simply do not work for supermicro system, based on a proprietary protocol … crypted… ?

If you search on manualzz dot com for ‘cpr compuware’ you find some documents of compuware psu’s.
I think supermicro uses some compuware power supplies. I saw there is some smbus documentation in those documents. Maybe that will give some more clues.

1 Like

you can get the psu data via SMCIPMITool (ipmi over lan) or via redfish api (directly or via the webui).

the ‘problem’ is that it feels less elegant to me than using the system ipmi interface, but it’s honestly not a big deal.

ipmitool will work for some stuff but not these kinds of PSUs. it’s not encrypted or anything. it’s just unsupported, and documentation isn’t available. no one has bothered to reverse engineer it.

This topic was automatically closed 273 days after the last reply. New replies are no longer allowed.