Temperature and fan speed control on the Asus Eee PC
I noticed that after my second eeebuntu install (see a previous post for a why to this reinstall), my Eee PC was a wee bit more noisy. Most probably it has always been like that, but I just noticed after the reinstall.
I put some sensor output in my [[Xfce]] panel, and noticed that the CPU temperature hovered around 55 degrees C, and the fan would continuously spin at around 1200 rpm. I searched the web about it, and found out that usually fans are stopped at computer boot, then start spinning when temperature goes up. This is logic. The small catch is that when the temperature in the Eee PC goes down, the fan does not stop automatically. This means that the fans are almost always spinning in the long run.
I searched for methods to fix that, and I read this post at hartvig.de. From there I took the idea of taking over the control of the fans, and making them spin according to the current temperature. For that, I wrote the following script:
#!/bin/bash TEMFILE=/proc/eee/temperature FANFILE=/proc/eee/fan_speed MANFILE=/proc/eee/fan_manual # Get temperature: TEMP=`cat $TEMFILE` # Choose fan speed: if [ $TEMP -gt 65 ] then SPEED=90 elif [ $TEMP -gt 60 ] then SPEED=60 elif [ $TEMP -gt 55 ] then SPEED=30 else SPEED=0 fi # Impose fan speed: echo 1 > $MANFILE echo $SPEED > $FANFILE
The file /proc/eee/fan_manual controls whether fans are under manual (file contains a “1”) or automatic (file contains a “0”) control. File /proc/eee/fan_speed must contain an integer number from 0 to 100 (a percent of max fan speed).
I am running this script every minute with cron, and thus far it works OK.