Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Thinkfan est un outil permettant de gérer la vitesse de rotation du ventilateur ou des ventilateurs d'un ordinateur portable de la gamme Thinkpad (des marques IBM et Lenovo).
Petit disclaimer issue du site de l'auteur de Thinkfan :
If this program steals your car, kills your horse, smokes your dope or pees on your carpet… too bad, you're on your own.
Vous l'aurez donc compris, à vous de décider si vous voulez oui ou non utiliser ce logiciel, vous en serez seul responsable.
Avant de continuer vous devrez installer et configurer lm-sensors qui permet de connaître la température de la machine hôte. Lm-sensors servira de sonde de température pour Thinkfan.
thinkfan est disponible dans les dépôts principaux, il s'installe donc facilement :
apt update && apt install thinkfan
Attention : le paquet thinkfan n'est pas disponible dans les dépôts de Bullseye (Debian 11)
La première étape consiste à configurer le module thinkpad_acpi.
echo "options thinkpad_acpi fan_control=1" > /etc/modprobe.d/thinkfan.conf
Pour éviter un reboot inutile nous allons le recharger :
modprobe -rv thinkpad_acpi modprobe -v thinkpad_acpi
Si la première ligne échoue avec une erreur du type modprobe: FATAL: Module thinkpad_acpi is in use il vous faudra redémarrer votre laptop.
Thinkfan se base sur les températures de votre système pour ajuster la vitesse du ou des ventilateurs. Nous allons devoir lui indiquer les températures que nous voulons surveiller.
La première étape consiste à lister l'ensemble des capteurs de température actifs sur notre machine :
find /sys/devices -type f -name "temp*_input"
Dans mon cas (Thinkpad x201) :
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp6_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp3_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp7_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp4_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp8_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp1_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp5_input /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon3/temp2_input /sys/devices/platform/coretemp.0/hwmon/hwmon4/temp4_input /sys/devices/platform/coretemp.0/hwmon/hwmon4/temp2_input /sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp1_input
Il n'est pas nécessaire de surveiller toutes les températures, certaines sont inutiles et d'autres ne donnent pas forcément des valeurs cohérentes. Afin de déterminer les températures qui nous intéressent nous allons faire appel à sensors (issue de lm-sensors) :
sensors
Dans mon cas :
coretemp-isa-0000 Adapter: ISA adapter Core 0: +43.0°C (high = +95.0°C, crit = +105.0°C) Core 2: +48.0°C (high = +95.0°C, crit = +105.0°C) BAT0-acpi-0 Adapter: ACPI interface in0: +12.51 V curr1: +0.00 A acpitz-acpi-0 Adapter: ACPI interface temp1: +52.0°C (crit = +100.0°C) thinkpad-isa-0000 Adapter: ISA adapter fan1: 0 RPM temp1: +52.0°C temp2: +0.0°C temp3: +0.0°C temp4: +0.0°C temp5: +0.0°C temp6: +0.0°C temp7: +0.0°C temp8: +0.0°C
J'ai choisi de ne conserver que les températures issues de coretemp-isa-0000 (Core 0 et Core 2) qui me semblent être les températures les plus pertinentes. Je pourrais aussi prendre en compte la valeur de temp1 issue de acpitz-acpi-0.
Nous devons maintenant, à partir de la première liste retrouver nos températures. Pour ce faire rien de plus simple, nous allons utiliser la commande cat pour afficher la valeur de chacun des fichiers issues de /sys/devices/ jusqu'à retrouver les températures qui nous intéressent :
cat /sys/devices/platform/coretemp.0/hwmon/hwmon4/temp2_input
43000
Ce qui nous donne 43° ⇒ Core 0 de coretemp-isa-0000 ! .
Une fois que nous avons repéré les fichiers qui nous intéressent nous allons pouvoir finaliser la configuration de Thinkfan.
Pour ce faire nous devons éditer le fichier /etc/thinkfan.conf :
editor /etc/thinkfan.conf
Et ajouter, avant la première accolade, la liste des fichiers de températures qui nous intéressent.
Dans mon cas :
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon4/temp4_input hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon4/temp2_input tp_fan /proc/acpi/ibm/fan (0, 0, 50) (1, 50, 55) (2, 55, 60) (3, 60, 65) (4, 65, 70) (5, 70, 75) (7, 75, 32767)
Les lignes entre accolades représentent les différents niveaux de rotation du ventilateur (de 0 = arrêt à 7 = 100%) :
(niveau du ventilateur (de 0 à 7 = maxi), température mini avant de descendre d'un niveau, température maxi avant de monter d'un niveau)
De plus, toutes les valeurs doivent être des nombres entiers.
Afin que thinkfan démarre automatiquement à chaque boot de Debian nous allons modifier le fichier /etc/default/thinkfan pour ajouter l'option START=yes :
editor /etc/default/thinkfan
# Additional startup parameters START=yes DAEMON_ARGS="-q"
Nous pouvons alors démarrer thinkfan via systemctl :
systemctl start thinkfan.service
Si aucune erreur de démarrage n'est affichée, alors c'est sans doute que tout c'est bien passé. Si ce n'est pas le cas, le mieux est de bien vérifier toute la configuration.
Pour vérifier l'état du service :
systemctl status thinkfan.service
Si tout va bien, et que le service fonctionne, on peut l'ajouter dans la liste des services à démarrer à chaque boot.
systemctl enable thinkfan.service
Après un redémarrage du Thinkpad on peut s'assurer que le service fonctionne.
root@Merry:/home/brunus# systemctl status thinkfan.service ● thinkfan.service - thinkfan 1.3.1 Loaded: loaded (/lib/systemd/system/thinkfan.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-07-18 09:17:46 CEST; 1h 7min ago Process: 466 ExecStart=/usr/sbin/thinkfan $THINKFAN_ARGS $DAEMON_ARGS (code=exited, status=0/SUCCESS) Main PID: 488 (thinkfan) Tasks: 1 (limit: 18739) Memory: 3.2M CPU: 297ms CGroup: /system.slice/thinkfan.service └─488 /usr/sbin/thinkfan -q
Pour contrôler l'activité de thinkfan sur la vitesse de rotation du ventilateur, on peut faire un test “à froid”, avec peu de process lancés, rien de lourd, et on commence par obtenir la température du CPU et la vitesse de rotation du ventilateur :
brunus@Merry:~$ sensors | grep "CPU" CPU: +37.0°C brunus@Merry:~$ sensors | grep "fan1" fan1: 0 RPM brunus@Merry:~$ cat /proc/acpi/ibm/fan | grep "speed" speed: 0
On peut maintenant tester “à chaud” en lançant quelques process ou applications gourmandes en CPU.
brunus@Merry:~$ sensors | grep "CPU" CPU: +45.0°C brunus@Merry:~$ sensors | grep "fan1" fan1: 4070 RPM brunus@Merry:~$ cat /proc/acpi/ibm/fan | grep "speed" speed: 4070