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

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.

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

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

Configuration

Module

La première étape consiste à configurer le module thinkpad_acpi.

echo "options thinkpad_acpi fan_control=1" | sudo tee /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
(0,	0,	55)
(1,	48,	60)
(2,	50,	61)
(3,	52,	63)
(4,	56,	65)
(5,	59,	66)
(7,	63,	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

Test

Afin de s'assurer que tout fonctionne correctement nous pouvons lancer manuellement thinkfan après avoir arrêté le démon :

systemctl stop thinkfan.service
thinkfan -n

Ce qui donne dans mon cas :

WARNING: Using default fan control in /proc/acpi/ibm/fan.

WARNING: You're using simple temperature limits without correction values, and your fan will only start at 55 °C. This can be dangerous for your hard drive.

sleeptime=5, tmax=46, last_tmax=46, biased_tmax=46 -> fan="level 0"
sleeptime=2, tmax=54, last_tmax=48, biased_tmax=63 -> fan="level 4"
sleeptime=5, tmax=49, last_tmax=54, biased_tmax=49 -> fan="level 1"
sleeptime=5, tmax=47, last_tmax=49, biased_tmax=47 -> fan="level 0"
sleeptime=2, tmax=53, last_tmax=51, biased_tmax=56 -> fan="level 1"
sleeptime=5, tmax=48, last_tmax=50, biased_tmax=48 -> fan="level 0"
sleeptime=2, tmax=68, last_tmax=50, biased_tmax=95 -> fan="level 7"
sleeptime=5, tmax=62, last_tmax=71, biased_tmax=62 -> fan="level 5"
sleeptime=2, tmax=76, last_tmax=62, biased_tmax=97 -> fan="level 7"
...

Tout semble ok !

On peut donc couper thinkfan (Ctrl + c) et relancer le démon :

systemctl start thinkfan.service

(Res)source

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
atelier/chantier/thinkfan.txt · Dernière modification: 14/05/2020 16:07 par DarKou

Pied de page des forums

Propulsé par FluxBB