PWM散热风扇的使用方法

- 找到设备树文件rk3566-orangepi-3b.dtb
bash
root@orangepi3b:~# cd /boot/dtb/rockchip
root@orangepi3b:/boot/dtb/rockchip# ls
overlay rk3566-orangepi-3b-v2.dtb rk3588-orangepi-5-max.dtb rk3588s-orangepi-5b.dtb rk3588s-orangepi-cm5.dtb
rk3399-orangepi-4-lts.dtb rk3566-orangepi-cm4.dtb rk3588-orangepi-5-plus.dtb rk3588s-orangepi-5.dtb rk3588s-orangepi-cm5-tablet.dtb
rk3566-orangepi-3b.dtb rk3566-orangepi-cm4-v1.4.dtb rk3588-orangepi-5-ultra.dtb rk3588s-orangepi-5-pro.dtb
- 反编译设备树二进制文件
dtc -I dtb -O dts -o rk3566-orangepi-3b.dts rk3566-orangepi-3b.dtb
ps:记得备份原始rk3566-orangepi-3b.dtb
文件
- 修改 DTS 文件
vim rk3566-orangepi-3b.dts
找到pwm-fan的部分
json
pwm-fan {
compatible = "pwm-fan";
#cooling-cells = <0x02>;
pwms = <0x12b 0x00 0x1312d00 0x00>;
cooling-levels = <0x00 0x32 0x64 0x96 0xc8 0xff>;
rockchip,temp-trips = <0xc350 0x01 0xd6d8 0x02 0xea60 0x03 0xfde8 0x04 0x11170 0x05>;
status = "okay";
phandle = <0x308>;
};
其中,pwms
中的0x1312d00
,表示 PWM 的周期为 20,000,000 纳秒(20ms),即 50Hz 的频率
cooling-levels
是风扇的控制等级(占空比)< 0 50 100 150 200 255 >
rockchip,temp-trips
是温度触发点,<50000 1 55000 2 60000 3 65000 4 70000 5>
个人使用的配置:
json
pwm-fan {
compatible = "pwm-fan";
#cooling-cells = <0x02>;
pwms = <0x12b 0x00 0x9C40 0x00>;
cooling-levels = <0x00 0x00 0x45 0x78 0xC8 0xFF>;
rockchip,temp-trips = <0xc350 0x01 0xdea8 0x02 0xea60 0x03 0xf230 0x04 0x101d0 0x05>;
status = "okay";
phandle = <0x308>;
};
备注:PWM 的周期为40000ns,即25kHz,这样没有低频(50Hz)和高频(1~20kHz)噪音;风扇的控制等级和温度触发点,57度风扇以低速运转,62度风扇高速运转,因为实测大部分情况下cpu温度都不超过57度,100%占用时,温度在65度左右,这样设置可以平时风扇不转动
编译dtb文件
dtc -I dts -O dtb -o rk3566-orangepi-3b.dtb rk3566-orangepi-3b.dts
重启,测试是否生效
- 本文链接:https://blog.kafuchino.top/posts/2024-11-24
- 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 许可协议。