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:
- The mysterious SMBus and PMBus and their relation to I2C
- random SM FAQ page with some IPMB/PMBus hints for talking with a different SM PSU
- ipmitool raw cmd primer
- Script to Read I2C Data From Supermicro PSU using
i2cget
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.
