Temperature and fan speed monitoring on Linux
To monitor CPU and motherboard temperature as well as fan speed on Linux, we should install the package lm-sensors
. After installation, run sensors-detect
in sudo
mode to find available sensors in the computer and check whether related kernel modules have been loaded for them.
On my computer, after running sensors-detect
, the following message appears.
Now follows a summary of the probes I have just done. Just press ENTER to continue: Driver `it87': * ISA bus, address 0x290 Chip `ITE IT8728F Super IO Sensors' (confidence: 9) Driver `coretemp': * Chip `Intel digital thermal sensor' (confidence: 9) To load everything that is needed, add this to /etc/modules: #----cut here---- # Chip drivers coretemp it87 #----cut here---- If you have some drivers built into your kernel, the list above will contain too many modules. Skip the appropriate ones!
It can be seen that there are two types of sensors having been found:
-
ITE IT8728F Super IO Sensors
for temperature monitoring, fan speed monitoring and control -
Intel digital thermal sensor
for CPU temperature monitoring
For ITE8728
, its introduction is as below, according to here.
The IT8728 is a highly integrated Super I/O using the LowPin Count Interface. It provides the most commonly used legacy Super I/O functionality plus the latest Environment Control initiatives, including H/W Monitor and Fan Speed Controller. The device’s LPC interface complies with Intel “LPC Interface Specification Rev. 1.1”. The IT8728F is ACPI & LANDesk compliant.
The IT8728F features an enhanced hardware monitor providing three thermal inputs from remote thermal resistors, or thermal diode or diode-connected transistor (2N3904/2N3906). The device employs ITE’s innovative intelligent automatic Fan ON/OFF & speed control functions (SmartGuardian)to protect the system while reducing the system noise and power consumption.The Fan Speed Controller can control up to five fan speeds through five separate 256 steps of Pulse Width Modulation (PWM) output pins and monitor up to five FANs’ Tachometer inputs.
Then we use lsmod
to check if the kernel modules coretemp
and it87
have been loaded. If not, append them to the file /etc/modules
.
Finally, by executing the command sensors
, we get the monitoring status. For ITE8728
, three temperature sensors register 45 °C, 24 °C, 33 °C respectively and the CPU fan speed is 946 rpm. For Intel CPU, it returns the temperature 43 °C for the package as well as 41 °C, 41 °C, 42 °C and 43 °C for the four cores. In addition, the NVIDIA graphics card Geforce GT210 (with the Nouveau driver) has a temperature of 85 °C, while the fan speed cannot be read out.
it8728-isa-0290 Adapter: ISA adapter in0: +1.04 V (min = +0.00 V, max = +3.06 V) in1: +2.05 V (min = +0.00 V, max = +3.06 V) in2: +2.95 V (min = +0.00 V, max = +3.06 V) in3: +2.88 V (min = +0.00 V, max = +3.06 V) in4: +0.04 V (min = +0.00 V, max = +3.06 V) in5: +1.01 V (min = +0.00 V, max = +3.06 V) in6: +1.54 V (min = +0.00 V, max = +3.06 V) 3VSB: +3.38 V (min = +0.00 V, max = +6.12 V) Vbat: +3.22 V fan1: 946 RPM (min = 10 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) fan4: 0 RPM (min = 0 RPM) temp1: +45.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp2: +24.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp3: +33.0°C (low = +127.0°C, high = +127.0°C) sensor = Intel PECI intrusion0: ALARM nouveau-pci-0100 Adapter: PCI adapter GPU core: +0.90 V (min = +0.85 V, max = +1.05 V) fan1: 0 RPM temp1: +85.0°C (high = +95.0°C, hyst = +3.0°C) (crit = +105.0°C, hyst = +5.0°C) (emerg = +135.0°C, hyst = +5.0°C) coretemp-isa-0000 Adapter: ISA adapter Package id 0: +43.0°C (high = +74.0°C, crit = +94.0°C) Core 0: +41.0°C (high = +74.0°C, crit = +94.0°C) Core 1: +41.0°C (high = +74.0°C, crit = +94.0°C) Core 2: +42.0°C (high = +74.0°C, crit = +94.0°C) Core 3: +43.0°C (high = +74.0°C, crit = +94.0°C)