SMBus device support in Windows 10

A former client of mine contacted me to ask if there is a way to send and receive messages via the SMBus in Windows 10. I’ve never worked with the SMBus, but my research doesn’t seem to indicate any approach. Before telling them change their design I wanted to ask this group.

Don Burn
Windows Driver Consulting
Website: http://www.windrvr.com

Don Burn wrote:

A former client of mine contacted me to ask if there is a way to send and receive messages via the SMBus in Windows 10. I’ve never worked with the SMBus, but my research doesn’t seem to indicate any approach. Before telling them change their design I wanted to ask this group.

SMBus is essentially an I2C bus. The controller is owned by the BIOS,
which also knows which devices can be addressed. There is a driver for
the controller, but I believe it’s mostly doing ACPI communication with
the BIOS.

They could add some ACPI methods to their DSDT to send commands, and use
a driver to trigger those methods, but you can’t drive the SMBus directly.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

He wants to access the SMBUS or a device on the SMBUS? On a running system? Irregularly or on a constant basis?

You could always write an SMBUS SPB controller driver and @call@ it an I2C bus. The write a client driver for the attached device?

There are some considerable gottchas here.

You need to tell us more… Many SMBUS devices can work in I2C Mode.

I recently talked a client out of love with SMBUS and into love with I2C.

Peter
OSR
@OSRDrivers

Mr. Burn,

If the question was “is there a way” - yes, almost always there is some way. When there’s a will, there’s a way.

Makers of system boards are not foolish. They provide means to allow the customer to access their SMbus, even in absence of clear “industry standard”. Otherwise, other makers would do that and gain advantage over them. It can be as simple as hardware flag (semaphore) to lock access to the smbus, that the BIOS will check and set before access. Customer’s software can do the same.

As to difference between smbus and I2C: smbus is a subset of I2C.
It defines a more limited set of transactions than what the raw i2c allows.
Many of-the-shelf i2c peripherals conform to this subset, even though they do not support
dynamic address negotiation protocol and other parts of the SMbus spec.

Regards,
– pa