无法使用 pwmconfig 配置风扇速度

无法使用 pwmconfig 配置风扇速度

我有一台华硕 TP301UJ 笔记本电脑,具有双启动功能,我的风扇一直很响。我试图配置我的风扇速度在 Ubuntu 中(我在 Windows 10 中轻松做到了),但遇到了问题。

这是我所做的:

  1. 我安装了流明传感器传感器风扇控制传感器运行良好,并读取风扇速度和所有温度。

  2. Ransudo sensors-detect只说我需要添加核心温度/etc/modules核心温度已经在模块中所以我没有做任何事情。

  3. 重新启动。运行sudo pwmconfig并输出:

    发现以下设备:
    hwmon0 是 acpitz
    hwmon1 是 coretemp
    hwmon2 是 asus

    发现以下PWM控制:
    hwmon2/pwm1当前值:0

    hwmon2/pwm1 当前设置为自动速度控制。
    一般来说,自动模式比手动模式更受欢迎,因为它效率更高,反应更快。您确定要将此输出设置为手动控制吗?(n)

  4. 已进入“是”输出为:

    让风扇有时间达到全速......

    发现以下风扇传感器:
    hwmon2/fan1_input 当前速度:0...跳过!
    没有工作风扇传感器,所有读数均为 0。

    确保已连接 3 线风扇。
    您可能还需要增加风扇除数。
    有关更多信息,请参阅 doc/fan-divisors。

所以我的粉丝进来了“手动模式”并开始全速运行,但pwmconfig退出时,我的风扇仍然全速运转。将数字从/sys/class/hwmon/hwmon2/pwm1_enable1 改回 2,使它自动的再次。

这是我的问题(我认为):当我的粉丝“手动模式”sensors显示-1为其速度。未检测到!但在自动的模式,完全没有问题。这让我无法配置风扇pwmconfig

我已经尝试在 grub 文件中添加acpi_enforce_resources=lax到变量中GRUB_CMDLINE_LINUX_DEFAULT。结果是一样的。

我应该怎么办?

答案1

首先man fancontrol了解一下可以使用哪些变量/etc/fancontrol。构建配置时,您将需要以下内容:INTERVAL、FCTEMPS、FCFANS、MINTEMP、MAXTEMP、MINSTART、MINSTOP。

# Checks the temperature every 10 seconds.
INTERVAL=10
# Maps a fan to a temp sensor, each separated by a space 
FCTEMPS=fanpath=temppath fanpath2=temppath2
# Maps a fan to the fan speed sensor
FCFANS=fanpath=fanspeedpath fanpath2=fanspeedpath2
# The temperature below which the fan gets switched to minimum speed.
MINTEMP=fanpath=degreesC fanpath2=degreesC2
# The temperature over which the fan gets switched to maximum speed.
MAXTEMP=fanpath=degreesC fanpath2=degreesC2
# Sets the minimum speed at which the fan begins spinning.
MINSTART=fanpath=minspeed fanpath2=minspeed2
#The minimum speed at which the fan still spins.
MINSTOP=fanpath=minspeed fanpath2=minspeed2

实际样品:

INTERVAL=10
FCTEMPS=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm5=/sys/devices/platform/coretemp.0/hwmon/hwmon[[:print:]]*/temp3_input /sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm4=/sys/devices/platform/coretemp.0/hwmon/hwmon[[:print:]]*/temp3_input /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon[[:print:]]*/pwm1=/sys/devices/platform/coretemp.0/hwmon/hwmon[[:print:]]*/temp3_input
FCFANS=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm5=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/fan5_input /sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm4=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/fan4_input /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon[[:print:]]*/pwm1=
MINTEMP=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm5=55 /sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm4=50 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon[[:print:]]*/pwm1=55
MAXTEMP=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm5=60 /sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm4=60 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon[[:print:]]*/pwm1=60
MINSTART=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm5=70 /sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm4=70 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon[[:print:]]*/pwm1=70
MINSTOP=/sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm5=90 /sys/devices/platform/nct6775.656/hwmon/hwmon[[:print:]]*/pwm4=90 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon[[:print:]]*/pwm1=90

[[:print:]] 表示 hwmon 编号。您可以使用实际编号或 [[:print:]],有时编号在启动时会发生变化,而 [[:print:]] 可让其找到正确的 hwmon 编号。

问题将是 FCFANS,fan1_input 是否有有效数据,如果没有,fancontrol 是否会在没有该数据的情况下继续工作。

或者,您可以尝试编写自己的脚本来设置 hwmon2/pwm1 的值,其范围在 0 到 255 之间。

答案2

nct6775 可以在硬件中控制风扇。它允许将某个温度源设置为输入,然后根据温度分步控制风扇。因此,除了加载芯片的设置外,不需要任何脚本。上面的 fancontrol 工具的缺点是,当它卡住、出现错误或 bug 时,它可能无法运行。

在 /sys/devices/platform/nct6775.656/hwmon/hwmonX 目录中。

下面的 X 是风扇。一些设置可能已由 bios 设置。

pwmX_mode 设置风扇模式。0 为 PWM,1 为电压控制。您可以设置它。但读取结果始终为 1。

pwmX_temp_sel 是哪个温度传感器为该风扇供电。

echo 5 > pwmX_enable 将风扇设置为智能模式。这意味着硬件(nct6775 芯片)正在控制风扇。

pwmX_auto_point1_pwm 至 pwmX_auto_point5_pwm 设置风扇速度步骤。值从 0 到 255。我的风扇在 85 左右开始旋转。所以我有 85 90 100 140 255 作为步骤。

相应的温度在 pwmX_auto_point(1-5)_temp 中设置。值以摄氏度为单位。

相关内容