Code/fan-enable-extended

From ThinkWiki
Jump to: navigation, search
  1. !/bin/sh
  1. fan control-script
  2. based upon ibm-acpi 0.11 (experimental=1 !)
  3. eliminates anoying "fan always on" in battery mode
  4. works with hysteresis (DELTA) so that always-turn-on/turn-off is avoided
  5. fan acivates at MAXTEMP and cools down CPU, GPU etc. to MAXTEMP-DELTA than the fan is turned off
  6. furthermore detects if AC is on and gives back fan control to default behaviour than
  7. one can change MAXTEMP and DELTA to individual values
  8. but take care of your THINKPAD don`t melt it!
  9. have fun!
  10. mk 05.05.05

MAXTEMP=51 DELTA=4

SWITCHTEMP=$MAXTEMP

  1. make sure the script doesn't leave the fan off on error

trap "echo enable > /proc/acpi/ibm/fan" EXIT

while [ 1 ]; do

 for ac in `sed s/state:// < /proc/acpi/ac_adapter/AC/state`
   do
    if [ "$ac" = "off-line" ]; then
        fan=no
        for temp in `sed s/temperatures:// < /proc/acpi/ibm/thermal`
          do
            test $temp -gt $SWITCHTEMP && fan=yes
          done
        if [ "$fan" = "yes" ]; then
          command='enable'
          SWITCHTEMP=`expr $MAXTEMP - $DELTA`
        else
          SWITCHTEMP=$MAXTEMP
          command='disable'
        fi
       else # ac-adapter on -> set fan control to standard behaviour
        command='enable'
      fi
      echo $command > /proc/acpi/ibm/fan
      sleep 15
    done 
 done