Orange Pi 5 Plus Armbian 自定义风扇启动温度

Orange Pi 5 Plus Armbian 自定义风扇启动温度(使用设备树覆盖)

  • 适用系统:Armbian 25.11.1 (Noble, vendor kernel 6.1.115)
  • 硬件:Orange Pi 5 Plus
  • 辅助AI:DeepSeek

背景

Orange Pi 5 Plus 原厂 Armbian 固件中,风扇默认在 50°C 才开始低速运转。如果你想在更低温度(例如 40°C)就让风扇启动,或者自定义转速曲线,可以通过设备树覆盖层(Device Tree Overlay)实现,无需修改核心 dtb 文件,系统更新也不会丢失配置。

原理

内核通过 pwm-fan 驱动控制风扇,其行为由设备树中的两个属性决定:

  • cooling-levels:PWM 占空比档位(0~255),例如 <0 50 100 150 200 255> 表示 6 个档位。

  • rockchip,temp-trips:温度(毫摄氏度)与档位的对应关系,例如 <50000 1 55000 2 …> 表示 50°C 切到档位 1,55°C 切到档位 2。

我们只需通过 Overlay 覆盖这两个属性,即可自定义风扇曲线。

步骤

1. 准备环境

  • 确保系统已安装 设备树编译器 工具,用于编译设备树源文件。
1
2
sudo apt update
sudo apt install -y device-tree-compiler

2. 查看当前配置(可选)

提取当前生效的风扇参数,便于对比:

1
dtc -I fs -O dts /proc/device-tree/pwm-fan

或直接查看二进制数值:

1
2
hexdump -C /proc/device-tree/pwm-fan/rockchip,temp-trips
od -An -td1 /proc/device-tree/pwm-fan/cooling-levels

3. 编写设备树覆盖文件

创建一个 .dts 文件,例如 fan-curve.dts,内容如下(以 40°C 启动,45°C 升二档,最高 60°C 全速为例):

1
2
3
4
5
6
7
8
9
10
11
12
13
/dts-v1/;
/plugin/;

&{/pwm-fan} {
cooling-levels = <0 50 100 150 200 255>;
rockchip,temp-trips = <
40000 1
45000 2
50000 3
55000 4
60000 5
>;
};

注意:&{/pwm-fan} 是绝对路径引用,比 target = <&pwm_fan> 更可靠(原始 dtb 中该节点无标签)。

如果你需要其他曲线,只需修改数值对。例如让风扇在 35°C 就以 20% 转速运转:

1
2
3
4
5
6
7
8
cooling-levels = <0 50 100 150 200 255>;
rockchip,temp-trips = <
35000 1
45000 2
55000 3
65000 4
75000 5
>;

4. 安装设备树覆盖文件

使用 Armbian 官方工具 armbian-add-overlay 自动编译并安装:

1
sudo armbian-add-overlay fan-curve.dts

该命令会:

  • 编译 .dts 为 .dtbo
  • 将 .dtbo 复制到 /boot/overlay-user/(某些版本可能是 /boot/dtb/rockchip/overlay/)
  • 修改 /boot/armbianEnv.txt,添加 overlay=fan-curve

5. 重启系统

重启系统,检查风扇曲线是否生效:

1
sudo reboot

6. 验证结果

重启后,通过以下命令验证:

1
2
3
4
5
# 查看 temp-trips 是否已变为自定义值
hexdump -C /proc/device-tree/pwm-fan/rockchip,temp-trips

# 监控 CPU 温度和风扇 PWM 值(温度超过第一档时 pwm1 应 >0)
watch -n 1 'echo "CPU: $(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))°C"; cat /sys/class/hwmon/hwmon*/pwm1 2>/dev/null'

看到类似以下输出即成功(40°C 对应 0x9c40,45°C 对应 0xafc8,……):

1
00000000  00 00 9c 40 00 00 00 01  00 00 af c8 00 00 00 02  |...@............|

7. 恢复默认值

如需恢复默认值,删除 Overlay 文件并重启:

1
2
3
sudo rm /boot/overlay-user/fan-curve.dtbo
sudo sed -i '/user_overlays=fan-curve/d' /boot/armbianEnv.txt
sudo reboot

常见问题

Q1:执行 armbian-add-overlay 后重启无效?

  • 检查 /boot/armbianEnv.txt 是否包含 user_overlays=你的文件名
  • 确认 .dtbo 文件存在于 /boot/overlay-user/ 或 /boot/dtb/rockchip/overlay/。
  • 使用 &{/pwm-fan} 语法而非 target 标签,避免因节点无标签导致加载失败。

Q2:如何自定义更精细的转速曲线?

修改 cooling-levels 数组,数量必须与 temp-trips 中的档位数量一致。例如想用 8 个档位:

1
2
3
4
5
6
7
8
9
10
11
cooling-levels = <0 30 60 90 120 150 180 210 255>;
rockchip,temp-trips = <
40000 1
45000 2
50000 3
55000 4
60000 5
65000 6
70000 7
75000 8
>;

Q3:监控中 pwm1 一直为 0,但温度已超过阈值?

  • 检查 Overlay 是否真的加载:dmesg | grep -i overlay。
  • 部分内核版本可能使用 pwm2 或其他编号,运行 ls /sys/class/hwmon/hwmon*/pwm* 确认实际设备文件。

Q4:能否直接用 dtc 修改原始 dtb 文件?

可以,但会被系统更新覆盖,且操作风险较高。Overlay 方法是官方推荐且更安全的方式。

参考

总结

通过设备树 Overlay 可以安全、便捷地自定义 Orange Pi 5 Plus 在 Armbian 下的风扇启动温度。只要按照上述步骤编写正确的 .dts 文件并使用 armbian-add-overlay 安装,重启后即可生效。该方法同样适用于其他使用 pwm-fan 驱动的 Rockchip 设备。


Orange Pi 5 Plus Armbian 自定义风扇启动温度
http://ankali-aylina.github.io/2026/04/30/Orange-Pi-5-Plus-Armbian-自定义风扇启动温度/
作者
Ankali-Aylina
发布于
2026年4月30日
更新于
2026年4月30日
许可协议