thinkpad X 61ファン制御


夏の天気は比較的に暑くて、ノートパソコンの放熱の問題は比較的に際立っています.いつからか、私のx 61はコンパイルやVirtualboxなどの比較でCPUを占める場合、自動的にシャットダウンする./var/log/syslogを見ると、Critical temperature reached(128 C)、shutting down CPU温度128°Cというヒントがあります.高すぎて、卵焼きができて、ほほほSlackwareはlm-sensorsを持っていて、その中にfancontrolのスクリプトがあって、見て、pwmとfanの値を判断して、pwmのパラメータを修正してファンを制御します.しかし、使うとたまに自動的に電源を切ることがあります.このシナリオは、温度が極端な場合にファン速度を最大にする機能ではない.そこで私はスクリプトを書いて、10秒に1回CPUの温度を検出して、CPUが一定の温度を超える時、例えば90度、ファンをfull-speedモードに設定しました.60度のように一定温度に下げる、ファンをオートモードにして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