Difference between revisions of "Code/fan-enable-extended"

From ThinkWiki
Jump to: navigation, search
m
(Script in <pre> block)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
 +
<pre>
 
#!/bin/sh
 
#!/bin/sh
  
Line 32: Line 33:
 
         for temp in `sed s/temperatures:// < /proc/acpi/ibm/thermal`
 
         for temp in `sed s/temperatures:// < /proc/acpi/ibm/thermal`
 
           do
 
           do
             test $temp -gt $SWITCHTEMP
+
             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
 +
</pre>

Latest revision as of 09:23, 11 April 2025

#!/bin/sh

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

MAXTEMP=51
DELTA=4

SWITCHTEMP=$MAXTEMP

#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