RK3588 Linux kernel-6.1 PWM温控风扇
前言
在嵌入式Linux开发中,散热管理是一个不可回避的问题。特别是在RK3588这类高性能SoC上,CPU满载时发热量不容小觑。如果风扇只是全速运转,噪音问题会很突出;如果完全依赖被动散热,又可能导致降频甚至过热保护。
本文记录了一次在RK3588平台上实现温控风扇自动调速的完整过程——通过修改内核dts配置、启用pwm-fan驱动,并在驱动层增加温度采集与PWM动态映射逻辑,让风扇转速随CPU温度智能变化。
一、需求背景
项目硬件平台基于RK3588,运行Linux 6.1内核。系统运行过程中,需要满足:
- 低温时风扇停转或低速运转,保证静音
- 温度升高时风扇转速线性提升,保证散热
- 温度达到警戒值时风扇全速运转
原生的pwm-fan驱动支持通过cooling-levels定义风扇档位,但其调速逻辑依赖于thermal框架的cooling device机制,需要与thermal-zones配合配置。本次方案选择了一种更直接的方式:在驱动内部主动读取thermal zone温度,计算对应的PWM占空比并实时设置。
二、硬件设备树配置
首先在设备树中添加PWM风扇节点:
--- a/kernel-6.1