一、设备
手上一块香橙派的 Orangepi5 plus,目前跑的 ubuntu 22 服务器版本,用来跑一些模型和算法。
二、引脚分析
官方手册没有提及如何手动控制风扇的 pwm 引脚,翻原理图可以看到风扇引脚:
查看设备树文件 kernel/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
可以看到风扇的pwm引脚定义:
以上只是风扇的基本信息,有需要可以自行查阅。
三、PWM引脚控制
在 ARM64 开发板上,风扇控制可以通过 Linux 的 hwmon(Hardware Monitoring)接口实现。可以直接读写 /sys/class/hwmon/ 目录下的文件来控制风扇。
风扇驱动的源码在 kernel/drivers/hwmon/pwm-fan.c,读者可以自行阅读。
进入到 /sys/class/hwmon/ 目录,查看已有设备:
查看各个节点的name:
可知风扇为最后一个,也就是 hwmon8,这里根据实际情况选择。
hwmon8 目录:
直接给定转速:
echo 150 | sudo tee pwm1
如果风扇刚开就关闭,过几秒在执行一次。
此时风扇应该是正常转动了,由于需要 sudo 权限,所以使用 tee 进行重定向。
四、问题
此时你应该会发现,过几秒风扇就停了,这是因为系统根据 cpu 温度给自动关闭了。
目前我还没有发现如何关闭自动控制,若有读者了解,还请评论区留言。
以下是我的尝试:
当前目录下有子目录 power:
有关各个文件的描述,这里给出GPT的分析:
仅供参考,具体的值不一定是这个,我暂时还没有找到官方说明。
我这里只有 control 可以设置,不过没啥用。其他选项都是提示权限问题。
五、请勿轻易尝试
如果你想完全拥有风扇控制权,那么把设备树中的节点给注释或删除,自定义一个 PWM 外设节点,引脚使用同一个,然后使用通用的 PWM 驱动来管理。驱动可以在正点原子的 Linux 驱动教程找,比较详细。应用程序也可以在正点原子的教程里做移植。
但是!但是!但是!
RK3588听说容易烧,最好还是给系统自动管理风扇要安全些,请勿轻易尝试!