thinkpad X61风扇控制

夏天天气比较热, 笔记本散热问题比较突出. 不知道从什么时候开始, 我的x61在编译或用Virtualbox等比较占CPU的情况下, 会自动关机. 看/var/log/syslog, 发现有这么一行提示:
Critical temperature reached (128 C), shutting down

CPU温度128摄氏度? 太高了, 可以煎蛋了, 呵呵

Slackware带了lm-sensors, 其中有fancontrol脚本, 看了一下, 就是判断pwm和fan的值, 修改pwm参数来控制风扇. 但是用起来还是偶尔会出现自动关机的情况. 这个脚本并没有在温度极端情况下, 把风扇速度开到最大的功能.

所以我写了一个脚本, 10秒钟检测一次CPU温度,
在CPU超过一定温度的时候, 如90度, 把风扇设置为full-speed模式.
在降低到一定温度, 如60度, 把风扇设置为auto模式, 由BIOS控制风扇.
可以避免极端情况下CPU过热, 不过full-speed风扇声音可真大!

脚本/etc/rc.d/rc.fan, 在rc.local里面调用(控制风扇毕竟有一定风险, 请慎用):

#!/bin/bash                            
#DEBUG=1                               
tsens=/sys/class/hwmon/hwmon0/device/temp1_input
fan=/proc/acpi/ibm/fan
mint=60
maxt=90
while true
do
        read tval < ${tsens}
        let tval="($tval+500)/1000"

        level=$(cat $fan | grep "level:" | sed "s/level:\t\t//")
        if [ ! -z $DEBUG]
        then
                echo "temp  = $tval"
                echo "level = $level"
        fi

        if [ $level != "disengaged" ] && (( $tval >= $maxt ))
        then
                echo "to full speed"
                echo level disengaged > $fan
        fi

        if [ $level != "auto" ] && (( $tval <= $mint ))
        then
                echo "to auto speed"
                echo level auto > $fan
        fi

        read < <(exec sleep 10)
done
 

你可能感兴趣的:(C++,c,IBM,脚本,bash)