The Linux Page

Sensors

For a long time now I've been looking for a way to check out the temperature of my computer while Linux is running. I had heard about ways to do it but never actually knew how to make it work.

After quite some research, I found a tool used to show all sorts of status on your computer. The author said something about the temperature of the processors and thus I read on. I downloaded the lastest version. Compiled it and got lucky (i.e. it worked right away!). I started it and... hmmm... no temperature.

I read on and found a page where he mentioned that for temperature support you also needed I2C drivers coming from the lm_sensors development tools. I searched for lm_sensors on the net and found the drivers. Then I looked in my RedHat box, and it was already installed ready to be loaded.

Finally, all I had to do was to run sensors_detect to get a list of the modules necessary to check all the hardware chip info I wanted. It detected my video board (I have a simple RIVA TNT2 for my server), my two CPUs and also my four DIMMs (yes! you can check out stuff from your RAM!).

Great. It exited and didn't lockup my system (the author warns about that possibility). Then I looked in my /proc/sys/dev/sensors directory. Well! At least I tried. It wasn't there. I had, however, noticed a module named i2c-proc. I loaded it (modprobe i2c-proc) and I then something in the /proc directory. Yet, there was only one file named chips. I though I would have sub-directories as described in the doc. After some time searching around, trying additional things with the sensors detector, I finally understood that the sensors-detect would only load the modules necessary for gathering the information it is after. It won't in fact load the chip specific modules. You have to do that yourself!

After a modprobe lm87 and modprobe eeprom (what sensors-detect told me to load!), I got my CPUs info and my RAM info by typing sensors on my command line. The following is its output:

lm87-i2c-0-2d
Adapter: SMBus I801 adapter at efa0
Algorithm: Non-I2C SMBus adapter
2.5V:      +2.51 V  (min =  +2.36 V, max =  +2.63 V)
Vccp1:     +1.64 V  (min =  +1.56 V, max =  +1.72 V)
3.3V:      +3.21 V  (min =  +3.12 V, max =  +3.47 V)
5V:        +4.84 V  (min =  +4.73 V, max =  +5.26 V)
12V:      +12.00 V  (min = +11.37 V, max = +12.62 V)
Vccp2:     +3.26 V  (min =  +1.56 V, max =  +1.72 V)   ALARM
fan1:        0 RPM  (min = 3000 RPM, div = 2)          ALARM
fan2:        0 RPM  (min = 3000 RPM, div = 2)          ALARM
temp1:       +52°C  (min =  +10°C, max =  +60°C)
CPU_Temp:    +43°C  (min =  +10°C, max =  +60°C)
vid:       +1.65 V

lm87-i2c-0-2e
Adapter: SMBus I801 adapter at efa0
Algorithm: Non-I2C SMBus adapter
2.5V:      +0.00 V  (min =  +2.36 V, max =  +2.63 V)   ALARM
Vccp1:     +1.64 V  (min =  +1.56 V, max =  +1.72 V)
3.3V:      +3.23 V  (min =  +3.12 V, max =  +3.47 V)
5V:        +5.10 V  (min =  +4.73 V, max =  +5.26 V)
12V:      +12.06 V  (min = +11.37 V, max = +12.62 V)
Vccp2:     +0.00 V  (min =  +1.56 V, max =  +1.72 V)   ALARM
fan1:     4141 RPM  (min = 3000 RPM, div = 2)
fan2:     4115 RPM  (min = 3000 RPM, div = 2)
temp1:       +37°C  (min =  +10°C, max =  +60°C)
CPU_Temp:    +37°C  (min =  +10°C, max =  +60°C)
vid:       +1.65 V

eeprom-i2c-0-50
Adapter: SMBus I801 adapter at efa0
Algorithm: Non-I2C SMBus adapter
Memory type:            SDRAM DIMM SPD
SDRAM Size (MB):        128

eeprom-i2c-0-51
Adapter: SMBus I801 adapter at efa0
Algorithm: Non-I2C SMBus adapter
Memory type:            SDRAM DIMM SPD
SDRAM Size (MB):        256

eeprom-i2c-0-52
Adapter: SMBus I801 adapter at efa0
Algorithm: Non-I2C SMBus adapter
Memory type:            SDRAM DIMM SPD
SDRAM Size (MB):        128

eeprom-i2c-0-53
Adapter: SMBus I801 adapter at efa0
Algorithm: Non-I2C SMBus adapter
Memory type:            SDRAM DIMM SPD
SDRAM Size (MB):        256

As you may notice, the CPU0 fan isn't detected or is simply dead. I will have to look at that soon or I may just lose my processor! (well... not quite since I have a Pentium III and it simply blocks when it gets too hot, but that's still a bad one!)