风扇速度控制
风扇控制可以为您的系统带来各种好处,例如更安静的工作系统,以及通过在低 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 — 适用于某些联想拯救者笔记本电脑的风扇速度配置和其他设置。
- 华硕笔记本电脑 — 为 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。如果需要,可以使用 thinkfan-uiAUR 获取 GUI。然后查看文件
# 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 | off |
2 | 低速 |
4 | 中速 |
7 | 最高速 |
auto | 默认 - 自动,风扇 RPM 由 BIOS 控制 |
full-speed / disengaged | 最大风扇速度;此处控制器不监控风扇速度 |
thinkfan 守护进程将自动执行此操作。
“7”与“disengaged”不同。“7”是最大调节速度(对应于“full-speed”)。disengaged 是最大非调节速度。有关更多详细信息,请参阅 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 Legion Linux 允许更改存储在嵌入式控制器中的风扇曲线。它由一个内核模块组成,该模块必须编译和加载。目前,没有软件包,但必须从源代码编译和安装。
然后可以通过 hwmon 接口设置风扇曲线。这可以使用提供的脚本或 Python GUI 完成。
华硕笔记本电脑
本主题将介绍华硕笔记本电脑上 Fancontrol (lm-sensors) 的驱动程序配置。
内核模块
在配置文件中,我们将使用 sysfs 文件的完整路径(例如 /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1
)。这是因为 hwmon1
可能会在重启后更改为任何其他数字。Fancontrol (lm-sensors) 是用 Bash 编写的,因此在配置文件中使用这些路径是完全可以接受的。您可以在 ASUS N550JV#风扇控制 中找到完整的 /etc/fancontrol
配置文件示例。
asus-nb-wmi
asus-nb-wmi
是一个内核模块,它包含在 Linux 内核中,并在华硕笔记本电脑上自动加载。它只允许控制单个风扇,如果有第二个风扇,您将无法对其进行任何控制。请注意,黑名单此模块将阻止键盘背光工作。
以下是控制它的命令。检查您是否可以控制风扇
# 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
是一个内核模块,它允许控制某些较旧的华硕笔记本电脑上的两个风扇。它不适用于最新的型号。
安装 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 中提供此功能。
在华硕 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 系列笔记本电脑上的风扇控制模式
在某些华硕 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] 也可以将这些值作为 root 写入 fan_boost_mode
文件,并获得所需的效果。
这已在华硕 TUF FX504GE 和华硕 TUF FX504GD 型号上进行了测试,发现可以正常工作。
您可以使用 tuf-fan-boost-notification-gitAUR 在每次风扇速度模式更改时获取通知。
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。
grmat 编写的 bash 脚本 amdgpu-fancontrol 通过使用描述的 sysfs hwmon 功能,提供完全自动的风扇控制。它还允许通过在脚本顶部提供抽象的配置字段,方便地调整 fancurve 的温度/PWM 周期分配和迟滞。
出于安全原因,该脚本在关机时会将风扇控制再次设置为自动。这可能会导致风扇加速旋转,可以通过在 function reset_on_fail
部分中设置 set_fanmode 1
来解决此问题,但这会牺牲安全性。
设置 fancurve 脚本
为了启动脚本,建议通过 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 中使用绝对文件路径不起作用,因为它的 helper 脚本 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 应该可以正常工作。