====== Thinkfan ======
* Objet : Installer et configurer Thinkfan
* Niveau requis : débutant avisé
* Commentaires : Gérer automatiquement les ventilateurs sur un portable de la gamme Thinkpad
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>en-chantier}}
* Création par [[user>DarKou]] et [[user>Brunus]] le 09/05/2020
* Testé par [[user>Brunus]]
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=27270|Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
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).
Thinkfan subit de grosses modifications et à été retiré des dépôts de Bullseye (Debian 11, Stable)
Mais il existe dans les dépôts de Bookworm (Testing). La configuration décrite ci-dessous fonctionne pour les versions de Debian qui précèdent Bullseye, et est en cours de vérification et d'adaptation pour Bookworm.
Petit disclaimer issue du site de l'auteur de Thinkfan :
No warranties whatsoever
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 [[doc:systeme:lm-sensors|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.
===== Installation =====
**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)**
===== Configuration =====
==== Module ====
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.
==== Températures à surveiller ====
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 [[doc:systeme:lm-sensors|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 ! 8-) .
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.
==== Démarrage automatique ====
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
===== Test =====
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
===== (Res)source =====
* [[https://github.com/vmatare/thinkfan|Site officiel]]