My fan doesn't run in Linux. I'm worried that the laptop might turn off if the temperature gets critically high.

I ran the following command:

dmesg | grep -I fan

This gave me:

ACPI: Fan [FAN0] (off)
ACPI: Fan [FAN1] (off)

The directory /proc/acpi/fan doesn't exist. What can I do to get my fan working?

  • I think this would depend on your kernel and hardware. Are there any ACPI related kernel modules that you need to insert to get them up? I, for example, have the thinkpad_acpi module which makes all these things appear in /proc. Also. I don't think your fan will be off (unless it's got a hardware problem). – Noufal Ibrahim May 4 '11 at 7:10
  • Is this only in Linux ? Have you taken a look at what your bios say about this ? – Coren Jan 27 '12 at 10:05

The fan gets usually controlled not by the CPU and OS, but by the System Managagement controller. This way it works even if the OS is failing.

Unfortunately this means that "fan off" errors ususally are hardware problems. Read: The fan (assembly) needs replacement.

The only exception would be a very broken ACPI implementation that can shut down the fan. In this case the fan will run in BIOS. I have not heard of such a configuration, though.

| improve this answer | |
  • 2
    I don't think that's the case. For example, on my macbook pro the fan control spins up much much more even after a cold boot compared to windows and then later gets slowed down. After an update to linux it seems to run a little closer to the way windows does now. Definitely fan speed is software driven. – Matt H Jan 26 '12 at 2:27
  • @MattH, often times motherboard vendors have Windows software you can install to control the fans, but by default, they are controlled by the hardware. – psusi Feb 26 '12 at 19:38

Fans are supposed to be managed by ACPI, which allows the kernel to cooperate with the bios to monitor temperature and adjust the fan speed automatically using bios provided rules. Unfortunately, I have yet to see a single bios vendor actually comply with the standard. You might look in /sys/class/thermal and see if there are any fans that show up under there and if they can have their settings changed. Generally the bios ACPI tables don't provide the fan interfaces and just leave it up to a hardware controller to manage.

Many of these hardware controllers can be detected by the lm-sensors package. You run sensors-detect and it will probe for known controllers and can configure the correct driver to be loaded to manipulate it. This often results in sensors being able to report various temperature and voltage readings, and the fancontrol script ( packaged separately in Debian/Ubuntu ) can be configured to manipulate the fan speed in response to the temperature readings.

Many of these modules require you to add acpi_enforce_resources=lax to the kernel command line to load.

| improve this answer | |

Manually echoing 1/0 to cur_state file of cooling_device will turn it on/off:

for cdev in /sys/class/thermal/cooling_device*; do
   [ $(cat $cdev/type) == "Fan" ] && { echo 1 | sudo tee $cdev/cur_state; }
| improve this answer | |
  • none of my cooling device type values contain "Fan"... most are "Processor" and one is "intel_powerclamp" – Michael Jun 6 at 21:49

It's possible to control the fan using the embedded controller. Some of the cpu temperature and fan control register may be exposed to the ec. In Linux you can get very easy access and dump those register. My laptop didn't work either and the ACPI is broken by design and the fan is mainly controlled by the BIOS and turns on forever. In Windows you can download the RW everything tools to check the ec. With the RW everything tool you can also try to modify some values. This worked for my box and I can control the fan automatic and manual mode and speed.

| improve this answer | |

You can turn the fan on and off manually by pressing fn-1. (Ubuntu 15.04)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy