Home > bash, eee, linux > Howto: Reduce fan noise level on the eee pc 901 / 1000 / 1000H

Howto: Reduce fan noise level on the eee pc 901 / 1000 / 1000H

September 6th, 2008 admin Leave a comment Go to comments

Owners of the Asus eee pc 901 may have noticed that it makes quite alot of noise when the fan is on. In Ubuntu / Xubuntu / Kubuntu there are ways to control the fan that (almost) eliminates this. Read on for more.

Update: version two of eeefan has been released. Check it out here

Every blog post should have a nice image. This shows an eee pc and a fan.

An old friend once told me, that every blog post should have a nice image. This one shows an eee pc and a fan.


The first thing you need to do is to install Adams custom kernel for the eeepc. He has a nice guide on how to do that here. Then, we need to do is to load the Asus drivers and turn on manual fan contro. Issue the following commands in a terminall

sudo modprobe asus_eee
sudo echo 1 > /proc/eee/fan_manual

To set the fan to run at 100% and 0% respectively run

sudo echo 100 > /proc/eee/fan_speed
sudo echo 0 > /proc/eee/fan_speed

To automate the fan adjustment, I have written a small script (with the name eeefan) which can be seen below. You may copy-paste it, or download it here. I suggest that you put it in you ~/bin/ folder. Once you have done this, add the following line to the file /etc/crontab:

*/1 * 	* * * 	root 	sh /home/username/bin/eeefan

Remember to replace username by your real user name. Also, add the line

asus_eee

to the file /etc/modules. Now, the fan speed will be automatically adjusted every 10 seconds. Try to play around with the value of TEMP_CRITICAL to get the best results.

eeefan Code:

#!/bin/sh
# K.H. Jensen 2008
# Released under the GPL
# eeefan - eee pc 901 / 1000 / 1000H fan control utility

temperature_reading=/proc/eee/temperature
fan_control=/proc/eee/fan_speed
fan_manual_switch=/proc/eee/fan_manual
# Set critical temperature where the fan starts
TEMP_CRITICAL=62
# Set fan speed above TEMP_CRITICAL
FAN_SPEED_CRITICAL=65
# Set fan speed below TEMP_CRITICAL
FAN_SPEED_SUBCRITICAL=25

eeefanupdate() {
    # Get temperature reading
    TEMP=$(cat $temperature_reading)
    # Compa re to the critical temperature
    if [ $TEMP -ge  $TEMP_CRITICAL ];then
        # High fan speed
        echo $FAN_SPEED_CRITICAL > $fan_control
    else
    # Low fan speed
        echo $FAN_SPEED_SUBCRITICAL > $fan_control
    fi
}

# cron jobs can only be executed once every minute,
# so we have to use the sleep command
# Turn on manual fan control
echo 1 > $fan_manual_switch
# Run eeefanu, then wait 10 seconds.
eeefanupdate
sleep 10
eeefanupdate
sleep 10
eeefanupdate
sleep 10
eeefanupdate
sleep 10
eeefanupdate
Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
Categories: bash, eee, linux Tags: , ,
  1. September 7th, 2008 at 12:01 | #1

    Nice hack – now if I only had a Eee to try it on. :)

  2. September 10th, 2008 at 00:42 | #2

    Nice! I’ll be sure to try this with Backtrack 3 on my 701. Thanks ;)

  3. coolphoenix
    September 10th, 2008 at 00:43 | #3

    are there any patches for 2.6.26/2.6.27-rcX kernels, that allow to control the fan on other linux distros? (i would need it especially for my eee 1000H / 901 on gentoo)

  4. September 10th, 2008 at 01:36 | #4

    @coolpheonix
    Yes, you would have to get the eeepc linux module from here(http://code.google.com/p/eeepc-linux/) and insert it into the kernel. Then it should work.

  5. coolphoenix
    September 10th, 2008 at 17:41 | #5

    thanks, after following the issues on that site i could build/insert v0.3 successfully! finally a quiet laptop ;)

  6. syrou
    September 11th, 2008 at 21:22 | #6

    Thanks for this utility. I was wondering if anyone knows how to supplement the fan control with a CPU underclock so it’s temerature doesn’t reach high temperatures that may wear it fast.

  1. September 11th, 2008 at 15:48 | #1
  2. October 31st, 2008 at 18:21 | #2