pwmconfig 找不到风扇,可在 uefi Bios 中修改

pwmconfig 找不到风扇,可在 uefi Bios 中修改

我想更改电脑上的风扇速度。在华硕 BIOS 设置中,可以使用 PWM 和 DC(其中三个与 4 针连接)实现这一点,但运行的操作系统似乎在执行相同操作时遇到问题。

我想手动更改的两个在主板上的名称为 CHA_1FAN 和 CHA_2FAN。

> cat /etc/sensors3.conf | grep -i fan
    # Fans
        label fan1 "PSU Fan"
        label fan2 "CPU Fan"
        label fan3 "System FAN2"
        label fan4 "System FAN3"
        label fan5 "System FAN4"
    # Fans
        label fan1 "CPU Fan"
        label fan2 "System FAN2"
        label fan3 "System FAN3"
        label fan4 "System FAN4"
        label fan7 "PSU Fan"

   > hwinfo | grep -i fan
            acpi-fan: /devices/platform/PNP0C0B:03
            acpi-fan: /devices/platform/PNP0C0B:01
            acpi-fan: /devices/platform/PNP0C0B:04
            acpi-fan: /devices/platform/PNP0C0B:02
            acpi-fan: /devices/platform/PNP0C0B:00
            acpi-fan: module = fan
        type = "", modalias = "acpi:PNP0C0B:", driver = "acpi-fan"
        type = "", modalias = "acpi:PNP0C0B:", driver = "acpi-fan"
        type = "", modalias = "acpi:PNP0C0B:", driver = "acpi-fan"
        type = "", modalias = "acpi:PNP0C0B:", driver = "acpi-fan"
        type = "", modalias = "acpi:PNP0C0B:", driver = "acpi-fan"
      E: DRIVER=acpi-fan
      E: DRIVER=acpi-fan
      E: DRIVER=acpi-fan
      E: DRIVER=acpi-fan
      E: DRIVER=acpi-fan
      <6>[  0.062442] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
      fan 20480 0 - Live 0x0000000000000000
        Driver Status: thermal,fan are active
        Driver Activation Cmd: "modprobe thermal; modprobe fan"
> sudo pwmconfig
[sudo] password for root:
# pwmconfig revision $Revision$ ($Date$)
[...]
/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
heimchen@DESKTOP-G0NG8DL / [1]>

系统是OpenSuse Leap 15.5,并且似乎没有安装lm-sensor。我尝试从源代码下载它并编译它,这有效,但我的磁盘上仍然没有任何带有此名称的内容。

答案1

流明传感器不是一个单一的工具,而是一个工具包。例如,pwmconfig命令lm-传感器的一部分,所以你的假设“lm-传感器似乎没有安装”是不正确的:因为pwmconfig存在于你的系统上,那么必须以一种或另一种方式安装 lm-传感器。

acpi-fan输出中列出的内容hwinfo不是很有用:它基本上允许您向系统固件提出关于您认为需要多少冷却的温和建议。如果固件认为系统需要比您建议的更多的冷却,则完全可以忽略您的建议。

对于pwmconfig基于 的风扇控制,您首先需要识别并加载传感器芯片驱动适合您的系统;通常这样的芯片还包含用于任何软件控制风扇的速度控制硬件。最简单、最安全的方法可能是以sensors-detectroot 身份运行。它将询问一些关于运行哪种检测方法的问题;在常规桌面系统上,您可以接受默认值。

如果sensors-detect发现任何传感器和/或 PWM 设备,它将创建一个文件,在启动时自动加载它们的驱动程序。

在未经修改的上游源中,该文件似乎是根据 Fedora/RedHat 约定创建的;其他发行版可能包含特定于发行版的补丁来修改此部分以匹配发行版自己的配置文件约定。

因此,在您更熟悉 lm 传感器和内核模块之前,请sensors-detect首先尝试发行版自己的版本。如果您尝试未修改的上游版本中的较新版本(甚至是 Git 存储库中的最新开发版本),请注意,其配置模块自动加载的方式可能不会按照您的发行版期望的方式完成。您可能必须自己配置模块自动加载。

如果sensors-detect成功,该sensors命令现在应该能够向您显示以前无法显示的一组电压、温度和风扇速度值。这对您来说是一个关键的先决条件:如果sensors无法监控您的风扇,那么pwmconfig肯定无法对其进行调整。


华硕特有的坏消息......有点

从历史上看,大多数台式机主板上运行的操作系统内核过去都可以自由访问传感器芯片的 I/O 地址。目前华硕似乎背离了这一惯例:现代华硕主板越来越多地将传感器芯片寄存器标记为“由固件控制,请勿触摸”在 ACPI 固件数据表中……而 Linux 默认情况下将尊重这些标记。 (覆盖它们是可能的,但风险由您自己承担。)

相反,华硕似乎提供了一个基于固件的(ACPI/WMI)接口,允许固件本身和正在运行的操作系统协调访问传感器芯片,如果实施得当,这是一个好主意。不幸的是,华硕似乎已经尝试了该接口的几种变体,而 Linux 硬件监控开发人员还没有完整的列表来说明每种华硕主板型号应使用哪种访问方法。此外,其中一些访问方法的驱动程序代码仍然被认为有些实验性。

由于信息的收集基本上是人们告诉开发人员他们必须做什么才能使硬件监控和风扇控制适用于他们的主板,情况正在慢慢改善......但在最坏的情况下,您可能需要更新的内核版本或甚至是一个(简单的)自定义内核补丁,告诉内核使用特定的华硕特定监控芯片接口与您的主板型号。


华硕 Z97 系列主板的详细信息

根据此消息位于 lm-sensors 开发者邮件列表中华硕Z97系列上的HW监控/PWM风扇控制芯片似乎是Nuvoton NCT6791D,内核模块支持该芯片nct6775

在撰写本文时,该主板尚未在最新内核中列出华硕特定 ACPI 访问方法列表对于硬件监控芯片,因此您可能只需要加载模块即可

sudo modprobe nct6775

您应该在sensors输出中看到一个新组,该组应以如下行开头:

nct6791-isa-0290

如果它有效,您需要将该模块配置为在启动时自动加载,以使驱动程序持续可用:

echo "nct6775" | sudo tee /etc/modules-load.d/hwmon.conf

如果您在输出中没有看到该nct6791-isa-0290sensors,则您的系统可能需要使用较新的访问方法,但内核尚不知道。在这种情况下,您可以通过添加内核引导参数来允许旧式访问acpi_enforce_resources=lax风险由您自行承担。如果您使用它,内核将输出一条消息dmesg来提醒您,如果可能的话,使用较新的方法将是一个更好的主意。

为了进行测试,您可能希望使用 GRUB 菜单将此引导参数添加到linux当前引导选项的 GRUB 配置行中,但如果它适合您并且没有有害的副作用,您可以将其添加到GRUB_CMDLINE_LINUX中的变量中/etc/default/grub,并更新您的 GRUB 配置以使其持久化。

添加内核启动选项启动后,尝试再次加载模块,看看sensors现在是否显示来自监控芯片的信息。如果是这样,您可以使模块加载持久化,如上所述。

从上面链接的邮件列表消息中,您还可以获得一个配置块,/etc/sensors3.conf其中包括(希望)监控芯片电压监控通道的正确缩放值。修改配置文件后,运行sudo sensors --set以使新的缩放值生效。

相关内容