我从朋友那里得到了一台旧电脑,它配备了 MSI Nvidia GTX 970。显卡的风扇不再正常工作,摇晃不已,导致冷却行为不一致。我拆下了旧风扇,用 2 个 Arctic P12 PWM PST 以类似的扎带方式替换它们,如下图所示视频。现在两个风扇都正常工作,但我不知道如何正确调节它们的速度。
有两种可能性(两个风扇都通过 PST 连接):
- 将打开的风扇接头连接至主板上的 SYS_FAN / CHA_FAN 接头
- 将打开的风扇接头连接至 GPU 上的接头
GTX 使用 6 针接头,其中 PIN 1、3、4 将 PWM、接地、+V 连接到风扇,PIN 2、6 是风扇的转速信号。因此,我必须将风扇 PST 接头连接到引脚 1、3、4 和 2 或 6。电缆的布局使我无法使用引脚 2,因此我被迫使用引脚 6,这似乎有问题,因为nvidia-smi
报告的风扇速度为 0%,尽管风扇正在旋转。虽然我更喜欢这个选项,因为 GPU 将完成所有的 PWM 处理,但我无法查明问题并修复不正确的风扇速度。因此,我必须坚持使用选项 1,
使用这个选项,我偶然发现fancontrol
它对我的用例来说似乎很有希望,但是截至目前,当设置应该监控的传感器时,我找不到 GPU 温度传感器。
我该怎么做才能让风扇根据 GPU 温度旋转?这意味着,我要么通过 GPU 接头监控 GPU 温度,fancontrol
要么修复使用 GPU 接头时不正确的 RPM 测量值。
主板:华硕 Z97-A
pwmconfig
输出使用 nvidia 控制面板(注意没有任何温度匹配)
sensors
输出:
nct6791-isa-0290
Adapter: ISA adapter
Vcore: 848.00 mV (min = +0.00 V, max = +1.74 V)
in1: 1.02 V (min = +0.00 V, max = +0.00 V) ALARM
AVCC: 3.33 V (min = +2.98 V, max = +3.63 V)
+3.3V: 3.33 V (min = +2.98 V, max = +3.63 V)
in4: 1000.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in5: 1.98 V (min = +0.00 V, max = +0.00 V) ALARM
in6: 0.00 V (min = +0.00 V, max = +0.00 V)
3VSB: 3.39 V (min = +2.98 V, max = +3.63 V)
Vbat: 3.25 V (min = +2.70 V, max = +3.63 V)
in9: 1.02 V (min = +0.00 V, max = +0.00 V) ALARM
in10: 0.00 V (min = +0.00 V, max = +0.00 V)
in11: 920.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in12: 0.00 V (min = +0.00 V, max = +0.00 V)
in13: 88.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in14: 0.00 V (min = +0.00 V, max = +0.00 V)
fan1: 0 RPM (min = 0 RPM)
fan2: 418 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
fan6: 0 RPM (min = 0 RPM)
SYSTIN: +27.0°C (high = +0.0°C, hyst = +0.0°C) ALARM sensor = thermistor
CPUTIN: +28.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor
AUXTIN0: +127.0°C sensor = thermistor
AUXTIN1: -128.0°C sensor = thermistor
AUXTIN2: +30.0°C sensor = thermistor
AUXTIN3: +127.0°C sensor = thermistor
PECI Agent 0: +27.5°C
PCH_CHIP_CPU_MAX_TEMP: +0.0°C
PCH_CHIP_TEMP: +0.0°C
PCH_CPU_TEMP: +0.0°C
intrusion0: ALARM
intrusion1: ALARM
beep_enable: disabled
acpitz-acpi-0
Adapter: ACPI interface
temp1: +27.8°C (crit = +105.0°C)
temp2: +29.8°C (crit = +105.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +35.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +32.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +32.0°C (high = +80.0°C, crit = +100.0°C)
Core 2: +30.0°C (high = +80.0°C, crit = +100.0°C)
Core 3: +33.0°C (high = +80.0°C, crit = +100.0°C)
答案1
我通过编写一个在启动时运行的小型 Python 脚本解决了这个问题,该脚本grep -P \d{1,3}(?=C)
从 中获取温度nvidia-smi
。该温度在内部用于计算 PWM 数字 (0, 255),然后将其写入/etc/fancontrol
最初提供的文件中pwmconfig
:
...(leave INTERVAL, FCTEMPS, FCFANS untouched as we will do this programmatically)
MINTEMP=0
MAXTEMP=1
MINSTART=hwmon/pwm/={PWM}
MINSTOP=hwmon/pwm/={PWM}
MINPWM=hwmon/pwm/={PWM}
MAXPWM=hwmon/pwm/={PWM}+1
其次是sudo service fancontrol restart
。