如何使风扇控制正常工作?


34

我知道有一种叫做fancontrol的东西,它使您能够控制系统通风的速度。我想让我的粉丝们旋转得更快一些,因为我的笔记本电脑非常容易发热。我发现的所有教程和内容都适用于旧版本的Ubuntu,并且似乎不再起作用。

谁能给我解释一下,或者给我一个很好的链接,让我了解如何在Ubuntu上运行它?具有相同效果的某些东西也可以。


有关硬件的更多信息可能会有所帮助,例如笔记本电脑的品牌,型号名称/编号以及BIOS的类型/版本。
2011年

@filescraps戴尔Latitude D620:paste.ubuntu.com/699801
RobinJ 2011年

5
@RobinJ-是否已对过热问题进行了常规检查-检查是否有灰尘/堵塞-还要查看处理器散热器。将您的BIOS更新到最新版本。您是否尝试过在grub中添加“ acpi_osi = Linux”?您是否在使用其他启动选项?基本上,我的观点是-过热问题是灰尘/ acpi类型的东西-您永远不需要手动控制风扇。
fossfreedom

好吧,风扇只有在大约65°C时才开始运转,并且似乎为时已晚,因为一旦开始上升,风扇就不会再太快地升至75°C以下。这是一台笔记本电脑,我对硬件没有足够的信心去接受它。怎么acpi_osi=Linux办?没有额外的启动选项,只有默认的GRUB。
RobinJ 2011年

1
@RobinJ-不要忘记网站的风格是将相关信息添加回您的问题中,而不是将其隐藏在评论中。
fossfreedom

Answers:


8

i8kutils用于控制Dell Vostro 3350笔记本电脑的风扇。

#仅适用于Dell笔记本电脑:
$ sudo apt-get install i8kutils 
$ i8kfan 1 2#将左风扇设置为低速(1); 正确的高速(2)。

只是看起来,BIOS中的某些内容总是会在几秒钟后将其恢复为先前的值:P无论如何,即使有些迟了,它仍然是最有用的答案。
RobinJ

它适用于我的Alienware m14x。但是,它仍然无法将散热器设置为最大速度,这仍然导致笔记本电脑在更高的温度下运行。这比Windows上的要热得多……
iLemming 2013年

BIOS将其重新设置,因此我每2分钟添加一次cronjob运行:crontab -e*/2 * * * * /usr/bin/i8kfan 1 1。现在可以正常工作
goksel

14

通过此答案中给出的方法,您最有可能使用其他替代您的i8kctl风扇命令的方法来解决您的问题。为了完整起见,我将提供一些有关戴尔笔记本电脑上的风扇控制的一般说明,以及有关的完整说明i8kutils

什么可能行不通

不幸的是,通过ACPI和PWM引脚控制笔记本电脑风扇的两种常见且直接的方法是:

  • 戴尔笔记本电脑缺乏ACPI风扇控制功能(* 1)

    • 结果,尝试使用ACPI引导参数等将失败
  • 据我所知,戴尔Latitude笔记本电脑缺乏pwm可控风扇(* 2)

    • 结果,fancontrol/ pwmconfig程序将无法工作

使用i8kutils

但是,有一个名为的软件包i8kutils可以通过SMM BIOS控制Dell Inspiron笔记本电脑上的风扇。一些用户也报告说他们的Dell Latitude笔记本电脑也取得了成功(我就是其中之一,在Dell Latitude E7440上)-但是,通常需要一些技巧来摆脱干扰BIOS风扇的控制。根据先前的评论,您也将遭受痛苦。

安装i8kutils

$ sudo apt-get install i8kutils

试试吧:

$ i8kfan 2 2     # set to max speed
$ i8kfan 0 0     # set to 0 speed

...听一听是否可行。

禁用BIOS风扇控制

如果它可以正常工作,但其他方面仍在按设置的速度进行反击(Dell Latitude笔记本电脑上的许多用户报告),这是由于计划的SMM会话将风扇速度调回了。幸运的是,有一种方法可以通过写入SMM寄存器禁用BIOS风扇控制

警告:请参阅smm.c顶部的警告。该方法将写入SMM寄存器。但是,我还没有用户报告此问题。同样,所有有关尝试此操作的报告都表明成功禁用了BIOS风扇控制。

i8kutils包括程序源,smmi8kutils程序包不包括编译后的二进制文件。我们要做的是下载的源代码i8kutils,编译程序smm,然后使用适当的参数运行它,以通过写入SMM寄存器来禁用BIOS风扇控制。

下载构建所需的软件包:

$ sudo apt-get build-dep i8kutils

下载i8kutils源代码,解压缩并输入目录(确切名称取决于i8k版本):

$ apt-get source i8kutils
$ tar xvf i8kutils_1.33.tar.gz
$ cd i8kutils-1.33/

编译smm

  • 如果在32位系统上:

    $ make
    

    (以上将执行gcc -g -O2 -Wall -I. -o smm smm.c。)

  • 如果在64位系统上:

    $ gcc -g -O2 -Wall -I. -o smm -m32 smm.c
    

smm使用参数运行30a3以禁用SMM风扇控制:

$ sudo ./smm 30a3

现在,应该禁用BIOS风扇控制。尝试通过设置速度i8kctl,聆听风扇并确保速度持续。

注意:此设置将保留重启和关机的功能。可以使用再次启用BIOS风扇控制$ sudo ./smm 31a3


