用thinkpad_acpi控制风扇速度

昨晚看了俩小时电影,关了播放器之后发现GPU温度飙到80多摄氏度。手摸在键盘上都能感觉到烧烧的,风扇出风口的铜片很烫手。为了小黑的健康,我决定折腾一下。

我的小黑是Thinkpad T61p,在装Ubuntu的时候相信是默认安装好thinkpad_acpi的,但是默认情况下,风扇的转速都是在“自动档”上的。要换成手动档你必须要在/etc/modprobe.d/下添加一个文件thinkpad_acpi.conf(老版本的可能是叫options)。在文件中要放:

options thinkpad_acpi fan_control=1

接着重载模块:

sudo modprobe -r thinkpad_acpi && sudo modprobe thinkpad_acpi

这样一来就可以直接通过修改/proc/acpi/ibm/fan来改变转速了:

echo level auto | sudo tee /proc/acpi/ibm/fan

cat /proc/acpi/ibm/fan可以查看如何命令风扇:

commands: level <level> (</level><level> is 0-7, auto, disengaged, full-speed)
commands: enable, disable
commands: watchdog <timeout> (</timeout><timeout> is 0 (off), 1-120 (seconds))

由此,可以根据你的需要来控制风扇了。

如果想要自定义自动化就有好多种办法了。一种比较简单的办法是直接安装thinkfan,在 /etc/thinkfan.conf修改好阀值和对应的转速级别(0–7 level值)。默认情况下,thinkfan是在deamon模式下运行的。不过有个缺点是好像它只能操控0–7的等级,不可以autofull-speed

还有一种自动化方法是使用自动脚本,但是我从源代码看貌似也只是能控制0–7的转速。

其实0–7或auto在常规任务的时候是足够的,温度一般在40–60度之间,但是像看电影这种损耗资源的任务就会开始升温。0–7的转速是不够的(level 7的转速应该只是3000多转吧),而且貌似这些软件和脚本检测的温度数据都只是CPU温度。所以几时GPU温度升到80度风扇还是慢慢悠悠两三千转……要解决这个问题其实也很方便。因为温度监测的接口就在/sys/devices/platform/thinkpad_hwmon/temp*_input,各部分温度对应的ID可以到这张网页上找到。

有了这些,相信写个适合自己小黑的bash code已经没有多少问题了。当然最佳还是利用现成的代码,稍作修改即可。

–EOF–

CBlog

About Conan

博客,好学者,开源控,爱编程,喜设计,迷摄影,爱音乐。好学对象:平面设计,网站架构,算法,网络安全,视觉艺术。