Skip to content

oes/oes plus风扇开关控制 #3524

@xhynice

Description

@xhynice

OES Plus 风扇控制脚本 (GPIO Fan Control)

硬件信息

  • 设备:OES Plus
  • 系统:Armbian (ophub)
  • 风扇:GPIO 557 控制,开关型(无 PWM 调速)

问题

刷 Armbian 后风扇不转,内核 gpio-fan 驱动加载后 GPIO 能拉高,
但风扇实际不转。需要卸载内核驱动后直接控制 GPIO 才生效。
来自https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8474045&highlight=oes

脚本

#!/bin/bash
GPIO=557
HIGH_TEMP=50
LOW_TEMP=40
INTERVAL=5

sudo rmmod gpio_fan 2>/dev/null

if [ ! -d /sys/class/gpio/gpio$GPIO ]; then
    echo $GPIO | sudo tee /sys/class/gpio/export
fi

echo out | sudo tee /sys/class/gpio/gpio$GPIO/direction

FAN_STATE=0

get_temp() {
    awk '{print $1/1000}' /sys/class/thermal/thermal_zone0/temp
}

echo "Fan control started (HIGH=${HIGH_TEMP}°C LOW=${LOW_TEMP}°C)"

while true; do
    TEMP=$(get_temp)
    printf "[%s] TEMP=%.1f°C FAN=%s\n" \
        "$(date +%H:%M:%S)" "$TEMP" \
        "$([ $FAN_STATE -eq 1 ] && echo ON || echo OFF)"

    if (( $(echo "$TEMP >= $HIGH_TEMP" | bc -l) )); then
        if [ "$FAN_STATE" -eq 0 ]; then
            echo 1 | sudo tee /sys/class/gpio/gpio$GPIO/value > /dev/null
            FAN_STATE=1
            echo ">>> FAN ON"
        fi
    elif (( $(echo "$TEMP <= $LOW_TEMP" | bc -l) )); then
        if [ "$FAN_STATE" -eq 1 ]; then
            echo 0 | sudo tee /sys/class/gpio/gpio$GPIO/value > /dev/null
            FAN_STATE=0
            echo ">>> FAN OFF"
        fi
    fi

    sleep $INTERVAL
done

开机自启

sudo cp fan-control.sh /usr/local/bin/fan-control.sh
sudo chmod +x /usr/local/bin/fan-control.sh

sudo tee /etc/systemd/system/fan-control.service << 'EOF'
[Unit]
Description=OES Plus GPIO fan control
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/bin/fan-control.sh
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable fan-control.service

温度效果

  • 无风扇:~45°C
  • 风扇开启后:~38°C

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions