====== 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