六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 44|回复: 0

thinkpad X61风扇控制

[复制链接]

升级  84%

12

主题

12

主题

12

主题

童生

Rank: 1

积分
42
 楼主| 发表于 2013-1-27 05:09:55 | 显示全部楼层 |阅读模式
夏天天气比较热, 笔记本散热问题比较突出. 不知道从什么时候开始, 我的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_inputfan=/proc/acpi/ibm/fanmint=60maxt=90while truedo        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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表