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.
We tried to make this package as modular as possible. This makes it easy to add new drivers, and unused drivers will take no precious kernel space. On the other hand, it can be a bit confusing at first.
Here are two simple guidelines:
We have an excellent program that scans all your hardware. It is called sensors-detect and is part of the lm-sensors package, available with all major distributions. Just execute this script, and it will tell you.
Chip detection in the drivers is fairly good. That means that it is usually harmless to insert more chip drivers than you need. However, this can still lead to problems, so we do not recommend it.
If sensors-detect didn't find any sensors, either you don't have any, or the ones you have, we don't support. (Look at your motherboard for candidates, then see Help)
We have no idea. Here is what you should do:
We don't support boards, we support chips. See What chips are on motherboard XYZ.
Please see Supported Devices.
sensors-detect will tell you. Take the modprobe lines it recommends and paste them into the appropriate /etc/rc.d/xxxx file to be executed at startup.
You need one module for each sensor chip and bus adapter you own; if there are sensor chips on the ISA bus, you also need i2c-isa.o. for each type of chip you own. That's all. On my computer, I could use the following lines:
modprobe i2c-isa modprobe i2c-piix4 modprobe lm78 modprobe lm75 modprobe i2c-dev sensors -s
You don't need it. This driver has not much use except for testing SMBus 2.0 ARP and PEC support in the i2c layer.
Yes, for any applications that use libsensors, including the sensors application included in our package. It tells libsensors how to translate the values the chip measures to real-world values. This is especially important for voltage inputs. The default configuration file should usually do the trick. It is automatically installed as /etc/sensors.conf, but it will not overwrite any existing file with that name.
Every motherboard is different. You can customize the labels in the file /etc/sensors3.conf. That's why it exists! The default labeling (in lib/chips.c and /etc/sensors3.conf) is just a template.
You can customize them in the file /etc/sensors3.conf. See above.
You forgot to run sensors -s. See above.
Use an ignore line in /etc/sensors3.conf so it isn't displayed in sensors.
There is detailed help at the top of that file.
No. Good idea though. If you would like to set one up on your website send us mail and we will set up a link to it.
You can ask questions and raise problems on the lm-sensors mailing list, or you can create a new issue on GitHub.
You can send patches to the lm-sensors mailing list, or you can submit a pull request on GitHub.