* 1:我已经看到了有关此内容的官方消息,暂时找不到。如果要验证硬件是否缺少硬件,请按照以下说明进行操作:https : //wiki.ubuntu.com/DebuggingACPI

* 2:用于验证此,运行pwmconfig: sudo apt-get install fancontrolsudo pwm-config会证明的PWM能够风扇存在或不存在


我实际上使用了ACPI参数acpi_osi='!Windows 2012'来控制Dell Inspiron 15R 5520的风扇,因为无论温度如何,它们始终以最大速度旋转。
user311982

这应该是正确的答案。消息灵通,非常相关!
2015年

好答案。也可以在这里
malat

1
非常感谢您,在尝试了所有其他方法后均无济于事,这对我很有用。当我尝试编译smm时,我丢失了sys / cdefs.h,但sudo apt-get install g++-multilib将其导入(如askubuntu.com/questions/470796/…所述
Philip Daniels

我可能会晚一点,但是,将其置于最大速度有任何不利之处吗?
Zerquix18年7

14

封装的lm-sensors 安装lm传感器可能就是您想要的。

正如您所建议的fancontrol 安装风扇控制

确保您要通过软件控制的所有风扇都具有4针连接器。

“具有PWM功能的风扇通常连接到4针连接器(引脚:接地,+ 12V,感应,控制)。” 资源

当我运行pwmconfig风扇控制的一部分时,我得到了

/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed 如果您具有兼容的硬件,它将指导您。

以下是一些脚本与生成的配置文件结合使用。我认为您可以在此处设置更高的值。

label fan1 "Side Fan"
set fan1_min 1000
label fan2 "PSU Fan"
set fan2_min 1000
label fan5 "CPU Fan"
set fan5_min 1000

但是正如我所说,由于硬件不支持,因此我无法自己进行测试,我可以从BIOS中控制风扇,但是等级为3。我使用它来保持风扇的缓慢安静。


1
/ usr / sbin / pwmconfig:没有安装支持pwm的传感器模块还有其他方法吗?
RobinJ 2011年

通常,您通常需要先运行sensors-detect,然后加载其中显示的模块以获取温度和风扇速度读数,然后pwmconfig可以对其进行操作。
psusi 2011年

@RobinJ,看来您没有可识别/受支持的芯片。
psusi 2011年

我将向您颁发赏金,因为这是可以帮助大多数其他人的最有用的答案。
RobinJ 2011年

5

好的,这可能不是您要找的答案,但是通过在通风口上放置吸尘器除去灰尘,我的过热问题得到了解决。如果您在较低的cpu频率下出现过热,则可能值得尝试。请注意,可能会吸入小零件。如果幸运的话,此方法可能会解决过热问题。


我将赏金授予上述eanswer,因为这是信息最丰富的问题​​,但我的问题似乎与硬件有关,因此您的回答最接近解决方案。但是由于我没有足够的信心去弄乱笔记本电脑的硬件,因此我把它带到了商店,因为它仍在保修期内。
RobinJ 2011年

我只是尝试了一下,它奏效了。谢谢!我的风扇开始变大了,由于过热,我确实停了一两次。希望此问题已解决。风扇现在以正常的CPU利用率进行开和关的循环,这非常好(在一直保持运转之前)。
Cymen 2012年

@Cymen为确保安全,请确保真空是防静电真空。我用一罐压缩空气清洁通风孔,您也可以选择这样做。
user311982 2015年

3

我有一台Dell Latitude e4200,以下各项对我有用,因为BIOS覆盖了i8kfan设置。我的计算机的初始温度为105F度,使用这些步骤(风扇设置= 2)约10分钟后,CPU /核心温度降至96F度。该过程已经被某人发布:

步骤1.下载并安装i8ktutils:

# sudo apt-get install i8kutils

步骤2.覆盖BIOS,以防止其中断自定义风扇设置。下载源代码并编译程序(SMM)以执行此操作:

# sudo apt-get build-dep i8kutils

然后:

# apt-get source i8kutils

步骤3.将源代码和cd解压缩到目录中:

# tar xvf i8kutils_1.33.tar.gz

然后:

# cd i8kutils-1.33/

步骤4.编译SMM

For 32-bit systems:

# make SMM

(Output: # gcc -g -O2 -Wall -I. -o smm smm.c.)

For 64-bit systems

# make SMM:

(Output: # gcc -g -O2 -Wall -I. -o smm -m32 smm.c)

步骤5.使用参数执行SMM:

# sudo ./smm 30a3

步骤6.设置风扇速度:

# i8kfan 2 2 (Listen as this will set fans to maximum speed)

# i8kfan 1 1 (This will set fans to slow speed)

现在,BIOS风扇控制不应覆盖风扇设置。即使重新启动系统,此设置也将保留。要出于某种原因将控制权交还给BIOS,请执行以下步骤:

# sudo ./smm 31a3.

还有一种使用lm_sensors检查温度的方法:

http://www.cyberciti.biz/faq/howto-linux-get-sensors-information/

1
在Ubuntu 14.04上对i8kutils-1.41的最新版本进行了尝试,并从smm.c:27:/usr/include/features.h中获得了/usr/include/stdio.h:27:0中包含的文件: 374:25:致命错误:SYS / cdefs.h:没有这样的文件或目录“不过这修正了问题askubuntu.com/questions/470796/...
K-DEN
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.