风扇速度控制
风扇控制可以为您的系统带来各种好处,例如更安静的工作系统以及通过在低 CPU 负载时完全停止风扇来节省电能。
概览
对于台式机和笔记本电脑,有多种可行的风扇控制解决方案。取决于您的需求
- Fancontrol (lm-sensors) — 用于配置风扇速度的脚本(用 Bash 编写)。最适合台式机和笔记本电脑,在这些设备上,可以通过 sysfs(5) 获取风扇控制。
- NoteBook Fan Control (NBFC) — 适用于笔记本电脑风扇控制的跨平台解决方案,用 C# 编写,在 Mono 运行时环境下工作。最适合最新的、Fancontrol 不支持的笔记本电脑。
- NBFC-Linux — NBFC 的轻量级实现,用 C 编写。它不依赖 Mono 框架。可以作为 nbfc-linuxAUR 或 nbfc-linux-gitAUR 安装。
- 戴尔笔记本电脑 — 适用于某些戴尔笔记本电脑的替代风扇控制守护程序。
- ThinkPad 笔记本电脑 — 适用于某些 ThinkPad 笔记本电脑的风扇配置。
- Lenovo Legion Linux — 适用于某些联想 Legion 笔记本电脑的风扇速度配置和其他设置。
- 华硕笔记本电脑 — 为 Fancontrol 或手动控制配置某些华硕笔记本电脑。
- fan2go-gitAUR — 一种独立于设备路径的 Fancontrol 替代方案。
- MControlCenter — 适用于 MSI 笔记本电脑的风扇控制应用程序。
- fw-ectool-gitAUR — 适用于 Framework 笔记本电脑的风扇配置。
- CoolerControlAUR — 一个带有 GUI 的风扇控制守护程序,适用于 sysfs 和 liquidctl 设备。
Fancontrol (lm-sensors)
fancontrol
是 lm_sensors 的一部分,可用于控制 CPU/机箱风扇的速度。
较新的主板可能尚未获得 Linux 内核的支持。查看 lm-sensors 设备(存档) 表,查看是否有适用于此类主板的实验性驱动程序。
lm-sensors
首先要做的是运行
# sensors-detect
这将检测所有存在的传感器,并将它们用于 fancontrol。之后,运行以下命令检查是否正确检测到传感器
$ sensors
coretemp-isa-0000 Adapter: ISA adapter Core 0: +29.0°C (high = +76.0°C, crit = +100.0°C) ... it8718-isa-0290 Adapter: ISA adapter Vcc: +1.14 V (min = +0.00 V, max = +4.08 V) VTT: +2.08 V (min = +0.00 V, max = +4.08 V) +3.3V: +3.33 V (min = +0.00 V, max = +4.08 V) NB Vcore: +0.03 V (min = +0.00 V, max = +4.08 V) VDRAM: +2.13 V (min = +0.00 V, max = +4.08 V) fan1: 690 RPM (min = 10 RPM) temp1: +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor temp2: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode
配置
传感器正确配置后,使用 pwmconfig(8) 测试和配置风扇速度控制。按照指南操作应创建 /etc/fancontrol
,这是一个自定义配置文件。在指南中,如果您在不键入任何内容的情况下按 Enter 键,则括号中的是默认答案。输入 y
表示是,n
表示否。
# pwmconfig
/sys/class/hwmon/
路径作为其配置文件时可能会遇到问题。hwmon 类设备符号链接指向绝对路径,用于将所有 hwmon 传感器分组到一个目录中以便于访问。有时,hwmon 设备的顺序会在重启后发生更改,导致 fancontrol 停止工作。有关如何解决此问题的更多信息,请参阅 #/etc/fancontrol 中的设备路径已更改。调整
某些用户可能希望在使用 root 权限运行 pwmconfig
后手动调整配置文件,通常是为了修复某些问题。有关手动调整 /etc/fancontrol
配置文件的信息,请参阅 fancontrol(8) 以了解变量定义。
用户可能会遇到 #Fancontrol (lm-sensors) 中所述的 hwmon 路径问题。有关更多信息,请参阅 #/etc/fancontrol 中的设备路径已更改。
hwmon0/device/temp1_input
变为 hwmon0/temp1_input
)。检查 fancontrol.service
单元状态 以找出哪个路径是问题制造者,并相应地更正您的配置文件。运行 Fancontrol
尝试运行 fancontrol
# fancontrol
正确配置的设置不会输出错误,并将接管系统风扇的控制。用户应在执行此命令后不久听到系统风扇开始运转。fancontrol 也可以通过启动/启用 fancontrol.service
运行。
对于非官方 GUI,安装 fancontrol-guiAUR 或 fancontrol-kcmAUR[损坏的链接:未找到软件包]。
Fancontrol 在挂起-唤醒循环后停止工作
不幸的是,fancontrol 在挂起后无法工作。根据 已提交的错误,您必须在挂起后重启 fancontrol。这可以通过 systemd 挂钩 自动实现。
NBFC
NBFC 是一种适用于笔记本电脑的跨平台风扇控制解决方案。它带有一个强大的配置系统,允许将其调整为许多不同的笔记本电脑型号,包括一些最新的型号。
安装
NBFC 可以作为 nbfcAUR 或 nbfc-gitAUR 安装。同时 启动/启用 nbfc.service
。
配置
NBFC 附带预制配置文件。您可以在 /opt/nbfc/Configs/
目录中找到它们。应用它们时,请使用不带文件扩展名的确切配置文件名(例如,some profile.xml
变为 "some profile"
)。
检查 NBFC 是否有任何推荐
$ nbfc config -r
如果至少有一个型号,请尝试应用此配置文件,看看如何处理风扇速度。例如
$ nbfc config -a "Asus Zenbook UX430UA"
File Descriptor does not support writing
错误,请删除 StagWare.Plugins.ECSysLinux.dll
[2] 并重启 nbfc.service
# mv /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll.old
如果上述解决方案没有帮助,请尝试将 ec_sys.write_support=1
附加到 内核参数。
如果没有推荐的型号,请转到 NBFC git 仓库 或 /opt/nbfc/Configs/
,并检查是否有来自同一制造商的任何类似型号。例如,在 华硕 Zenbook UX430UQ 上,配置 华硕 Zenbook UX430UA 效果不佳(风扇一直完全停止),但 华硕 Zenbook UX410UQ 效果非常好。
运行 nbfc
查看所有选项。有关配置的更多信息,请访问 上游 wiki。
戴尔笔记本电脑
i8kutils 是一个守护进程,用于根据某些戴尔 Inspiron 和 Latitude 笔记本电脑上的 CPU 温度配置风扇速度。它使用 i8k
驱动程序(dell_smm_hwmon
的别名)提供的 /proc/i8k
接口。结果会因笔记本电脑的具体型号而异。
如果 fancontrol 在您的系统上不起作用,请使用 ignore_dmi=1
内核模块参数 来加载 dell_smm_hwmon
。
安装
i8kutilsAUR 是控制风扇速度的主要软件包。此外,您可能需要安装以下软件包
- acpi — 必须安装才能使用 i8kmon。
- tcl — 必须安装才能将 i8kmon 作为后台服务运行(使用
--daemon
选项)。 - tk — 必须与 tcl 一起安装才能作为 X11 桌面小程序运行。
- dell-bios-fan-control-gitAUR — 如果您的 BIOS 覆盖了风扇控制,则推荐使用。
配置
风扇改变速度的温度点可以在配置文件 /etc/i8kutils/i8kmon.conf
中调整。仅支持三种风扇速度(高、低和关闭)。查找类似于以下内容的部分
set config(0) {{0 0} -1 55 -1 55} set config(1) {{1 1} 45 75 45 75} set config(2) {{2 2} 65 128 65 128}
此示例在 CPU 温度达到 55 °C 时以低速启动风扇,并在 75 °C 时切换到高速。一旦温度降至 65 °C,风扇将切换回低速,并在 45 °C 时完全关闭。
i8kmon
时,您注意到状态发生了变化(输出示例:# (57>=55), state=1, low=45, high=75
),但左右风扇报告状态 0,您可能需要考虑将配置文件中第一个状态的速度值从默认值 1000 更改为 2000 或更高。作为服务安装
i8kmon 可以通过启动/启用 i8kmon.service
自动启动。
BIOS 覆盖风扇控制
一些较新的笔记本电脑具有 BIOS 风扇控制功能,它会覆盖操作系统级别的风扇控制。要测试是否是这种情况,请在命令行中以 verbose 模式运行 i8kmon
,确保 CPU 处于空闲状态,然后查看风扇是否已关闭或相应地降低速度。
如果 BIOS 风扇控制已就位,您可以尝试使用 dell-bios-fan-control-gitAUR
启用 BIOS 风扇控制
# dell-bios-fan-control 1
禁用 BIOS 风扇控制
# dell-bios-fan-control 0
BIOS 风扇控制可以通过启动/启用 dell-bios-fan-control.service
自动禁用。
ThinkPad 笔记本电脑
一些风扇控制守护进程包括 simpfand-gitAUR 和 thinkfanAUR (推荐)。
安装
安装 thinkfanAUR 或 thinkfan-gitAUR。可选但推荐,安装 lm_sensors。如果需要 GUI,可以使用 thinkfan-uiAUR。然后查看以下文件
# pacman -Ql thinkfan
请注意,thinkfan 软件包安装了 /usr/lib/modprobe.d/thinkpad_acpi.conf
,其中包含以下内核模块参数
options thinkpad_acpi fan_control=1
experimental=1
内核模块参数。因此,检查风扇功能非常重要。因此,默认情况下启用风扇控制。
现在,加载模块
# modprobe thinkpad_acpi # cat /proc/acpi/ibm/fan
您应该看到风扇级别默认为“auto”,但您可以将级别命令回显到同一文件以手动控制风扇速度
# echo level 1 > /proc/acpi/ibm/fan
级别 | 效果 |
---|---|
0 | 关闭 |
2 | 低速 |
4 | 中速 |
7 | 最高速度 |
自动 | 默认 - 自动,风扇转速由 BIOS 控制 |
全速 / 脱离 | 最大风扇速度;此处控制器不监控风扇速度 |
thinkfan 守护进程将自动执行此操作。
“7”与“脱离”不同。“7”是最大调节速度(对应于“全速”)。脱离是最大非调节速度。有关更多详细信息,请参阅 ThinkWiki。
最后,启用 thinkfan.service
。
要配置温度阈值,您需要将示例配置文件 (/usr/share/doc/thinkfan/examples/thinkfan.yaml
) 复制到 /etc/thinkfan.conf
,并根据需要进行修改。此文件指定要读取的传感器以及用于控制风扇的接口。某些系统具有可用的 /proc/acpi/ibm/fan
和 /proc/acpi/ibm/thermal
;在其他系统上,您需要指定类似
hwmon: /sys/devices/virtual/thermal/thermal_zone0/temp
使用通用的 hwmon 传感器而不是特定于 thinkpad 的传感器。
配置示例可以在 Gentoo:Fan speed control/thinkfan#Configuration 中找到。
运行
您可以首先手动运行 thinkfan(以 root 身份)来测试您的配置
# thinkfan -n
并查看它对您正在运行的其他程序的负载级别的反应。
当您正确配置它后,启动/启用 thinkfan.service
。
Lenovo Legions 笔记本电脑
工具 Lenovo Legion Linux 允许更改存储在嵌入式控制器中的风扇曲线。它由一个必须编译和加载的内核模块组成。目前,没有软件包,但必须从源代码编译和安装。
然后可以通过 hwmon 接口设置风扇曲线。这可以使用提供的脚本或 Python GUI 完成。
ASUS 笔记本电脑
本主题将介绍 ASUS 笔记本电脑上 Fancontrol (lm-sensors) 的驱动程序配置。
内核模块
在配置文件中,我们将使用 sysfs 文件的完整路径(例如 /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1
)。这是因为 hwmon1
可能会在重启后更改为任何其他数字。Fancontrol (lm-sensors) 是用 Bash 编写的,因此在配置文件中使用这些路径是完全可以接受的。您可以在 ASUS N550JV#Fan control 找到完整的 /etc/fancontrol
配置文件示例。
asus-nb-wmi
asus-nb-wmi
是一个内核模块,它包含在 Linux 内核中,并在 ASUS 笔记本电脑上自动加载。它仅允许控制单个风扇,如果有第二个风扇,您将无法对其进行任何控制。请注意,列入黑名单此模块将阻止键盘背光工作。
以下是控制它的命令。检查您是否可以控制风扇
# echo 255 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1 # Full fan speed (Value: 255) # echo 0 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1 # Fan is stopped (Value: 0) # echo 2 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1_enable # Change fan mode to automatic # echo 1 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1_enable # Change fan mode to manual # echo 0 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1_enable # Change fan mode to full speed
如果您可以使用上述命令修改风扇速度,请继续 #使用 pwmconfig 生成配置文件。
asus_fan
asus_fan
是一个内核模块,它允许控制某些较旧的 ASUS 笔记本电脑上的两个风扇。它不适用于最新的型号。
安装 DKMS asus-fan-dkms-gitAUR 内核模块,提供 asus_fan
# modprobe asus_fan
检查您是否可以控制两个风扇
# echo 255 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm1 # Full CPU fan speed (Value: 255) # echo 0 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm1 # CPU fan is stopped (Value: 0) # echo 255 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm2 # Full GFX fan speed (Value: 255) # echo 0 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm2 # GFX fan is stopped (Value: 0) # echo 2 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm1_enable # Change CPU fan mode to automatic # echo 1 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm1_enable # Change CPU fan mode to manual # echo 2 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm2_enable # Change GFX fan mode to automatic # echo 1 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/pwm2_enable # Change GFX fan mode to manual # cat /sys/devices/platform/asus_fan/hwmon/hwmon[[:print:]]*/temp1_input # Display GFX temperature (will always be 0 when GFX is disabled/unused)
如果一切正常,您可以在启动时加载模块 以自动化此步骤。
使用 pwmconfig 生成配置文件
如果您在使用 pwmconfig
生成配置文件时收到错误 There are no working fan sensors, all readings are 0
,请打开第一个控制台并执行
# watch -n 1 "echo 2 > /sys/devices/platform/kernel_module/hwmon/hwmon[[:print:]]*/pwm1_enable"
如果您使用 asus_fan
内核模块并有第二个风扇,请在第二个控制台中执行
# watch -n 1 "echo 2 > /sys/devices/platform/kernel_module/hwmon/hwmon[[:print:]]*/pwm2_enable"
最后,在第三个控制台中执行
# pwmconfig
完成后并生成配置文件后,您应该停止第一个和第二个控制台。继续 #Fancontrol (lm-sensors)。生成配置文件后,您可能需要手动将 PWM 值替换为完整的 sysfs 路径,因为这些步骤中使用了它们,因为 hwmon 数字值可能会在重启后更改。
使用 EC 寄存器的替代方法
如果上述方法对您不起作用,另一种方法是直接写入嵌入式控制器 (EC) 中的某些寄存器。使用 EC-Probe 工具,您可以将风扇模式设置为三种风扇速度模式之一,前提是您的型号在 Windows 中提供了此功能。
在 ASUS FX504GD 型号中,将风扇速度设置为三种模式之一使用以下寄存器值
# ec_probe write 0x5e 0x80 # silent mode # ec_probe write 0x5e 0x40 # balance mode # ec_probe write 0x5e 0xC0 # performance mode
这里我们写入寄存器 0x5e
,它负责设置风扇速度模式。
如果这些值对您不起作用,请在 Windows 的监视器模式下运行 ec-probe 工具,并尝试识别在切换风扇速度模式时 EC 中哪个寄存器的值发生变化。
设置散热策略
除了手动控制风扇速度(使用 asus-nb-wmi
)之外,还可以设置散热策略以获得或多或少激进的风扇控制策略。可能的值为 0
(默认)、1
(超频加速)和 2
(静音)。
# echo number > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/throttle_thermal_policy
某些 TUF 系列笔记本电脑上的风扇控制模式
在某些 ASUS TUF 系列笔记本电脑上,可以使用 Fn+F5
更改性能和风扇控制模式。可以通过运行以下命令查看当前模式
$ cat /sys/devices/platform/asus-nb-wmi/fan_boost_mode
/sys/devices/platform/asus-nb-wmi/throttle_thermal_policy
。当您按下 Fn+F5
时,您可以查看值的变化。0 是“正常模式”,1 是“性能模式”,2 很可能是“静音模式”。[3] 也可以将这些值写入 fan_boost_mode
文件中(以 root 身份),并获得所需的效果。
这已在 ASUS TUF FX504GE 和 ASUS TUF FX504GD 型号上进行了测试,发现可以正常工作。
您可以使用 tuf-fan-boost-notification-gitAUR 在每次 FanSpeed 模式更改时获取通知。
AMDGPU sysfs 风扇控制
AMDGPU 内核驱动程序通过 sysfs 中的 hwmon 为显卡提供风扇控制。
手动风扇控制
要从自动风扇控制切换到手动风扇控制,请运行
# echo "1" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
将风扇速度设置为例如 50%(100% 为 255 PWM 周期,因此通过将其值乘以 2.55 来计算所需的风扇速度百分比)
# echo "128" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1
要重置为自动风扇控制,请运行
# echo "2" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
风扇曲线控制
较新的 AMD 显卡(例如 RDNA3 显卡)由于固件限制而不支持手动风扇控制 [4]。对于这些情况,AMD 提供了 fan_curve sysfs api 用于控制风扇曲线,有关其更多信息,请参阅 [5]。
amdgpu-fan
amdgpu-fanAUR 软件包是用于启用 AMDGPU 的显卡的自动化风扇控制器,用 Python 编写。它使用“速度矩阵”将风扇的频率与 GPU 的温度匹配,例如
speed_matrix: # -[temp(*C), speed(0-100%)] - [0, 0] - [40, 30] - [60, 50] - [80, 100]
通过启动/启用 amdgpu-fan.service
启动风扇控制服务。
amdfand-bin
然后 amdfand-binAUR 软件包是 amdgpu-fanAUR 的原生替代方案。通过启动/启用 amdfand.service
启动风扇控制服务。
对于此工具,还有可用的 GUI 客户端:amdguid-glow-binAUR (Xorg) 和 amdguid-wayland-binAUR (Wayland)。在启动客户端之前,您需要启用/启动 amdgui-helper.service
。
fancurve 脚本
不仅风扇控制通过 sysfs 中的 hwmon 提供,而且 GPU 温度读取也通过它提供
# cat /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input
这以 °C 为单位输出 GPU 温度 + 三个零,例如 33000
表示 33°C。
bash 脚本 amdgpu-fancontrol (由 grmat 开发) 通过使用所述的 sysfs hwmon 功能,提供全自动风扇控制。它还允许通过在脚本顶部提供抽象的配置字段,方便地调整风扇曲线的温度/PWM 周期分配和迟滞。
出于安全原因,脚本会在关机时将风扇控制再次设置为自动。这可能会导致风扇加速运转,可以通过在 function reset_on_fail
部分中设置 set_fanmode 1
来解决此问题,但这会牺牲安全性。
设置风扇曲线脚本
为了启动脚本,建议通过 systemd init 系统来执行。 这样,可以通过 journalctl/systemctl status 读取脚本的详细输出。 为此,GitHub 仓库中已包含 .service 单元文件。
可能还需要在休眠后通过 root-resume.service 重启脚本,以使其再次自动正常运行。
/etc/systemd/system/root-resume.service
[Unit] Description=Local system resume actions After=suspend.target [Service] Type=simple ExecStart=/usr/bin/systemctl restart amdgpu-fancontrol.service [Install] WantedBy=suspend.target
故障排除
增加传感器的风扇分频系数
如果 sensors 没有输出 CPU 风扇转速 (RPM),则可能需要更改风扇分频系数。
sensors 输出的第一行是主板用于读取温度和电压的芯片组。
在 /etc/sensors.d/
中创建一个文件
/etc/sensors.d/fan-speed-control.conf
chip "coretemp-isa-*" set fanX_div 4
将 coretemp-isa-
替换为芯片组的名称,并将 X
替换为要更改的 CPU 风扇编号。
保存文件,并以 root 身份运行
# sensors -s
这将重新加载配置文件。
再次运行 sensors
,并检查是否有 RPM 读数。 如果没有,请将分频系数增加到 8、16 或 32。您的结果可能会有所不同。
设备路径在 /etc/fancontrol 中已更改
位于 /sys/class/hwmon/
中的枚举 hwmon 符号链接的顺序可能会有所不同,因为内核模块不会在每次启动时以一致的顺序加载。 因此,这可能会导致 fancontrol 无法正常工作。 错误信息是“Configuration appears to be outdated, please run pwmconfig again”(配置似乎已过时,请再次运行 pwmconfig)。 上游错误。
解决方案
在 /etc/conf.d/lm_sensors
中,有两个数组列出了当您执行 sensors-detect
时检测到的所有模块。 这些模块由 fancontrol 加载。 如果该文件不存在,请以 root 身份运行 sensors-detect
,接受默认值。 打开(或创建)/etc/modules-load.d/modules.conf
。 从 /etc/conf.d/lm_sensors
中的 2 个变量中获取列出的所有模块,并将它们放入 /etc/modules-load.d/modules.conf
文件中,每行一个模块。 这样指定应该可以为模块的加载定义一个顺序,这应该使 hwmon 路径保持不变,并且不会在每次启动时更改顺序。 如果这不起作用,我强烈建议您寻找另一个程序来控制您的风扇。 如果您找不到任何其他程序,那么您可以尝试使用下面的替代解决方案。
替代解决方案:绝对路径
默认情况下,在 fancontrol 中使用绝对文件路径不起作用,因为它的辅助脚本 pwmconfig
被编程为仅使用 hwmon 路径来获取文件。 它的工作方式是检测其配置文件 /etc/fancontrol
中提供的 hwmon 路径是否已更改,并使用变量 DEVNAME
和 DEVPATH
来确定这种更改。 如果您的 hwmon 路径持续更改,这将阻止 fancontrol 运行,无论您做什么。 但是,可以规避这个问题。 打开 /usr/bin/fancontrol
,并注释掉脚本的这一部分
if ! ValidateDevices "$DEVPATH" "$DEVNAME" then echo "Configuration appears to be outdated, please run pwmconfig again" >&2 exit 1 fi
- 这样做可能会使 fancontrol 写入您在配置文件中给它的文件,无论该文件是什么。 如果您提供错误的路径,这可能会损坏文件。 请确保您为文件使用了正确的路径。
- 另一个需要注意的是,在进行此解决方法时,使用 pwmconfig 再次创建脚本将覆盖您已配置的所有绝对路径。 因此,如果需要,最好手动将旧路径更改为新路径,而不是使用 pwmconfig。
注释掉此部分应有效地忽略 hwmon 验证检查。 您也可以忽略配置文件中的变量 DEVNAME
和 DEVPATH
。 之后,将其他变量中的所有 hwmon 路径替换为其绝对路径。 为了更方便,请使用 root 权限重新运行 pwmconfig
以刷新 hwmon 设备。 配置文件中的 hwmon 路径现在应该指向正确的绝对路径。 对于每个 hwmon 路径,运行以下命令(其中 N
是 hwmon 路径的枚举编号)
$ readlink -f /sys/class/hwmon/hwmonN/device
这将为您提供设备的绝对路径。
例如,/etc/fancontrol
文件将 FCTEMPS
列为如下所示
FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input
执行 readlink -f /sys/class/hwmon/hwmon3/device
可以输出例如 /sys/devices/platform/coretemp.0/
。 cd
进入此目录。 如果您看到一个 /hwmon/hwmonN/
目录,您必须在您的 fancontrol 配置文件中执行此操作以替换 hwmonN
路径。 从之前的示例
# BEFORE FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input # AFTER FCTEMPS=hwmon2/pwm1=/sys/devices/platform/coretemp.0/hwmon/[[:print:]]*/temp1_input
本质上,您必须将 hwmon 路径替换为绝对路径,并连接 /hwmon/[[:print:]]*/
,以便 bash 可以捕获随机枚举的 hwmon 名称。
如果您没有看到 /hwmon/hwmonN/
目录,那么您不必担心这一点。 这意味着温度文件位于设备目录的根目录中。 只需将 hwmonN/
替换为绝对文件路径。 例如
# BEFORE FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input # AFTER FCTEMPS=hwmon2/pwm1=/sys/devices/platform/coretemp.0/temp1_input
替换所有路径后,fancontrol 应该可以正常工作。