在您的 Armbian (Meson64/aarch64) 系统中,设置风扇在 50℃ 启动 有两种主流方案,推荐优先使用简单可靠的用户态脚本方案,无需修改设备树:
方案一:自定义 Shell 脚本(通用兼容,推荐)
该方案通过监控系统温度,直接控制风扇 GPIO 通断,适配绝大多数 Meson 平台硬件。
1.创建风扇控制脚本
执行以下命令生成 /usr/local/bin/fan-control.sh:
sudo tee /usr/local/bin/fan-control.sh > /dev/null << 'EOF' #!/bin/bash # 风扇控制GPIO引脚(根据您的硬件接线修改,常见值如 438、412) FAN_GPIO=438 # 启动温度:50℃,关闭温度:45℃(避免频繁启停) TEMP_ON=50000 TEMP_OFF=45000 # 温度传感器路径(Armbian默认通用路径) TEMP_PATH="/sys/class/thermal/thermal_zone0/temp" # 导出GPIO if [ ! -d /sys/class/gpio/gpio$FAN_GPIO ]; then echo $FAN_GPIO > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio$FAN_GPIO/direction fi while true; do CURRENT_TEMP=$(cat $TEMP_PATH) if [ $CURRENT_TEMP -ge $TEMP_ON ]; then echo 1 > /sys/class/gpio/gpio$FAN_GPIO/value elif [ $CURRENT_TEMP -le $TEMP_OFF ]; then echo 0 > /sys/class/gpio/gpio$FAN_GPIO/value fi sleep 5 done EOF
2.赋予执行权限
sudo chmod +x /usr/local/bin/fan-control.sh
3.配置系统服务实现开机自启
创建 systemd 服务文件:
sudo tee /etc/systemd/system/fan-control.service > /dev/null << 'EOF' [Unit] Description=Simple Fan Control at 50C After=multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/fan-control.sh Restart=always User=root [Install] WantedBy=multi-user.target EOF
4.启动并启用服务
sudo systemctl daemon-reload sudo systemctl enable --now fan-control.service
方案二:内核原生 PWM 温控(支持调速)
如果您使用的是 4 线 PWM 风扇,可通过设备树叠加层实现内核级自动温控,完全无需用户态脚本。
1.编写自定义风扇曲线设备树叠加层
sudo tee /root/fan-curve.dtso > /dev/null << 'EOF'
/dts-v1/;
/plugin/;
&{/} {
fragment@0 {
target-path = "/pwm-fan";
__overlay__ {
/* 风扇档位:0=停止,200=全速 */
cooling-levels = <0 200>;
/* 温度触发点:50℃ 启动 */
rockchip,temp-trips = <50000 1>;
};
};
};
EOF2.编译并启用叠加层
sudo mkdir -p /boot/overlay-user sudo dtc -@ -I dts -O dtb -o /boot/overlay-user/fan-curve.dtbo /root/fan-curve.dtso
3.修改启动配置
编辑 /boot/armbianEnv.txt,在末尾添加:
user_overlays = fan-curve
保存后执行 sudo reboot 重启系统,风扇将在 50℃ 时自动启动。
关键注意事项
GPIO 引脚确认:脚本中的 FAN_GPIO 数值需根据您的实际硬件接线调整,可通过 gpiodetect 和 gpioinfo 命令查询可用引脚。
温度传感器路径:如果默认路径不存在,可执行 ls /sys/class/thermal/ 查看您的系统实际 thermal_zone 编号。
验证效果:运行 stress-ng --cpu 4 进行 CPU 压测,观察温度达到 50℃ 时风扇是否自动启动。
返回顶部