魅力博客

魅力Linux|魅力空间|魅力博客|学习Linux|ubuntu日记|电脑教程|手机软件

简单创建armbian的cpu温度达到50度启动风扇(只有打开没有关闭功能)



在您的 ‌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>;
        };
    };
};
EOF

2.编译并启用叠加层

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℃ 时风扇是否自动启动。




返回顶部

上一篇:​让局域网中的网络播放器能扫描并发现同网段armbian-nas的video视频文件。使用armbian小主机作为媒体库。

下一篇:

发表评论:

Powered By Z-BlogPHP 1.7.5



本网站内容均采用知识共享署名4.0国际许可协议

网站备案号粤ICP备15104741号-1