I'm having trouble with the thinkpad_acpi module on my Thinkpad T400. While the processor temperature can vary, depending on the CPU activity, from 40 to 85 deg. Celsius, my fan speed remains almost constant, in the range of 2600-3000 rpm. I was expecting the fan to speed up as the temperature rises, but it's not happening.

Before digging deeper into why it doesn't work as one would expect, I tried to check if manually increasing the fan speed works. According to this README, I should be able to control the fan speed by writing level [1-7] to /proc/acpi/ibm/fan, but I get the "Invalid argument" error whatever the value.

I realize this is an obscure problem, but may be someone has an idea what might be valid arguments. Here are some of my attempts:

# cat /proc/acpi/ibm/fan
status:     enabled
speed:      2966
level:      auto
# echo 5 >/proc/acpi/ibm/fan
bash: echo: write error: Invalid argument
# echo 'level 5' >/proc/acpi/ibm/fan
bash: echo: write error: Invalid argument
# echo 'enable' >/proc/acpi/ibm/fan
bash: echo: write error: Invalid argument
# echo 'level auto' >/proc/acpi/ibm/fan
bash: echo: write error: Invalid argument

I think you're running into this:

excerpt from thinkwiki - How to control fan speed

Fan control operations are disabled by default for safety reasons. To enable fan control, the module parameter fan_control=1 must be given to thinkpad-acpi.

You should be able to create the following file /etc/modprobe.d/thinkpad_acpi.conf with: options thinkpad_acpi fan_control=1 inside. Once you're enabled the fan_control option you should be able to do the following types of commands:

$ echo level 0 > /proc/acpi/ibm/fan    # (fan off)
$ echo level 7 > /proc/acpi/ibm/fan    # (maximum speed)
$ echo level auto > /proc/acpi/ibm/fan # (automatic - default)

If you receive a PERMISSION DENIED error you can use the following command syntax instead as a work-around:

$ echo level 0 | sudo tee /proc/acpi/ibm/fan    # (fan off)
$ echo level 7 | sudo tee /proc/acpi/ibm/fan    # (maximum speed)
$ echo level auto | sudo tee /proc/acpi/ibm/fan # (automatic - default)

You have to write a number to /proc/acpi/ibm/fan without the word level. For example,

echo 4 > /proc/acpi/ibm/fan

Hint: To write to that file as a non-root user, you can use tee and sudo.

echo 4 | sudo tee /proc/acpi/ibm/fan
  • Thanks for the response, but that produces the same Invalid argument error. So does # echo enable >/proc/acpi/ibm/fan, strangely. – mustaccio Jul 8 '13 at 23:16

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.