Data travelling on MB I2C bus: is this what HWinfo uses?


New Member
Many (most) motherboards nowadays feature a M.2 slot with E-key or A+E-Key. The I2C (or SMB) bus of the motherboard is exposed in the pinout of such slot: CLK on pin 60 and DATA on pin58 (and there's an 'ALERT #' signal on pin 62 but normally there isn't such a signal in an I2C bus). Those signals are pulled-up to 1.8V.
Is this the bus where the data from the various sensors (voltages, currents, temperatures, clock speeds, fan speeds, ...) is exchanged? Is this the data HWinfo retrieves?

I'm just curious about making a 'sniffer' which fits into the M.2 slot and is able to select interesting info like the temperature of the CPU or the temperature the motherboard reports of itself.

Yes, I2C (SMBus) is used to communicate with several devices like sensors, DIMMs, etc.
Thanks, Martin.
I imagine there's quite a lot of traffic on that bus and the motherboard manufacturers do not go out of their way to make it understandable.
Does HWiNFO need the physical I2C addresses of the devices on the bus or is there a different interface (API) at application level?
Can you or anyone else suggest a way to find out which address corresponds to which device on a given motherboard?

And does anyone know if such "M.2 I2C sniffer board" has ever been done before?
Each device claims one address (usually defined by mainboard) but the address is not always fixed. Usually devices support a range of addresses selectable via pins.
Yep, I've been designing electronics for several years and I integrated a variety of I2C devices in my designs.
I've never had to deal with the hardware of an ATX motherboard though so, if i were to connect an oscilloscope to the DATA and CLK lines of a M.2 slot, I imagine it would be very very difficult to tell which messages are from, for example, the temperature sensor of the motherboard and which are from the VRM controller.
I was wondering if there's a smart way to retrieve a list of all the I2C devices, with their respective addresses, attached to the bus.
There's no way to detect this universally, there are no unique IDs (like in case of PCI) that would allow universal identification.
Each vendor uses its own layout and supported I2C protocol commands.
It's a pain...
:( as I feared and imagined.
I feel for the developers of HWiNFO who had to reverse engineer this stuff!

Thanks anyway. Really appreciated!