AS201281 Wiki

Your check engine light is on!

User Tools

Site Tools


hardware:laptop:asus:eeepc_1000he:fan_speed_linux

Contrôle ventilateur sous GNU/Linux

Sous GNU/Linux le ventilateur du EeePc a tendance à s'emballer un peu trop souvent sans raison. Heureusement il est possible de le contrôler de manière un peu plus artisanale grâce à un script qui tourne en tâche de fond.

#!/bin/bash
 
# Automatic fan controller
 
TEMP=0
temperature_reading=/sys/class/thermal/thermal_zone0/temp
fan_control=/sys/devices/platform/eeepc/hwmon/hwmon1/pwm1
fan_manual_switch=/sys/devices/platform/eeepc/hwmon/hwmon1/pwm1_enable
 
# Set critical temperature
TEMP_CRITICAL=57
 
# Set critical temperature interval size. See figure for details
TEMP_INTERVAL_SIZE=5
 
# Maximum fan speed
FAN_SPEED_MAX=75
 
# Turn on manual fan control
echo 1 > $fan_manual_switch
 
eeefanupdate() {
    TTEMP=$TEMP
 
    # Get temperature reading
    TEMP=$(cat $temperature_reading)
    TEMP=$(($TEMP / 1000)) 
 
    if [ $TTEMP != $TEMP ]; then
        # Calculate optimum fan speed
        X=$(echo "$FAN_SPEED_MAX*1/(1+e(-($TEMP-$TEMP_CRITICAL)/$TEMP_INTERVAL_SIZE))" | bc -q -l)
 
        # Workaround to convert it to nearest integer
        FAN_SPEED=$(echo "scale=0; $X/1.0" | bc -q -l)
 
        # Set fan speed
        FAN_SPEED=$(($FAN_SPEED * 250 / 100)) 
        echo $FAN_SPEED > $fan_control
    fi
}
 
# Run eeefanupdate, then wait 10 seconds.
while [ 1 ]; do
    eeefanupdate
    sleep 10
done
 
exit 0

Le script regarde la température du CPU toutes les dix secondes et ajuste la vitesse du ventilateur en fonction de cette température. Pour lancer ce script automatiquement au démarrage, on utilise la commande suivante.

sudo cp eeefan /etc/rc2.d/S99eeefan
hardware/laptop/asus/eeepc_1000he/fan_speed_linux.txt · Last modified: 2021/01/04 20:41 by 127.0.0.1