Fan always on and on high RPM with Linux (= poor battery life)

I tried a lot of different distros of Linux with my Gemibook XPro, but always with the same result: With a new enough kernel everything seems to work, but even when idle the fan is on high RPM. The air coming out back is also quite warm and Linux shows a battery life of less than 3h, so obviously the CPU burns through a lot of energy. With Windows there is no problem: When idle the fan is off about half of the time or runs with low RPM. With very light usage I can get more than 7h out of it.

With Ubuntu and the energy profile set to “battery saving” I can tame the fan a little bit (but the RPMs are always in the medium range) and get 4-5h of battery life, but I think this is due to throttling the CPU, which is of course unsatisfactory.

Does anybody know, what I can do about this? Any BIOS settings that are OK with Windows, but that Linux doesn’t like? This problem sounds to me like the CPU doesn’t use power saving states. Could some driver or setting solve the problem?

Any help would be greatly appreciated.

maybe @leledumbo knows something :).

From what I can google, Gemibook XPro seems to have similar specs with my MiniBook X N100. However, it’s indeed not a guarantee as fan control and the whole cooling system is potentially different.

Since it works fine with Windows, indeed this could be something with the fan control from the software side. So first, do you have TLP / LMT / powerTOP / any battery savings measure installed and running?

Also, install cpufrequtils then run:

$ watch -n 3 'cpufreq-info | grep "frequency is"'

see if the frequencies ever get down to under 1Ghz (N100 can go down to 700Mhz) when idle (wait for like 9 seconds after running, it needs time to get idle).

Alternatively, cpupower-gui can show the same in a simple GUI app. If you can get this running, a screenshot would be helpful.

I forgot to mention above, that I am using a live image. That shouldn’t make a difference though, should it?

I now installed cpufrequtils and run the command. Since I am not writing this from the live Linux system, I cannot provide a screenshot. It shows about 80% of the time a CPU frequency of around 3,4 GHz and 20% of the time 700 MHz when idle (for a long time).

I then installed TLP and nothing changed. I also did that with an earlier boot of the system. However, after a couple of minutes the fan suddenly slowed down. It never stops, but now the noise is bearable. Now cpufrequtils shows ~700-860 MHz all the time. Seems, I did not wait long enough the last time I installed TLP (also I did not know that Linux doesn’t seem to (correctly?) use power saving states as a default).

When running powerTOP it always shows in summary between 200 and 300 wakeups/second. Is that normal? Seems a bit high to me.

Battery life projections now say 5-7h at 84% battery. That looks very promising. It seems that TLP solved my problem. Thanks @leledumbo

Can’t really say, basically no guarantee.

Seems it’s doing something heavy for quite a long time then, gotta check (h)top during that time to see who eats the CPU slice.

Most distros have no power saving mechanism at all by default, as they assume desktop usage. Some like Manjaro, do recognize portable devices like laptop and will install TLP by default. Otherwise, kernel-wise, it takes whatever set by the hardware by default, unless a specific module exists in the kernel like many Thinkpad models.

It really depends on your installation. Even a different DE alone might change that number significantly as every DE has different services running that may ask for a CPU slice regularly. My KDE Neon is about right in the middle, it has been configured with various services, though.

Enjoy.

I had the same problem with an Arch install (EndeavorOS). The cause turned out to be an IRQ from the touchpad that incorrectly kept using the CPU. After some digging, I managed to disable the service that was responsible, and everything still works. Please follow the guide here: