Fan control scripts
Revision as of 12:48, 9 May 2005 by 217.231.111.61 (Talk)
sh script example
#!/bin/sh
MAXTEMP=50
while [ 1 ];
do
fan=no
for temp in `sed s/temperatures:// < /proc/acpi/ibm/thermal`
do
test $temp -gt $MAXTEMP && fan=yes
done
command='disable'
test "$fan" = "yes" && command='enable'
echo $command > /proc/acpi/ibm/fan
sleep 20
done
sh script example with more features
#!/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
init script example
#! /bin/sh
N=/etc/init.d/fan
set -e
case "$1" in
start)
# make sure privileges don't persist across reboots
if [ -d /var/run/fan ] && [ "x`ls /var/run/fan`" != x ]
then
touch -t 198501010000 /var/run/fan/*
fi
fan.sh & # Script from above
;;
stop|reload|restart|force-reload)
killall fan.sh
echo enable > /proc/acpi/ibm/fan
;;
*)
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0