我的旧本子X31风扇很久都不转了,今天查了点资料,搞了搞,感觉状态上好,记录如下:
首先要能了解当前温度和风扇转速,安装lm-sensors
包就能用了:
$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +42.0°C (crit = +91.0°C)
thinkpad-isa-0000
Adapter: ISA adapter
fan1: 3614 RPM
temp1: +42.0°C
temp2: +48.0°C
temp3: +48.0°C
temp4: +42.0°C
temp5: +32.0°C
ERROR: Can't get value of subfeature temp6_input: Can't read
temp6: +0.0°C
temp7: +29.0°C
ERROR: Can't get value of subfeature temp8_input: Can't read
temp8: +0.0°C
按说[lm-sensors也能控制风扇](http://blog.cathayan.org/item/1867)的,但对我的本子不适用。
然后就是在内核中挂载ThinkPad的高级电源控制模块,在/etc/modprobe.d/options
里添加这么一句,后面的参数fan_control很重要:
options thinkpad_acpi fan_control=1
重启,或者手工重新挂载模块:
rmmod thinkpad_acpi
modprobe thinkpad_acpi
好了,控制风扇转速,最基本的方法是(如无意外,本文中的大部分命令都要用root用户操作):
echo level [level] > /proc/acpi/ibm/fan
[level]的取值可以是0-7之间的数字,或者auto,或者disengaged/full-speed,在不同的本子上会有不同的效果,总体来说数字越大转速越高,auto是系统自动判断,但在我的本子上却是不转,disengaged/full-speed是全速。我自己用的本子,设为4左右就能达到温度和噪音的平衡点。
还有人在这个基础上写了一些小工具,比如[tp-fancontrol](http://www.thinkwiki.org/wiki/Talk:Code/tp-fancontrol)或者[ThinkPad Fan Control](http://www.gambitchess.org/mediawiki/index.php/ThinkPad_Fan_Control),主要功能都是定时探测温度,然后安装预先的设定来控制风扇的转速。但由于不同硬件的差异,他们并不适用于所有情况,比如我的X31装上哪一个风扇都是auto不转,只好手工echo然后让风扇常转了。智能一点的,还可以借助cron来个定时开关、定时检测什么的。
参考
- [How to control fan speed](http://www.thinkwiki.org/wiki/How_to_control_fan_speed)