如何控制风扇转速?


177

如何控制计算机的风扇速度?

在Windows上,有一个名为SpeedFan的精彩程序。


1
我在这里放置
Pavel Niedoba

1
在linux上,fancontrol使用进行配置pwmconfig。使用watch sensors在CPU和GPU负载,观察传感器。在空闲和满载时使用这些值分别通过MINTEMP和设置和。随着负载的增加,这将使您的风扇实时增加。这是最活跃的冷却,为进一步调整提供了基准。运行一次,然后直接编辑 。每次调整后运行。MAXTEMPINTERVAL=1pwmconfig/etc/fancontrolsudo service fancontrol restart
多米尼克·塞里萨诺

Answers:


149

开始之前的注意事项:

此功能取决于您的硬件和软件。如果您的硬件不支持风扇速度控制,或者不将其显示给操作系统,则很可能无法使用此解决方案。如果可以,但是该软件(即内核)不知道如何控制它,那么您就没有运气了。


  1. 安装流明传感器风扇控制软件包。
  2. 配置lm传感器

    1. 在终端类型中sudo sensors-detect,对所有“是/否”问题回答“是”。
      (可能会损坏您的系统或导致系统崩溃。对于许多系统而言,这是安全的。无法保证此过程不会永久损坏您的系统,我只是认为发生这种严重故障的可能性确实非常低在处理系统配置之前,保存所有工作以防最终崩溃/冻结/重新启动始终是个好主意。如果不确定,请阅读注释并尝试搜索网络并获得一些概述,然后再进行所有操作,也许选择是(YES-es仍然足够)
    2. 在传感器检测结束时,将显示需要加载的模块列表。键入“ yes”以使sensor-detect将这些模块插入/ etc / modules中,或者自己编辑/ etc / modules。
    3. 运行sudo service module-init-tools restart。这将读取您/etc/modules在步骤3中所做的更改,并将新模块插入内核。
      • 注意:如果您运行的是Ubuntu 13.04或更高版本,则此第3步命令应替换为sudo service kmod start
  3. 配置风扇控制

    1. 在终端类型中sudo pwmconfig。该脚本将停止每个风扇5秒钟,以找出可以由哪个PWM手柄控制的风扇。在脚本循环遍历所有风扇之后,您可以配置哪个风扇对应哪个温度。
    2. 您将必须指定要使用的传感器。这有点棘手。如果只有一个风扇,请确保对内核使用温度传感器以使风扇控制速度基于。
    3. 运行提示,并将更改保存到默认位置。
    4. 进行调整以微调/etc/fancontrol并使用sudo service fancontrol restart您的更改。(就我而言,我将间隔设置为2秒。)
  4. 设置风扇控制服务

    1. 运行sudo service fancontrol start。这还将使fancontrol服务在系统启动时自动运行。

/etc/fancontrolCPU而言,我使用了:

hwmon0 / device / pwm2的设置:(
取决于hwmon0 / device / temp2_input)(控制hwmon0 / device / fan2_input)

INTERVAL=2
MINTEMP=40  
MAXTEMP=60  
MINSTART=150  
MINSTOP=0  
MINPWM=0  
MAXPWM=255 

在另一个系统上是:

INTERVAL=10
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6779
FCTEMPS=hwmon2/pwm2=hwmon1/temp2_input
FCFANS=hwmon2/pwm2=hwmon2/fan2_input
MINTEMP=hwmon2/pwm2=49
MAXTEMP=hwmon2/pwm2=83
MINSTART=hwmon2/pwm2=150
MINSTOP=hwmon2/pwm2=15
MINPWM=hwmon2/pwm2=14
MAXPWM=hwmon2/pwm2=255

是有关设置及其实际用途的一些有用信息


111
我试图按照您的指导,但被卡在第三步中,出现此错误:/ usr / sbin目录/ pwmconfig:没有PWM功能的传感器模块安装
塔马利

6
在运行sudo sensor-detect之前,pwmconfig遇到了同样的问题
Gearoid Murphy

5
如果sudo sensor-detect没有附带任何传感器怎么办?->对不起,没有检测到传感器。您的系统没有传感器,或者不支持它们,或者它们连接到不支持的I2C或SMBus适配器。如果您发现主板上有哪些芯片,请检查lm-sensors.org/wiki/Devices以获取驱动程序状态。
H3R3T1K

5
如果遇到问题,请确保检查dmesg中是否有错误消息。就我而言,最近的内核更改使我无法加载必要的驱动程序,因此我不得不添加acpi_enforce_resources=lax到内核​​选项中以恢复旧功能。另请参阅:goo.gl/tUcr36
2014年

19
我已经尝试过了,除了sudo pwmconfig我无法获得更多,因为我得到:“没有安装支持pwm的传感器模块”。这是在sensors-detect命令确实找到“英特尔数字热传感器”之后。我也尝试过该内核参数。谁能提出解决方案?
Sman789

44

如果您拥有ThinkPad,则有一个名为的软件thinkfan可以做到这一点。顾名思义,它是专门为ThinkPads(thinkpad_acpi)设计的。

thinkfan软件在标准ubuntu软件存储库中可用,但确实需要一些步骤来进行配置。

这是一个简单的分步指南:

http://staff.science.uva.nl/~kholshei/thinkfan_guide/

(基本上是该德语指南的翻译版本:http : //thinkwiki.de/Thinkfan


邮政相关信息:

步骤1.安装thinkfan软件和传感器:

sudo apt-get install thinkfan lm-sensors

步骤2,通过编辑thinkpad.conf文件,确保守护程序控制风扇:

sudo nano /etc/modprobe.d/thinkfan.conf

通过添加以下行:

options thinkpad_acpi fan_control=1

步骤3.通过编辑文件使守护程序在启动时自动加载:

sudo nano /etc/default/thinkfan

确保将START键设置为yes,即应该有一行显示:

START=yes

步骤4.检测笔记本电脑的传感器:

sudo sensors-detect

然后只要按Enter提示您选择默认答案即可。

步骤5.加载新模块。从ubuntu 13.10可以通过以下方式完成:

sudo service kmod start

而对于13.04等以前的版本,您需要执行以下操作:

sudo service module-init-tools start

步骤6.找出正在使用的传感器:

sensors

(表示0度的那些没有使用,我也不知道为什么也“被检测到”了)。记住正在使用哪些。

步骤7.找出这些传感器的完整路径:

find /sys/devices -type f -name "temp*_input"

输出应该是/ sys / devices / ...之类的路径列表。

步骤8.将传感器的路径复制并粘贴到配置文件/etc/thinkpad.conf中。为此,首先打开文件:

sudo nano /etc/thinkfan.conf

应该已经有一行

#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3) 

(#符号表示该行已被注释掉)。添加以传感器开头的行(不带#符号),然后将第一个传感器复制粘贴。如果您有多个传感器,请重复此步骤。例如,在我的机器上,步骤7的输出为

/sys/devices/virtual/hwmon/hwmon0/temp1_input
/sys/devices/platform/thinkpad_hwmon/temp3_input
/sys/devices/platform/thinkpad_hwmon/temp4_input
/sys/devices/platform/thinkpad_hwmon/temp5_input
/sys/devices/platform/thinkpad_hwmon/temp6_input
/sys/devices/platform/thinkpad_hwmon/temp7_input
/sys/devices/platform/thinkpad_hwmon/temp1_input
/sys/devices/platform/thinkpad_hwmon/temp8_input
/sys/devices/platform/thinkpad_hwmon/temp2_input
/sys/devices/platform/coretemp.0/temp4_input
/sys/devices/platform/coretemp.0/temp2_input 

我的机器中正在使用的是前两行,因此我添加了三行:

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input 

步骤9.最后,我们可以在配置文件中设置风扇速度级别。如果/etc/thinkpad.conf文件尚未打开,请打开它。

sudo nano /etc/thinkfan.conf

我在ThinkPad x201上使用的风扇级别为:

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767) 

最后一行确保风扇全速运转(127 =“脱离”,即不受管制)。您可以根据自己的需要/愿望摆弄这些级别,但请务必小心!

步骤10.重新启动。现在一切正常。为了检查thinkpad是否正确运行,请使用

sudo thinkfan -n

这会以详细模式启动thinkfan。您可能要先停止thinkfan守护程序:

sudo /etc/init.d/thinkfan stop

如果要再次启动thinkfan守护程序,请键入:

sudo /etc/init.d/thinkfan start

刚刚完成,我的/etc/thinkfan.conf配置文件是:

# IMPORTANT:
#
# To keep your HD from overheating, you have to specify a correction value for
# the sensor that has the HD's temperature. You need to do this because
# thinkfan uses only the highest temperature it can find in the system, and
# that'll most likely never be your HD, as most HDs are already out of spec
# when they reach 55 °C.
# Correction values are applied from left to right in the same order as the
# temperatures are read from the file.
#
# For example:
# sensor /proc/acpi/ibm/thermal (0, 0, 10)
# will add a fixed value of 10 °C the 3rd value read from that file. Check out
# http://www.thinkwiki.org/wiki/Thermal_Sensors to find out how much you may
# want to add to certain temperatures.

# Syntax:
# (LEVEL, LOW, HIGH)
# LEVEL is the fan level to use (0-7 with thinkpad_acpi)
# LOW is the temperature at which to step down to the previous level
# HIGH is the temperature at which to step up to the next level
# All numbers are integers.
#

# I use this on my T61p:
#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)

#(0, 0, 55)
#(1, 48, 60)
#(2, 50, 61)
#(3, 52, 63)
#(4, 56, 65)
#(5, 59, 66)
#(7, 63, 32767)


# My settings for my ThinkPad X201: (kris)

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767)

2
一条评论:您希望表中的温度值有更大的重叠。特别是在45-55范围内。否则,风扇速度会持续波动。真令人不安。(恒定的风扇噪声不会像波动的噪声那样干扰。)
HongboZhu 2015年

1
我们(Linux社区)真的很喜欢UX。:(设置风扇速度不应该是10个步骤
Alexander

2
@Alexander如果对此深有感触,可以自由编写和维护一个小程序来自动化此过程。
克里斯(Kris)

1
@Kris我将更倾向于修改原始程序,使其没有这种荒谬的配置过程。las,我没有一个ThinkPad,我只是路过这篇文章,寻找那里可用的风扇控制选项。
亚历山大

/etc/modprobe.d/thinkfan.conf 在我的Ubuntu 14.04中不存在。现在怎么办?
Youda008 '17

14

对于多台Dell计算机,您可以安装i8kutils软件包:

sudo apt install i8kutils

如果您有未经测试的Dell(例如我的Dell XPS 14z),则可能必须强制加载内核模块:

sudo modprobe i8k force=1

2
我有Dell XPS 14 L421X。<code> sensors </ code>没有显示粉丝。安装i8kutils软件包后,我得到传感器coretemp-isa-0000适配器:ISA适配器物理ID 0:+ 54.0°C(高= + 87.0°C,暴击= + 105.0°C)核心0:+ 50.0°C(高= + 87.0°C,临界= + 105.0°C)核心1:+ 52.0°C(高= + 87.0°C,临界= + 105.0°C)i8k-virtual-0适配器:虚拟设备右风扇:0 RPM CPU: + 55.0°C
菲斯科堡

这对hp有效吗?
不朽的玩家,

1
@ immortal-player,我认为不会。内核模块是专门为Dell计算机设计的。
morhook

也许补充一点,对于苹果有macfanctldmbpfan和的ThinkPad,还有thinkfan
rubo77

7

安装和配置流明传感器风扇控制软件包:

sudo apt-get install lm-sensors fancontrol

有关配置它们的文档,请参见其手册页。

该功能应该由符合ACPI的BIOS提供,但似乎大多数主板供应商都不会为遵循该标准而烦恼。


12
您能否提供有关如何安装和使用它们的更详细的说明?
Stefano Palazzo

您可以在手册页或www.lm-sensors.org上找到它。
psusi 2011年

40
我知道,我只是认为这个答案可能会更好:)
Stefano Palazzo

@psusi提供的链接不起作用,新的链接在这里:github.com/groeck/lm-sensors
Svetlana Belkin

1
我认为您的用户名拼写错误。
markroxor

2

这是建议使用thinkfan答案的更新版本,可与Ubuntu 19.04一起使用。

设定

以下说明适用于具有/proc/acpi/ibm/fan/proc/acpi/ibm/thermal“旧版”设备的任何ThinkPad 。这避免了必须安装lm-sensors软件包。

但是,您仍然可以安装lm-sensors看到多个温度传感器,并在你的球迷得到更多的细粒度控制(即,在256个PWM步骤,而不是固定的步骤,“0-7和127”与传统设备。此外,由于thinkfan现在可以与lm-sensors传感器一起使用,不再适用于IBM / Lenovo ThinkPad计算机。man thinkfan有关使用这些“扩展”传感器设备的信息请参阅。此外,德语ThinkWiki中还包含最新信息。

  1. 安装所需的软件包:

    sudo apt-get install thinkfan
    
  2. 将以下行添加到/etc/modprobe.d/thinkfan.conf中:

    options thinkpad_acpi fan_control=1
    
  3. thinkfan服务配置为在系统启动时自动启动:

    1. 添加一行START=yes/etc/default/thinkfan

    2. 执行以下命令(source):

      sudo systemctl enable thinkfan.service
      
  4. /etc/thinkfan.conf用正确的指针适应所需的设备和风扇级别。那里的评论提供了文档。在任何装有传统风扇和散热设备的Thinkpad上,以下内容应为您提供一个很好的起点(对于硬盘也应是安全的,有关更多信息,请参阅文件中的注释)。请注意,这使用了新关键字-不建议使用上面其他答案中的关键字。

    tp_fan /proc/acpi/ibm/fan
    tp_thermal /proc/acpi/ibm/thermal
    
    (0, 0, 47)
    (1, 43, 52)
    (2, 48, 55)
    (3, 51, 58)
    (4, 54, 63)
    (5, 59, 70)
    (6, 66, 79)
    (7, 74, 92)
    (127, 85, 32767) 
    

测试

要测试设置(重启后),可以执行以下操作:

  • 在一个终端窗口中,thinkfan以非守护程序模式运行,因此您可以查看其消息:

    sudo service thinkfan stop && sudo thinkfan -n
    
  • 在另一个终端窗口中,注意当前的温度值,如果有不同,则向您的温度探测器设备提供电源:

    while true; do sleep 1; cat /proc/acpi/ibm/thermal; done
    
  • 在另一个终端窗口中,给CPU加热(如果热量管理中的功能无法正常工作,请用Ctrl+ 中断C):

    sudo apt install stress-ng
    stress-ng --cpu-1
    

1
太棒了 这为带有Pop_OS 19.04的T490解决了该问题。风扇仍然启动,但并非一直持续。
Nitai

1

尝试查看PC的UEFI设置(或BIOS设置)。有可能是风扇控制的设置,你可以把你的粉丝为Silent ModePerformance ModeFull SpeedCustomize,等。

如何访问UEFI设置:重新启动PC,输入它们的密钥可能会出现在其中一个角落(例如Press F2 to enter UEFI setup

华擎UEFI设置用于风扇控制


这是AskUbuntu而不是AskUEFI :)
Maarten
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.