一、核心结论:微星 B365M-PRO 主板的风扇控制芯片
微星 B365M-PRO 全系列(含 PRO-VH、PRO-VDH 等子型号),统一使用 NUVOTON(新唐)NCT6797D Super IO 芯片 作为硬件监控与风扇控制核心,少数批次会采用同系列兼容的 NCT6795D,二者驱动完全通用,均由 Linux 内核的nct6775模块提供原生支持。
该芯片负责:
- 主板所有风扇接口(CPU_FAN、SYS_FAN 系统风扇)的转速检测与 PWM 调速控制;
- CPU / 主板温度、电压等硬件参数的监控;
- 同时支持 4 针 PWM 风扇调速、3 针 DC 模式调速。
二、Ubuntu 20.04 系统风扇调速完整步骤
前置准备:BIOS 设置(必做,否则 Linux 无法接管调速)
- 开机按
Del键进入微星 BIOS,切换到Advanced(高级)模式(按 F7); - 找到
Hardware Monitor(硬件监控)/PC Health Status菜单; - 找到你的 ** 系统风扇(SYS_FAN)** 对应的选项,将风扇模式从
Auto(自动)改为Manual/PWM Mode(手动 / PWM 模式); - 关闭
Smart Fan(智能风扇)的 BIOS 自动控制,保存设置(F10)重启进入系统。
步骤 1:安装核心工具
lm-sensors是 Linux 硬件监控核心工具,fancontrol是配套的 PWM 风扇调速服务,Ubuntu 20.04 官方源直接支持:
bash
运行
# 更新源并安装工具
sudo apt update && sudo apt install lm-sensors fancontrol -y
步骤 2:检测硬件传感器与风扇控制芯片
-
执行传感器检测命令,全程所有询问输入
yes回车即可:bash
运行
sudo sensors-detect -
检测完成后,脚本会自动将识别到的内核模块(这里是
nct6775)写入配置文件,无需手动修改。 -
手动加载核心驱动模块,确保芯片被识别: bash
运行
sudo modprobe nct6775 # 验证模块是否加载成功 lsmod | grep nct6775 -
验证风扇与传感器是否被正确识别: bash
-
运行
sensors(base) root@q-MS-7C31:~# sensors
nct6797-isa-0a20
Adapter: ISA adapter
in0: 744.00 mV (min = +0.00 V, max = +1.74 V)
in1: 1.02 V (min = +0.00 V, max = +0.00 V) ALARM
in2: 3.33 V (min = +0.00 V, max = +0.00 V) ALARM
in3: 3.34 V (min = +0.00 V, max = +0.00 V) ALARM
in4: 1000.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in5: 152.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in6: 920.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in7: 3.33 V (min = +0.00 V, max = +0.00 V) ALARM
in8: 3.17 V (min = +0.00 V, max = +0.00 V) ALARM
in9: 1.01 V (min = +0.00 V, max = +0.00 V) ALARM
in10: 152.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in11: 128.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in12: 136.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in13: 128.00 mV (min = +0.00 V, max = +0.00 V) ALARM
in14: 1.53 V (min = +0.00 V, max = +0.00 V) ALARM
fan1: 2860 RPM (min = 0 RPM)
fan2: 984 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
SYSTIN: +127.0°C (high = +80.0°C, hyst = +75.0°C) ALARM sensor = CPU diode
CPUTIN: +29.5°C (high = +115.0°C, hyst = +90.0°C) sensor = thermistor
AUXTIN0: +30.5°C sensor = thermistor
AUXTIN1: +109.0°C sensor = thermistor
AUXTIN2: +115.0°C sensor = thermistor
AUXTIN3: -2.0°C sensor = thermistor
PECI Agent 0: +33.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: disabledacpitz-acpi-0
Adapter: ACPI interface
temp1: +27.8°C (crit = +119.0°C)
temp2: +29.8°C (crit = +119.0°C)coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +38.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +38.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +34.0°C (high = +80.0°C, crit = +100.0°C)
Core 2: +33.0°C (high = +80.0°C, crit = +100.0°C)
Core 3: +33.0°C (high = +80.0°C, crit = +100.0°C)
pwmX_enable 是 PWM 通道的「控制权归属 / 调速逻辑总开关」,决定「谁来控制风扇转速」;pwmX_mode 是 PWM 通道的「硬件输出模式」,决定「用什么电信号方式调速」,二者是完全独立的两个维度,必须配合正确才能实现手动调速。
以下内容严格遵循 Linux 内核 hwmon 官方规范,同时适配你的微星 B365M-PRO 主板(NCT6797D 芯片,nct6775驱动)。
一、pwmX_enable 详解(调速前提,决定手动写入是否生效)
这是 Linux hwmon 系统的标准核心节点,定义了风扇调速的控制权归属和运行逻辑,是你能手动修改风扇转速的核心前提。
官方标准取值(nct6775 驱动,微星主板适配)
表格
| 取值 | 模式名称 | 核心作用 | 手动调速适配性 |
|---|---|---|---|
| 0 | 控制禁用 | 关闭风扇调速功能,风扇强制满速运行,无任何调速能力 | ❌ 不可用 |
| 1 | 手动用户直控模式 | 唯一支持手动调速的模式。pwmX 的值完全由用户写入决定,Linux 内核 / BIOS 完全不干预,写入的转速值直接生效 | ✅ 必须用这个模式 |
| 2 | Thermal Cruise 自动温控模式 | 由硬件 / 内核根据温度自动调整风扇转速,用户写入 pwmX 会被自动覆盖 | ❌ 手动写入不生效 |
| 3 | Fan Speed Cruise 定速模式 | 硬件自动维持固定的目标转速,用户无法直接修改 pwm 值 | ❌ 手动写入不生效 |
| 4/5 | Smart Fan 智能模式 | 对应微星 BIOS 的 Smart Fan IV 自动调速,控制权完全交给 BIOS | ❌ 手动写入完全不生效 |
关键特性
- 主板默认值是 2/5:也就是 BIOS 自动控制,这是 90% 用户手动调速失败的根源 ------ 哪怕你写入了 pwm 值,BIOS 会立刻覆盖你的配置,调速完全没反应。
- 权限优先级最高 :只有设为 1 时,用户对
pwmX、pwmX_mode的修改才会生效;其他模式下,多数配置会被锁定为只读。
二、pwmX_mode 详解(硬件适配开关,和风扇类型强绑定)
这是硬件级的输出配置节点,定义了主板风扇接口输出的电信号类型,必须和你的风扇硬件类型完全匹配,否则会出现风扇不转、无法调速、满速不降等异常The Linux Kernel Archives。
官方标准取值(nct6775 驱动)
表格
| 取值 | 模式名称 | 核心作用 | 适配风扇类型 |
|---|---|---|---|
| 0 | DC 电压调速模式 | 主板通过调整输出的直流电压大小调速,电压范围 0~12V,电压越高转速越快 | 3 针无 PWM 引脚的风扇 |
| 1 | PWM 脉冲调速模式(主板默认值) | 主板输出固定 12V 供电,通过调整 PWM 脉冲信号的占空比调速,占空比 0~100% 对应 pwm 值 0~255 | 4 针带 PWM 引脚的标准风扇 |
关键特性
- 硬件强绑定:3 针风扇用默认的 mode=1,会出现完全无法调速、要么满速要么停转的问题;4 针风扇用 mode=0,调速范围极小、转速波动极大,甚至无法启动。
- 接口限制:微星 B365M-PRO 的 CPU_FAN 接口同时支持 PWM/DC 双模式,部分 SYS_FAN 接口仅支持 4 针 PWM 模式,3 针风扇接 SYS_FAN 用 DC 模式可能无效。
三、核心区别对比表
表格
| 对比维度 | pwmX_enable |
pwmX_mode |
|---|---|---|
| 核心定位 | PWM 通道的控制权归属 / 调速逻辑总开关 | PWM 通道的硬件电信号输出模式 |
| 核心解决的问题 | 「谁来控制风扇转速」(用户 / 内核 / BIOS) | 「用什么方式调速」(PWM 脉冲 / DC 电压) |
| 手动调速的作用 | 前提开关,只有设为 1,手动写入才会生效 | 适配基础,只有和风扇类型匹配,调速才会正常响应 |
| 错误配置的后果 | 写入 pwm 值完全不生效,调速无任何反应 | 风扇无法调速、转速异常、停转、满速不下降 |
| 配置优先级 | 后配置,先设 mode 再设 enable | 先配置,部分驱动在 enable 非 1 时 mode 为只读 |
| 重启后行为 | 重置为 BIOS 默认值(2/5,自动模式) | 重置为 BIOS 默认值(1,PWM 模式) |
四、微星 B365M-PRO 主板 正确实操顺序
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat fan1_input
4687
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1
124
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1_enable
1
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1_mode
0
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# echo 1 > pwm1_mode
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1_mode
1
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat fan1_input
2830
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1_mode
1
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1_enable
1
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat fan1_input
2860
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat pwm1
124
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# echo 200 > pwm1
(base) root@q-MS-7C31:/sys/class/hwmon/hwmon2# cat fan1_input
3913