31 July 2021

EEEPC fan and sensor data

Recently I had done a fan tuneup for my Asus EeeBox PC EB 1033 and it had been performing quite well with almost no fan noise audible from 8-10 feet. However, while watching an old video the screen suddenly went black and after a few seconds the TV indicated no signal on the input! On checking, I noticed that the PC had shutdown and its case felt quite hot. I started it up again and checked the syslog. It showed multiple occurrences of "CPU0: Core temperature above threshold, cpu clock throttled (total events = 3354588)" and sensors command output showed that CPU temperature was rising.

I shut down the PC and opened it up. Components were still hot, so I cooled them down by blowing compressed air on them. Then I checked the fan and it was difficult to rotate it. Last time I had put some WD-40 on the spindle and it wasn't a good idea. This time I cleaned up the fan spindle and put some lithium grease on it and it was rotating normally again. After the second fan tuneup, the PC was running with normal CPU temperatures (around 50°C). Phew! Critical issue handled.

One thing that I noticed was that the "cpu_fan" indicated 0 RPM speed even though I knew it was running normally. The EeeBox PC EB1033 has an nct6776 chip which does the sensing and even though the modules nct6776 and coretemp were loaded in the kernel, sensors command showed the following:

 ~$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +48.0°C  (crit = +100.0°C)
Core 1:       +48.0°C  (crit = +100.0°C)

asus-isa-0000
Adapter: ISA adapter
cpu_fan:        0 RPM

 Perusing multiple posts regarding lm-sensors behaviour for ASUS motherboards for reporting sensors data, I finally found a post about showing all fans' sensors data. All that was required was adding the following line in /etc/default/grub and then running update-grub.

# This allows fan usage to be read by lm-sensors
GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax" 

The output of sensors command after rebooting the machine:

~$ sensors
asus-isa-0000
Adapter: ISA adapter
cpu_fan:        0 RPM

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +49.0°C  (crit = +100.0°C)
Core 1:       +50.0°C  (crit = +100.0°C)

nct6776-isa-0290
Adapter: ISA adapter
Vcore:          +1.21 V  (min =  +0.00 V, max =  +1.74 V)
in1:            +1.57 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:           +3.39 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:          +3.38 V  (min =  +2.98 V, max =  +3.63 V)
in4:            +1.83 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:            +0.00 V  (min =  +0.00 V, max =  +0.00 V)
in6:            +0.66 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:           +3.33 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:           +3.33 V  (min =  +2.70 V, max =  +3.63 V)
CPU Fan:       3835 RPM  (min =    0 RPM)
SYSTIN:         +55.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
CPUTIN:         +55.0°C  (high = +98.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN:         +45.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
PCH_CHIP_TEMP:   +0.0°C  
PCH_CPU_TEMP:    +0.0°C  
PCH_MCH_TEMP:    +0.0°C  
cpu0_vid:      +0.000 V
intrusion0:    ALARM
intrusion1:    OK
beep_enable:   disabled 

Voila! Now I can better monitor the PC hardware in case of abnormal behaviour.

Package required: lm-sensors