2024年3月17日发(作者:)

联想Lenovo-Thinkpad风扇BIOS转速静音问题和tpfancontrol的弊端——很专业很详尽的解释

借x61的风扇问题和大家讨论一下tpfancontrol的弊端

最近发现有很多兄弟都讨论x6、SL410/510k系列的风扇噪音问题,我也发过类似的帖子,问题无非风扇是转起来就不

停,而且转速较高。看到很多回帖的兄弟都建议用tpfancontrol这个软件来控制风扇。这个软件本人也用了一段时间,为

了弄清原理同时又查了很多有关这款软件的资料,发现并不都是正面的评论,也有不少批判的声音,其中有些技术层面

上的分析很有道理,但大部分使用者都被这款软件的简单易用的外表所蒙蔽了。下面我就说说对这款软件的理解,有不

同的看法大家交流,解决问题才是最终目的。

以下以tpfancontrol 0.62深海汉化版为例

首先,tpfancontrol的功能相信大家都熟悉了,可以自由设置风扇的启动阈值和转速大小,适合在各种环境适用,即可偏

重静音也可加强散热,支持开机自启动,从表面上看这是一款近乎完美的软件。

现在问题来了,如果你正在使用tpfancontrol,请打开你电脑中的事件查看器,你会发现会有好几个ACPI错误的警告,

而这些警告的时间恰恰都与你开机的时间吻合(不信可以重启一下试试)(everest调用传感器时也会出现上述警告,但

everest是只读不写)

警告的内容是: “当无请求时,嵌入式控制器(EC)返回数据。BIOS 可能试图在没有与操作系统同步的情况下访问 EC。此

数据将被忽略。不需要执行进一步操作;但是,请与您的计算机制造商联系,获取升级的 BIOS。”

弊端一:

下面是引用网易博客唯我独醒网友的分析:

“EC控制风扇,具体怎么控制,根据一个ram的内容(应该是一个字节),此ram在T43中独立,在windows环境中可

以通过winIO进行访问,ec不断检测此ram中的内容,如果是0-7那么ec将不再接受BIOS提供的风扇控制数据,而是

根据ram的具体数值对风扇转速进行锁定。具体转速见readme文件。而当此ram的内容为0x80即128的时候那么风扇

的转速受bios管理,应该是接受bios提供的风扇转速控制数据,从而对风扇进行相应的调节。Fancontrol在工作的时候,

会根据读取的温度传感器的信息进行判断,根据具体的温度值结合用户的设定,对ram的内容进行0-7的调整,而ec

检测到ram的变化,有根据ram的数值对风扇进行相应的调整。这就达到了用fancontrol进行风扇控制的目的。”

tpfancontrol要控制的这个ram,如果经常的擦写eepROM,对eepROM的寿命有影响,一般eepROM的擦写寿命在10-100

万次左右。那样的话eepROM可能过一段时间就坏了。(如果风扇每5分钟启动一次,一小时就是12次,一天用5小

时的话就是60次,每天用的话,运气不好的话不到5年eepROM就坏了,一般用户都出保了。当然这早已超过了一台

电脑的使用周期。)

弊端二

“当fancontrol正常工作的时候,当用户正常关闭它的时候,根据windows的工作原理,fancontrol会得到一个关闭程序

的消息,此时fancontrol把ram中的内容恢复到0x80以便让bios对风扇进行控制。如果在fancontrol在正常工作的时候,

此时cpu的温度又很低,低于用户设定的0档那么,ram会被fancontrol写0x00,此时风扇停止转动,现在如果在任务管

理器中中止了fancontrol的进程,那么fancontrol没有得到一个要关闭程序的windows的消息,也即fancontrol没有被正

常关闭,此时fancontrol不工作了,而由于它的非正常退出也没有把ram中的数据恢复到0x80,那么现在,这个风扇就

不被任何软件管理了。因为ram中的数据永远是0x00,除非有两种方法,一是重新运行fancontrol,使其再次对ram进行

相应的操作。在有一种方法就是关闭计算机,再重新启动。而且只有关闭计算机在重新启动才行,根据ram的特性,直接

重新启动时不行的,直接重新启动的话ram不会掉电,所以其数据仍是0x00,还有一个问题就是直接重新启动ec也不会

对ram进行初始化,不然ram重新启动也会被修改为0x80,通过测试关机重启ec应该是会对ram进行初始化,反正实际

上是行的,关机前写的是0x07,然后中止fancontrol,重启,ram还是7,关机,开机,一听就知道风扇由bios管理的,

自然是恢复到了0x80.这也是上文提到的为什么直接重启不行的原因。”

坛子里有一位兄弟就遇到了这样的问题。具体大家自己查吧。

总结一下,tpfancontrol让风扇安静了,同时硬件就要承受更长时间的高温煎熬,如果你的机子风扇噪音没有到你不能

