I conquer the fan

I finally did get my fan under control in Puppy Linux. It involved modprobe commands for both the fan and thermal modules (I configured them to start on boot) and getting a cron job running to check CPU temperature at 5-minute intervals and turn the fan on or off depending on temperature.

I’m working on writing the whole thing up. But first I want to thank the Gateway Solo 1450 owners and Puppy Linux users whose expertise I drew on to get it done.

Even with the cron job running, I think the fan runs less under Debian and Ubuntu. There must be a different set of parameters for determining fan status. Perhaps cron’s check every 5 minutes of the CPU temperature is a much longer interval than those other systems use. I’ll have to look into it.

Another thing I’ll be looking into is what my “trigger” points for the fan are. I currently have it set to start at 50 C and stop at 40 C. Maybe I can shift those numbers a bit to have the fan run less but still keep the CPU at an acceptable temperature.

While I’m giddy as shit at being able to run Puppy without the fan blasting the whole session, I’m still not as satisfied as I would be if it were managed as well as Debian does in EVERY Linux distro I use. But at least I can take what I learned in Puppy and try it in other distros that don’t control the fan on this laptop. I’d love for this to work in BSD, too, but who am I kidding? I’ll have to try my shell scripts and modprobe commands in BSD and see what happens. Probably nothing.

One thing bothers me, though. If I were running a fanless PC, this wouldn’t be a problem. It makes me want to build a fanless mini-ITX VIA box with parts from the Damn Small Linux Store or Logic Supply. And why can’t their be a fanless laptop? If only I had enough skill, time and crazy-in-the-headness to build my own laptop. (I know this one has a fan, but I’d do it sans fan.

Still, I’ve got the fan saga, more on the Debian Live CDs, my problems with image editing and IPTC info and more in the near future.



  1. Hi, Steve,

    Do you the how-to for the fan control with Puppy Linux that you had tried?

    I installed the Puppy Linux 4 on a Compaq Presario desktop PC, and the fan keeps spinning all the time.

    Thanks a lot.


    • Look at these two entries:


      Basically you have to put this line in /etc/rc.local:

      echo 3 > /proc/acpi/fan/FAN0/state

      But in Puppy, you ALSO have to enable two modules: thermal and fan.

      To test this from the command line, open up a terminal in Puppy and do the following:

      # modprobe fan
      # modprobe thermal
      # echo 3 > /proc/acpi/fan/FAN0/state

      After running these three commands, your CPU fan should be managed by ACPI, and it will turn on when the CPU gets too hot.

      To have this happen automatically, as I said, put the echo 3 > /proc/acpi/fan/FAN0/state line in /etc/rc.local, and put the names of the two modules, fan and thermal in whatever file calls modules at boot time.

      I just saw this page: http://www.puppylinux.com/technical/module-loading.htm

      It says the Puppy Boot Manager can help you load modules at boot. I would check how I did it on my old Puppy install, but I’ve since wiped that drive and don’t have the pup_save anymore.

      Still, all you need to figure out is how to load those two modules, then modify /etc/rc.local, and you’ll be good to go.

  2. It really works! Thanks.
    Now the PC is very quiet. 🙂

    However, on my Compaq Presario PC, I need to use:
    echo 3 > /proc/acpi/fan/FAN1/state
    instead of
    echo 3 > /proc/acpi/fan/FAN0/state

    don’t know why.


Comments RSS TrackBack Identifier URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s