Sunday, 28 September 2025

Linux Fan Running At Full Speed!

I must have had this problem 2 or 3 years

It started after a routine software update

And today I finally got around to investigating why.

The issue is that when I start my Entroware Linux laptop, within a few seconds the system/cpu fan races away at full speed.

Back when this started happening, I was hoping that a subsequent software update would put it right, but this hasn't happened.

I soon discovered that if I put the laptop to sleep, once it was awoken, the fan settled back and the laptop ran fine for the rest of the session. So this is why I've just been living with the problem, up til now.

But today I thought I'd ask my new best friend AI buddy to help find the answer.

There are no processes running which demand 100% of each of the 4 processor cores time, so it looked like the fan was being triggered on for no good reason. Using lm-sensors it soon became clear that the temperatures started very high (70-80'C) but would drop back after the system have been woken up from a short sleep.

By running in a terminal:-

for z in /sys/class/thermal/thermal_zone*; do echo "$z: $(cat $z/type) = $(cat $z/temp)"; done

I could see that the cpu temperatures were fine, but this summary shows issues with ACPI

After boot (bad state):-

  • thermal_zone0: acpitz = 82000
  • thermal_zone3: x86_pkg_temp = 86000
  • sensors: CPU Package/Core temps ~85 °C

After sleep (good state):-

  • thermal_zone0: acpitz = 51000
  • thermal_zone2: x86_pkg_temp = 49000
  • sensors: CPU Package/Core temps ~44 °C

 

AI offered a number of possible solutions, including upgrading the bios/efi, but it could not find a reliable source.

So I eventually settled on a simple hack, which is an automated version of what I'd been doing for the last few years; boot > sleep > wake > continue

Method:-

1. create a new file;

 sudo nano /etc/systemd/system/thermal-reset.service

2. add contents;


[Unit]
Description=Quick suspend/resume to reset thermal zones
DefaultDependencies=no
After=multi-user.target
Before=graphical.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/rtcwake -m mem -s 1
TimeoutSec=60

[Install]
WantedBy=graphical.target

3. reload systemd and enable it;

 sudo systemctl daemon-reexec

 sudo systemctl enable thermal-reset.service


Although this works fine, I'm now thinking my 5+ year old laptop could do with being replaced.

Apart from the hard wired power cable & socket sticking out the side of the box (which my family consider a fire hazard) I do have to keep deleting or moving files to a backup drive, as I've out grown the 250GB drive.

Anyway, I'll put off shelling out £700 until the winter months, when I may or may not be so enthusiastic about flashing the cash!

No comments:

Post a Comment