手上有一台2010年前古董级别的ThinkPad笔记本,前段时间一切都还正常,最近开始风扇总是莫名满速,尽管电脑并没有运行太好资源的程序或观看视频。风扇机械声非常恼人,特别是在安静的实验室环境以及码代码码到心烦气燥的时候。
社区是个好地方,你想要的他都有。社区中有不少关于CPU风扇手动控制的软件供个人DIY,虽然不是面向解决风扇响声大的问题而开发,但用来解决这个问题简直堪称完美。今天这里记录自己使用的两款CPU风扇控制软件:thinkfan 和 NoteBook FanControl。注意:软件控制风扇的前提条件是电脑必须支持acpi (Advanced Configuration and Power Management Interface)。
写在前面:
顾名思义 thinkfan 是专为ThinkPad而开发的风扇控制软件,由于不同的品牌电脑使用的风扇控制器硬件读取/写入端口不同,所以thinkfan的使用范围相对单一,其他品牌机的兼容性不得而知。NBFC (NoteBook FanController) 是一个跨平台的风扇控制服务,具有多元配置数据,可支持不同型号的Notebook,兼容性不错。
另外Thinkfan的Windows版界面设计太过简单,与Windows10的设计风格对比鲜明,因此不推荐在Windows上使用thinkfan,考虑替代产品NBFC吧。NBFC不仅设计上更加贴近时尚潮流,而且对笔记本的型号兼容性,操作起来也更加方便。相反,本文推荐在Linux上使用thinkfan而不是NBFC,原因是不管是NBFC还是thinkfan都没有Linux下的GUI版本(当然你要说使用Wine,那就另当别论啦),而且thinkfan提供online安装,NBFC却要手动编译,相比而言从安装到配置上thinkfan较thinkfan都更加适合Linux下使用。
总的来说:Thinkfan和NBFC是两个优秀的笔记本风扇控制软件,建议在Linux下使用thinkfan,在Windows下使用NBFC。
在Linux下使用thinkfan
为了方便观察使用thinkfan是否能有效控制风扇转速,建议先安装Psensor。Psensor是一款硬件状况检测软件,能够实时显示CPU,内存等主要部件的温度,包含CPU风扇当前转速。
安装thinkfan非常简单,直接使用apt or apt-get 安装即可
sudo apt install thinkfan
三个主要配置文件
/etc/thinkfan.conf
/etc/default/thinkfan
/etc/modprobe.d/thinkfan.conf
其中 /etc/modprobe.d/thinkfan.conf 文件用于加载thinkfan控制模块,该文件可能不存在,可使用touch 命令创建。在该文件中写入 以下参数
### 根据需要创建文件,这不是参数的一部分
# touch/etc/modprobe.d/thinkfan.conf
## ------------------------------------------------
## 以下是参数
options thinkpad_acpi fan_control=1
文件/etc/default/thinkfan 设置 thinkfan的默认运行参数,为减轻管理负担可在该文件中设置开机自动加载thinkfan控制模块:修改START=no为yes
START=yes
如果只想手动管理,以下是手动加载thinkfan控制模块的命令
modprobe -rv thinkpad_acpi
modprobe -v thinkpad_acpi
文件/etc/thinkfan.conf 用于布局thinkfan的风扇调整策略 和 设置CPU温度来源。
## 这是文件中默认的8级工作模式 (级别,温度下届,温度上届)。当 温度下届 < 当前温度 < 温度上届 的时候,thinkfan工作在相应级别上。
(0, 0, 55)
(1, 48, 60)
(2, 50, 61)
(3, 52, 63)
(4, 56, 65)
(5, 59, 66)
(7, 63, 32767) ## 保证当温度过高的时候风扇满转
软件获得的当前温度默认是通过 cat /proc/acpi/ibm/thermal 获取的当前CPU温度,我们可在/etc/thinkfan.conf中设置其他温度源以便thinkfan使用相应温度设置工作模式。其他温度源设置参考 “网友Thinkfan配置实例”。
三个配置文件设置好后,重启电脑将自动启动thinkfan服务(当/etc/default/thinkfan设置自动启动的时候)。在纯手动的情况下需执行 “加载thinkfan模块”---“开启thinkfan服务” 的步骤。手动加载模块方法见上文,手动开启服务命令如下
service thinkfan start
## 或者
/etc/init.d/thinkfan start
此时可通过安装的Psensor实时可视化查看当前各种硬件状态看thinkfan是否生效。当前的风扇工作模式可通过命令
cat /proc/acpi/ibm/fan
查询。我们也可以通过手动修改 /proc/acpi/ibm/fan 指定thinkfan的工作模式,示例如下:
echo level 0 | sudo tee /proc/acpi/ibm/fan (fan off)
echo level 2 | sudo tee /proc/acpi/ibm/fan (low speed)
echo level 4 | sudo tee /proc/acpi/ibm/fan (medium speed)
echo level 7 | sudo tee /proc/acpi/ibm/fan (maximum speed)
echo level auto | sudo tee /proc/acpi/ibm/fan (automatic - default)
echo level disengaged | sudo tee /proc/acpi/ibm/fan (disengaged)
至此thinkfan的配置基本完成。这里还有其他几个thinkfan工作模式配置供大家选择使用。
## 官方给出的样例温度配置
(0, 0, 42)
(1, 40, 47)
(2, 45, 52)
(3, 50, 57)
(4, 55, 62)
(5, 60, 67)
(6, 65, 72)
(7, 70, 77)
(127, 75, 32767) #这一行,确保风扇全速
## 此种配置并非少写了6级风扇
(0, 0, 52)
(1, 46, 59)
(2, 54, 65)
(3, 58, 69)
(4, 62, 72)
(5, 65, 74)
(7, 68, 32767)
## 闭合式
(0, 0, 45)
(1, 45, 48)
(2, 48, 55)
(3, 55, 58)
(4, 58, 60)
(5, 60, 63)
(6, 63, 65)
(7, 65, 32767)
Windows下NBFC使用
NBFC为Windows提供了GUI版本的客户端(点击此处下载),界面清爽简洁,配置简单。NBFC与thinkfan类似,通过配置文件定义工作模式,启动后根据用户选定的配置文件中的模式设定工作。由于GUI版本配置比较直观,这里只说两点可能有帮助的建议:
1. NBFC默认适配了很多机型,基本机子都能找到对应的配置文件,如果所属机型的配置文件没有预定义,用户可以自行创建/DIY适合自己的配置。配置方法参见官方wiki。实际上,即使没有指定机型的配置文件,你几乎能在自带的配置文件列表中找到相似机型的配置文件,结合官方指南和相似机型的配置实例将大大减小配置文件设计阻力。
2. NBFC配置文件中主要需要指明的是温度读取地址和温度写入地址,这个对不同的品牌机型差异巨大,但相同机型一般不会有太大差距,配置时可根据现有同品牌机型配置进行尝试。
参考资料:
Thinkfan 官方配置说明 | 网友的Thinkfan配置实例 | 网友的thinkfan配置实例 | 网友Thinkfan配置实例 | Thermal Sensors |