Solaris 'health' driver

This is the home page for the solaris "health" driver, a motherboard temperature and fan speed monitor, for motherboards with the WinBond "w83781d" family of enviromental monitor chips.

It is inspired by the l*nux "health" driver, by David Ludlow. However, it shares no code with that driver (apart from one main similar data 'struct'), due to Solaris's vastly different driver API.
[I spelled it odd so that search engines dont misdirect people to this page. But only changed it sept 20th, 2001. sorry folks.]

Using the driver

Right now, all you have to do is basicallly

(download the source code file)
tar xvf health.tar
cd health
make install

and you are done. One of these days, i might get around to making a pkg for it. It's more likely to happen if you email and bug me about it :-)

Once the driver is installed, you can then use /usr/local/bin/printhealth, to look at the temperature values and fanspeeds that your motherboard knows about. The chip we talk to thinks it knows about three temperature gauges, and three fanspeeds. You motherboard may or may not actually have all of its sensors hooked up to something. For example, this is the result on an ASUS P2B motherboard:

cyteen$ printhealth 
temperature  #0 - 25.000000C, 77.000000F
temperature  #1 - 208.000000C, 406.400000F
temperature  #2 - 208.000000C, 406.400000F
fan #0: 0.000000
fan #1: 10384.615385
fan #2: 0.000000
Vcore voltage is 2.050000

"temperature #1" and "#2" can reasonably be assumed to not be valid :-) Sometimes you will see some apparently valid temperature readings, and you will have no idea what they are for. One of them is probably an "ambient temperature" sensor, or "motherboard temperature". Check with what your BIOS says your CPU temperature is, and match it with the appropriate temperature #

Additionally, while the speed for fan1 may not be accurate, you can at least see it is working. If you want to set up a monitor for fan failures, just check for if the fanspeed is less than 500. Or possibly just see if it is equal to 0.000000

Latest download

The latest source code can be downloaded now. Last updated July 4rd, 2001

Solaris 9+ warning!
You may need to change 'parent="isa"' to 'class="root"' in health.conf. Or alternatively, 'parent="i86pc"'. But if it works for you as-is, dont worry about it.

Compatibility list

At this point in time, the following motherboards seem to be compatible with this driver: If you know of any other motherboards that it works with, please let me know, and I'll add it to the list!


At some point, I would like to:
1. Fix the fanspeed to be more accurate
2. integrate more with David's version, so that a common "printhealth" program can be used.

Unfortunately, at this time, David likes to use floating point in the kernel, which Solaris does not allow.

[later note: i hear David has sinced changed this. But I need encouragement to fix up the code!]

Derivative drivers

Gerhard Strangar was nice enough to put together a driver mod for those folks who have a WinBond chip on the other side of an "SMBus". For example, on a Gigabytes 7IXE-4 motherboard. You may download his 'ghealth' source code here. Read the enclosed README file for what to do with it, and some limitations of the driver.

At some point, I would "like" to merge the two drivers together. but right now, I'm too busy working on Utah-GLX to do that sort of thing :-)

Author: Philip Brown