logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Thinkfan

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

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/misc/thinkfan.txt · Dernière modification: 18/07/2022 10:52 par Brunus

Pied de page des forums

Propulsé par FluxBB