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