精确控制Thinkpad的风扇和温度
以下数据和环境是: Lenovo X61 LG2 + Ubuntu 10.10 64bit
硬件是:酷睿2 T8100; 4GB DDR2
Ubuntu对于Thinkpad ACPI的驱动支持相当丰富,而这个模块提供了电脑上几乎所有会发热的部件的信息。
在Shell下运行 cd /proc/acpi/ibm/进入目录。其中的文件就是acpi当前的信息,包括各个指示灯是否亮着,快捷键的状态,是否连接了外设等等。用cat [parm] > filename就可以直接往文件里写数据,这个数据会影响到电脑。而其中的thermal就是显示温度的。运行cat thermal,得到结果如下:
temperatures: 48 39 39 43 28 -128 24 -128 39 40 -128 -128 -128 -128 -128 -128
这里的结果和Thinkpad型号有关,各个数字表示的部件温度也各不相同,在thinkwiki上可以查到资料。都是网友实验出来的,没有官方资料。现在比较确定的是第一个一般是CPU温度。其中-128(就是单字节有符号整数的最小值)表示读不到温度。比如有些读取电池温度而此时电池没装,有些读取Ultrabay扩展底座温度等。
好,接下来是风扇的问题。在同一目录下运行cat fan,将显示当前风扇状态:
status: enabled
speed: 3344
level: 1
commands: level <level> (<level> is 0-7, auto, disengaged, full-speed)
commands: enable, disable
commands: watchdog <timeout> (<timeout> is 0 (off), 1-120 (seconds))
其中speed的单位是rpm,level表示转速等级。0表示不转,7最高速。
有了这两个信息之后就是根据温度控制风扇速度了。thinkfan控制软件,配置文件在/etc/thinkfan.conf
我的配置如下:
sensor /proc/acpi/ibm/thermal (0, 3, 3, 2, 10, 0, 10, 0, 2, 2)
(0, 0, 48)
(1, 48, 50)
(2, 50, 52)
(3, 52, 54)
(4, 54, 56)
(5, 56, 58)
(6, 58, 62)
(7, 62, 32767)
第一行表示温度值的修正。因为thinkfan根据读取到的最高温度来控制风扇。而部件温度和承受力是不一致的。比如CPU在80度下也能正常工作,而硬盘此时就会挂掉。所以对于读取到的温度值需要修正,这个括号里的数字会直接加到响应的thermal的数字上,一一对应。然后用其中修正过最大温度值进行控制。
下面的配置的格式是(level, min, max),表示温度在min和max之间的时候启动相应的风扇级别。其中0和7一定要配置,而各个级别的区间要合并完整,否则就会在特定温度下失效了。其中0级别从0开始,表示在max温度以下时关闭风扇,而7级别的max一般设成顶值,表示在min温度以上时全速运行。
最后用sudo thinkfan命令启动控制软件。随心所欲的控制温度,延长风扇寿命。
根据实际情况来看,达到0级的上限后会启动比较轻微的1级风扇,如果此时只是上上网的话,温度会马上降下来,风扇就会停止。而如果在打游戏或者大型应用的话,温度会缓缓上去,然后根据配置,风扇级别会缓缓提升,直到最高级别。
注意:
1、这个温度宁愿保守也不要因为风扇比较吵而设的很高,散热问题是笔记本第一杀手。
2、这个控制软件有时候会出错,风扇会一直转或者不转。前一种情况无所谓,后一种就比较危险。如果察觉到电脑很热而风扇没动静的话就要查看是否控制出了问题。一般重启即可。