忍受的地步,尽量交给bios去控制吧,毕竟这和硬件、系统、驱动的匹配程度是最高的,也是相对较稳定的。同时,定

期清理一下灰尘、给风扇加油也是解决风扇噪音和高温问题的最有效的途径之一。

发了这篇帖子也许有人会说我杞人忧天,我只是想把它当成技术来讨论,并不想让它成为大家的心病,发这个帖子主要

是为了提醒大家和交流技术,如有说得不妥之处请指正。

1. 现在问题来了,如果你正在使用tpfancontrol,请打开你电脑中的事件查看器,你会发现会有好几个ACPI错误

的警告,而这些警告的时间恰恰都与你开机的时间吻合(不信可以重启一下试试)(everest调用传感器时也会出现上述

警告,但everest是只读不写)警告的内容是: “当无请求时,嵌入式控制器(EC)返回数据。BIOS 可能试图在没有与操

作系统同步的情况下访问 EC。此数据将被忽略。不需要执行进一步操作;但是,请与您的计算机制造商联系,获取升

级的 BIOS。”

--------------------------

这个完全不必担心,这个问题产生的原因为tpfancontrol软件绕过操作系统直接访问EC,严格来说这算不上错误,这个

警告可以忽略.

2. “EC控制风扇,具体怎么控制,根据一个ram的内容(应该是一个字节),此ram在T43中独立,在windows

环境中可以通过winIO进行访问,ec不断检测此ram中的内容,如果是0-7那么ec将不再接受BIOS提供的风扇控制

数据,而是根据ram的具体数值对风扇转速进行锁定。具体转速见readme文件。而当此ram的内容为0x80即128的

时候那么风扇的转速受bios管理,应该是接受bios提供的风扇转速控制数据,从而对风扇进行相应的调节。Fancontrol

在工作的时候,会根据读取的温度传感器的信息进行判断,根据具体的温度值结合用户的设定,对ram的内容进行0-7

的调整,而ec检测到ram的变化,有根据ram的数值对风扇进行相应的调整。这就达到了用fancontrol进行风扇控制

的目的。”

tpfancontrol要控制的这个ram,如果经常的擦写eepROM,对eepROM的寿命有影响,一般eepROM的擦写寿命在10-100

万次左右。那样的话eepROM可能过一段时间就坏了。(如果风扇每5分钟启动一次,一小时就是12次,一天用5小时

的话就是60次,每天用的话,运气不好的话不到5年eepROM就坏了,一般用户都出保了。当然这早已超过了一台电

脑的使用周期。)

----------------------------------------------

如果你读过tpfancontrol的源代码你就会知道,它写入的不是EC的EEPROM,而是EC的寄存器,寄存器和eeprom的

区别在于寄存器断电后不保存数据,eeprom断电保存数据,而寄存器的寿命可比eeprom长多了,cpu的AX,BX,IP

这些寄存器一秒钟能被读写上万次

3. 即使是tpfancontrol意外终止导致EC bios无法接管风扇控制,也不需要担心温度会持续升高导致烧坏cpu,

原因在于cpu自身的温度保护机制,这个大部分人都明白就不多说了.

4. 有人会说有时候玩游戏会导致cpu一直100%占用会不会导致tpfancontrol无法有效的运行,是否需要调高

tpfancontrol的进程优先级,这个,就更不用担心了,自win NT之后的windows系统都是“抢占式”多任务而不是win3.x

的协同式多任务,即使tpfancontrol优先级调到最低级windows也不会让他一直占不到cpu时间片的。

5. 考虑一下使用和不使用tpfancontrol的利弊吧,不开tpfancontrol风扇会一直转,大家都知道,机械的东西总

是比电子的东西容易坏多了(假设你还是认为它会损坏EC eeprom的话),风扇要是不停地转几乎五年后非常多的人总

能碰到fan error!,一个风扇可是好几百呢,而即使tpfancontrol真的读写eeprom,那至少eeprom的寿命也在5年至

50年,实际上电子产品的寿命总是比你想象的长得多,所以取最短的5年没有多大意义,大多数电子产品寿命在20年

以上(eeprom这种东西大部分家用电器中都得有,而且读写绝对比tpfancontrol频繁多了,比如电视机你每换个台调个

音量它就得写入eeprom),如果你真的这么幸运5年就坏了那得恭喜你了赶紧买彩票去吧。

关于EC的EEPROM和EC的寄存器不知道楼主和13楼哪个是真的;

用tpfan不仅仅是让风扇安静,有时温度很低了风扇还在卖力的转,bios风扇控制不够智能,这时就tpfan就派上用场

了;

两套profile,冬天夏天各一个,冬天风扇基本不转暖手,夏天风扇转得勤点凉快,自由控制。

后来出现了服务器版Sev.防止TPfancontrol意外导致的风扇停转,但貌似现在下载不到了。用4.1版本很好,我的是

SL510K的机子。