Comment 92 for bug 751689

Revision history for this message
Tom Grace (tom-deathbycomputers) wrote : Re: ThinkPads overheat due to slow fans when on 'auto'

I've been testing the following work around:
1) Set the thinkpad_acpi module to allow manual fan control (put the following in /etc/rc.local and run as root):
rmmod thinkpad_acpi
modprobe thinkpad_acpi fan_control=1
2) Run a script from cron every five mins to set the fan to disengaged if temp exceeds 80C
cat /usr/local/bin/temp_mon.sh
#!/bin/bash
temp=`grep temp /proc/acpi/ibm/thermal | awk '{print $2}'`
if [ ! -f /var/run/temp_mon.state ] ; then
    echo auto > /var/run/temp_mon.state
fi
state=`cat /var/run/temp_mon.state`
if [ $temp -gt 80 ]; then
    echo -n 'level disengaged' > /proc/acpi/ibm/fan
    if [ $state != "disengaged" ]; then
        logger "Fan state changed to disengaged"
        echo disengaged > /var/run/temp_mon.state
    fi
else
    echo -n 'level auto' > /proc/acpi/ibm/fan
    if [ $state != "auto" ]; then
        logger "Fan state changed to auto"
        echo auto > /var/run/temp_mon.state
    fi
fi

3) put the following in /etc/cron.d/temp_mon
*/5 * * * * root /var/run/temp_mon.state

4) Test with something like yes > /dev/null and watch for temparature/fan changes.

This isn't ideal, but it does allow a compromise between fans always spinning and thermal shutdown. Let me know if you see any issues with the script (code at https://github.com/theothertom/thinkpad-temp_mon)