This is an old revision of the document!
These pages are based on version 2.18 of the old lm_sensors FAQ. All the questions and their answers were gathered by Frodo Looijaard, Philip Edelbrock, Mark D. Studebaker and Jean Delvare.
Most PC's built since late 1997 now come with a hardware health monitoring chip. This chip may be accessed via the ISA I/O ports or the SMBus, depending on the motherboard. Sometimes the monitoring block is embedded into a super I/O chip, often made by Nuvoton, Winbond, ITE or SMSC.
Check Installation and Management for details.
They sense the temperatures, voltages and fans and provide this information to your operating system via a chip drivers. Sometimes they provide automatic fan control, which regulate fan speed depending on the temperature.
Most semiconductor companies have comprehensive documentation, including complete datasheets, on their websites. Analog Devices, Maxim, and Texas Instruments have a wide selection of sensor chips. Their websites are:
Please see UsefulLinks for links to other companies' websites.
Sensor chips reside on either the ISA bus, the SMBus, or both. See the file doc/chips/SUMMARY in our package for a list.
To communicate with chips on the ISA bus, the software uses simple I/O reads and writes. To communicate with chips on the SMBus, the software must use an SMBus interface device, explained below.
The SMBus is the System Management Bus. More specifically, it is a 2-wire, low-speed serial communication bus used for basic health monitoring and hardware management. It is a specific implementation of the more general I2C (pronunciation: I-squared-C) bus. In fact, both I2C devices and SMBus devices may be connected to the same (I2C) bus.
The SMBus (or I2C bus) starts at the host controller, used for starting transactions on the SMBus. From the host interface, the devices communicated with are the slave devices. Each slave device has a unique 7-bit address which the host uses to refer to that device.
For each supported SMBus host, there is a separate kernel module which implements the communication protocol with the host. Some SMBus hosts really operate on the SMBus level; these hosts can not cope with pure I2C devices. Other hosts are in fact I2C hosts: in this case, we implement the SMBus protocol in terms of I2C operations. But these hosts can also talk to pure I2C devices.
We promise, you do, even if you don't have any old ISA slots. The “ISA Bus” exists in your computer even if you don't have ISA slots; it is simply a memory-mapped area, 64KB in size (0x0000 - 0xFFFF) where many “legacy” functions, such as keyboard and interrupt controllers, are found. It isn't necessarily a separate physical bus. See the file /proc/ioports for a list of devices living on the “ISA Bus” in your system. If you don't like the term “ISA Bus” think “I/O Space”.
Most new processors contain a thermal diode on the die itself. The electical properties of all diodes and transistors vary slightly with temperature. The thermal diode is exceptionally accurate because it is directly on the die. Newer temperature sensor chips, like the Analog Devices ADM1021 and clones, and the Winbond chips, have circuitry for measuring the the electrical properties of an external diode and converting this data to a temperature. Any sensor chip listed in doc/chips/SUMMARY in our package which has support for more than one temperature supports external temperature sensing.
Recent processors like AMD K8 and Intel Core or Intel Core2 have digital temperature sensors, which exports the temperature as digital number, rather than diode pins, resulting in greater precision.
Older motherboards even do not use the diode pins, but an thermistor placed inside the CPU socket. This is much less accurate.
Our drivers usually updates the values once a second or two. If you read the values faster than that, you will get the 'old' values again. It is not possible to make it faster for some chips due to their design.