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. 查看当前配置(可选)
提取当前生效的风扇参数,便于对比:
1 | |
或直接查看二进制数值:
1 | |
3. 编写设备树覆盖文件
创建一个 .dts 文件,例如 fan-curve.dts,内容如下(以 40°C 启动,45°C 升二档,最高 60°C 全速为例):
1 | |
注意:&{/pwm-fan} 是绝对路径引用,比 target = <&pwm_fan> 更可靠(原始 dtb 中该节点无标签)。
如果你需要其他曲线,只需修改数值对。例如让风扇在 35°C 就以 20% 转速运转:
1 | |
4. 安装设备树覆盖文件
使用 Armbian 官方工具 armbian-add-overlay 自动编译并安装:
1 | |
该命令会:
- 编译 .dts 为 .dtbo
- 将 .dtbo 复制到 /boot/overlay-user/(某些版本可能是 /boot/dtb/rockchip/overlay/)
- 修改 /boot/armbianEnv.txt,添加
overlay=fan-curve
5. 重启系统
重启系统,检查风扇曲线是否生效:
1 | |
6. 验证结果
重启后,通过以下命令验证:
1 | |
看到类似以下输出即成功(40°C 对应 0x9c40,45°C 对应 0xafc8,……):
1 | |
7. 恢复默认值
如需恢复默认值,删除 Overlay 文件并重启:
1 | |
常见问题
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 | |
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 设备。