当前位置: 首页>>技术教程>>正文


如何让风扇控制工作?

, , ,

问题描述

我知道有一种叫做fancontrol的东西,可以让你控制系统通风的速度。因为我的笔记本电脑非常容易升温,所以我想让我的粉丝旋转得更快一些。我发现的所有教程和内容都是旧版本的Ubuntu,似乎不再适用了。

任何人都可以向我解释或给我一个很好的链接,我如何让它在Ubuntu上工作?不同的东西也有同样的效果。

最佳解决思路

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


# For Dell laptop only:
$ sudo apt-get install i8kutils 
$ i8kfan 1 2 # Set the left-fan at low speed(1); the right one at high speed(2).

次佳解决思路

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

什么可能不会起作用

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

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

    • 因此,尝试使用ACPI启动参数等将失败

  • 据我所知,戴尔Latitude笔记本电脑缺乏pwm可控风扇(* 2)

    • 因此,fancontrol /pwmconfig程序将无法正常工作

使用i8kutils

但是,有一个名为i8kutils的软件包,用于通过SMM BIOS控制Dell Inspiron笔记本电脑上的风扇。一些用户也报告了他们的戴尔Laitude笔记本电脑的成功(我是戴尔Latitude E7440上的其中之一) – 但是,通常需要一个技巧来摆脱干扰BIOS风扇控制。根据以前的评论你也会受到影响。

安装i8kutils

$ sudo apt-get install i8kutils

试试吧:

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

……听听它是否有效。

禁用BIOS风扇控制

如果它有效,但其他一些东西正在反击设定的速度(戴尔Latitude笔记本电脑上的许多用户报告),这是由于计划的SMM会话设置风扇速度。幸运的是,有一种方法可以使用disable BIOS fan control by writing to SMM registers

警告:请参阅smm.c顶部的警告。此方法将写入SMM寄存器。但是,我没有看到有关此问题的用户报告导致问题。此外,所有关于尝试此操作的报告都表明在禁用BIOS风扇控制方面取得了成功。

i8kutils包含程序源smm,但i8kutils包不包含已编译的二进制文件。我们要做的是下载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
    

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

$ sudo ./smm 30a3

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

注意:这是一个将继续重新启动和power-off的设置。可以使用$ sudo ./smm 31a3再次启用BIOS风扇控制。


* 1:我见过这方面的官方消息来源,现在找不到它。如果要验证硬件是否缺少,请按照此处的说明操作:https://wiki.ubuntu.com/DebuggingACPI

* 2:为了验证这一点,运行pwmconfig:sudo apt-get install fancontrolsudo pwm-config将判断是否存在pwm-capable风扇

第三种解决思路

包含lm-sensors可能正是您要找的。

fan,overheating,fancontrol,ubuntu

正如您所建议的那样,fancontrol

fan,overheating,fancontrol,ubuntu

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

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

当我运行pwmconfig时,我得到了fancontrol的一部分

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

Here是与生成的配置文件一起使用的一些脚本。我假设你可以在这里设置更高的值。

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

但正如我所说,我不能自己测试,因为我的硬件不支持它,我可以控制我的粉丝,但它是3级。我用它来保持我的粉丝缓慢和沉默。

第四种思路

好吧,这可能不是您正在寻找的答案,但是当通过在通风入口处放置真空吸尘器去除灰尘时,我的过热问题得以解决。如果您在低cpu-frequencies时遇到过热,这可能值得一试。请注意,可能会有小部件被吸入。如果您很幸运,这种方法可能会解决您的过热问题。

第五种思路

我有一个戴尔Latitude e4200,以下为我工作,因为BIOS覆盖了i8kfan设置。我的计算机的初始温度为105°F,使用这些步骤后约10分钟(风扇设置= 2)CPU /核心温度降至96°F。此程序已由某人发布:

步骤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来检查temp:

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2615.html,未经允许,请勿转载。