Fan speed control (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de Fan speed control. Date de la dernière traduction: 2021-12-28. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Le contrôle des ventilateurs peut apporter de nombreux avantages à votre système, comme un fonctionnement plus silencieux et une économie d'énergie en arrêtant complètement les ventilateurs lorsque la charge du processeur est faible.

Attention: La configuration ou l'arrêt complet des ventilateurs lorsque la charge du système est élevée peut entraîner des dommages matériels permanents.

Vue d'ensemble

Note: Les utilisateurs d'ordinateurs portables doivent savoir comment fonctionne le système de refroidissement de leur matériel. Certains ordinateurs portables ont un seul ventilateur pour le CPU et le GPU et les refroidissent en même temps. Certains portables ont deux ventilateurs pour le CPU et le GPU, mais le premier refroidit le CPU et le GPU en même temps, tandis que l'autre ne refroidit que le CPU. Dans certains cas, vous ne pourrez pas utiliser le script Fancontrol en raison d'une architecture de refroidissement incompatible (par exemple, un ventilateur pour le GPU et le CPU). Vous trouverez plus d'informations sur ce sujet à l'adresse suivante.

Il existe plusieurs solutions fonctionnelles pour le contrôle des ventilateurs, tant pour les ordinateurs de bureau que pour les ordinateurs portables. En fonction de vos besoins :

  • Fancontrol (lm-sensors) — Script (écrit en Bash) pour configurer la vitesse des ventilateurs. Plus adapté aux ordinateurs de bureau et portables, où les contrôles de ventilateurs sont disponibles via sysfs(5).
  • NoteBook Fan Control (NBFC) — Solution multiplateforme pour le contrôle des ventilateurs des ordinateurs portables, écrite en C# et fonctionnant avec le runtime Mono. Convient surtout aux ordinateurs portables les plus récents, non pris en charge par Fancontrol.
  • Portables Dell — Daemon de contrôle de ventilateur alternatif pour certains ordinateurs portables Dell.
  • Portables ThinkPad — Configuration des ventilateurs pour certains ordinateurs portables ThinkPad.
  • Portables ASUS — Configuration de certains ordinateurs portables ASUS pour Fancontrol ou le contrôle manuel.
  • fan2go — Une alternative à Fancontrol indépendante des chemins des périphériques.
  • isw — Configuration des ventilateurs pour certains ordinateurs portables MSI.

Fancontrol (lm-sensors)

fancontrol est une partie de lm_sensors, qui peut être utilisée pour contrôler la vitesse des ventilateurs du CPU/du boîtier.

La prise en charge des cartes mères plus récentes peut ne pas être encore dans le noyau Linux. Consultez le tableau officiel des périphériques pris en charge par lm-sensors pour voir si des pilotes expérimentaux sont disponibles pour ces cartes mères.

lm-sensors

La première chose à faire est d'exécuter

# sensors-detect

Cela détectera tous les capteurs présents et ils seront utilisés pour le fancontrol. Après cela, exécutez ce qui suit pour vérifier s'il a détecté les capteurs correctement :

$ sensors
coretemp-isa-0000
Adaptateur : Adaptateur ISA
Core 0 : +29.0°C (high = +76.0°C, crit = +100.0°C)  
...
it8718-isa-0290
Adaptateur : Adaptateur ISA
Vcc : +1,14 V (min = +0,00 V, max = +4,08 V)   
VTT : +2,08 V (min = +0,00 V, max = +4,08 V)   
+3,3V : +3,33 V (min = +0,00 V, max = +4,08 V)   
NB Vcore :    +0,03 V (min = +0,00 V, max = +4,08 V)   
VDRAM :       +2,13 V (min = +0,00 V, max = +4,08 V)   
ventilateur1 : 690 RPM (min = 10 RPM)
temp1 : +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor
temp2 : +25.0°C (low = +127.0°C, high = +127.0°C) capteur = diode thermique
Note: Si la sortie n'affiche pas une valeur RPM pour le ventilateur du CPU, il faut peut-être augmenter le diviseur du ventilateur pour les capteurs. Si la vitesse du ventilateur est affichée et supérieure à 0, c'est bon.

Configuration

Une fois les capteurs correctement configurés, utilisez pwmconfig(8) pour tester et configurer le contrôle de la vitesse du ventilateur. En suivant le guide, vous devriez créer /etc/fancontrol, un fichier de configuration personnalisé. Dans le guide, les réponses par défaut sont entre parenthèses si vous appuyez sur entrée sans rien taper. Entrez y pour oui, n pour non.

# pwmconfig
Note: Certains utilisateurs peuvent rencontrer des problèmes lorsqu'ils utilisent les chemins /sys/class/hwmon/ pour leur fichier de configuration. Les liens symboliques de périphériques de classe hwmon pointent vers les chemins absolus et sont utilisés pour regrouper tous les capteurs hwmon dans un seul dossier pour un accès plus facile. Parfois, l'ordre des périphériques hwmon change à la suite d'un redémarrage, ce qui fait que fancontrol ne fonctionne plus. Consultez #Les chemins des périphériques ont changé dans /etc/fancontrol pour plus d'informations sur la façon de résoudre ce problème.

Ajustement

Certains utilisateurs peuvent vouloir modifier manuellement le fichier de configuration après avoir exécuté pwmconfig avec les privilèges root, généralement pour corriger quelque chose. Pour modifier manuellement le fichier de configuration /etc/fancontrol, consultez fancontrol(8) pour les définitions des variables.

Les utilisateurs rencontreront probablement les problèmes de chemin d'accès à hwmon comme indiqué ci-dessus dans #Fancontrol (lm-sensors). Consultez #Les chemins des périphériques ont changé dans /etc/fancontrol pour plus d'informations.

Astuce: Utiliser les options MAXPWM et MINPWM qui limitent la plage de vitesse du ventilateur. Consultez fancontrol(8) pour plus de détails.
Note: Les chemins des capteurs de température et de ventilation peuvent également changer (généralement lors d'une mise à jour du noyau) (par exemple, hwmon0/device/temp1_input devient hwmon0/temp1_input). Vérifiez l'état de l'unité fancontrol.service pour savoir quel est le chemin qui pose problème et corrigez votre fichier de configuration en conséquence.

Exécution de Fancontrol

Essayez d'exécuter fancontrol :

# fancontrol

Une installation correctement configurée ne produira pas d'erreurs et prendra le contrôle des ventilateurs du système. Les utilisateurs devraient entendre les ventilateurs du système démarrer peu après l'exécution de cette commande. La commande fancontrol peut également être exécutée en démarrant/activant fancontrol.service.

Pour une interface graphique non officielle, installez. fancontrol-guiAUR ou fancontrol-kcmAUR.

Fancontrol cesse de fonctionner après des cycles de suspension-réveil

Malheureusement, fancontrol ne fonctionne pas après une suspension. Conformément au bug reporté, vous devez redémarrer fancontrol après une suspension. Ceci peut être réalisé automatiquement par un hook systemd (en).

NBFC

NBFC est une solution multiplateforme de contrôle des ventilateurs pour les ordinateurs portables. Il est livré avec un système de configuration puissant, qui permet de l'adapter à de nombreux modèles d'ordinateurs portables, y compris certains des plus récents.

Installation

NBFC peut être installé avec nbfcAUR ou nbfc-gitAUR. Pensez à démarrer/activer nbfc.service.

Configuration

NBFC est livré avec des profils prédéfinis. Vous pouvez les trouver dans le répertoire /opt/nbfc/Configs/. Lorsque vous les appliquez, utilisez le nom exact du profil sans extension de fichier (par exemple, some profile.xml devient "some profile").

Vérifiez s'il y a quelque chose que NBFC peut recommander :

$ nbfc config -r

S'il y a au moins un modèle, essayez d'appliquer ce profil et consultez comment les vitesses des ventilateurs sont gérées. Par exemple :

$ nbfc config -a "Asus Zenbook UX430UA"
Note: Si vous obtenez File Descriptor does not pris en charge writing, supprimez StagWare.Plugins.ECSysLinux.dll [1] et redémarrez nbfc.service :
# mv /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll.old

Si la solution ci-dessus ne vous a pas aidé, essayez d'ajouter ec_sys.write_support=1 aux paramètres du noyau.

S'il n'y a pas de modèles recommandés, allez sur NBFC git repository ou /opt/nbfc/Configs/ et vérifiez s'il existe des modèles similaires disponibles chez le même fabricant. Par exemple pour un Asus Zenbook UX430UQ, la configuration Asus Zenbook UX430UA ne fonctionnait pas bien (ventilateurs complètement arrêtés tout le temps), mais Asus Zenbook UX410UQ fonctionnait parfaitement.

Exécutez nbfc pour consulter toutes les options. Plus d'informations sur la configuration sont disponibles sur le wiki des développeurs.

NBFC-Linux

NBFC-Linux est une implémentation légère de NBFC, écrite en C. Elle ne dépend pas du framework Mono. Elle peut être installée avec nbfc-linuxAUR ou nbfc-linux-gitAUR.

Portables Dell

i8kutils est un daemon permettant de configurer la vitesse du ventilateur en fonction de la température du CPU sur certains ordinateurs portables Dell Inspiron et Latitude. Il utilise l'interface /proc/i8k fournie par le pilote i8k (un alias pour dell_smm_hwmon). Les résultats varieront en fonction du modèle exact de l'ordinateur portable.

Attention: Les appels système BIOS i8kutils arrêtent le noyau pendant un moment sur certains systèmes (confirmé sur Dell 9560), cela peut conduire à des effets secondaires comme des coupures audio, consultez https://bugzilla.kernel.org/show_bug.cgi?id=201097

Installation

i8kutilsAUR est le paquet principal pour contrôler la vitesse du ventilateur. En outre, vous pouvez vouloir installer les éléments suivants :

  • acpi - doit être installé pour utiliser i8kmon.
  • tcl - doit être installé afin d'exécuter i8kmon en tant que service d'arrière-plan (en utilisant l'option --daemon).
  • tk - doit être installé en même temps que tcl pour fonctionner comme applet de bureau X11.
  • dell-bios-fan-control-gitAUR - recommandé si votre BIOS outrepasse le contrôle du ventilateur.

Configuration

Les points de température auxquels le ventilateur change de vitesse peuvent être ajustés dans le même fichier de configuration. Seules trois vitesses de ventilateur sont prises en charge (haute, basse et arrêt). Recherchez une section similaire à la suivante :

set config(0) {{0 0} -1 55 -1 55}
set config(1) {{1 1}  45 75 45 75}
set config(2) {{2 2} 65 128 65 128}

Cet exemple fait démarrer le ventilateur à faible vitesse lorsque la température du CPU atteint 55 °C, et le fait passer à la vitesse élevée à 75 °C. Le ventilateur repasse en vitesse lente lorsque la température descend à 65 °C, et s'arrête complètement à 45 °C.

Astuce: Si, en exécutant i8kmon avec l'option verbose, vous remarquez que l'état change (exemple de sortie : # (57>=55), state=1, low=45, high=75) mais que les ventilateurs droit et gauche rapportent l'état 0, vous pouvez envisager de changer la valeur de vitesse du premier état dans le fichier de configuration de 1000 par défaut à 2000 ou plus.

Installation en tant que service

i8kmon peut être lancé automatiquement en démarrant/activant. i8kmon.service.

Contrôle du ventilateur par le BIOS

Certains ordinateurs portables plus récents ont un contrôle de ventilateur par le BIOS en place qui remplacera le contrôle de ventilateur au niveau du système d'exploitation. Pour tester si c'est le cas, exécutez i8kmon en mode verbeux dans une ligne de commande, assurez-vous que le CPU est inactif, puis consultez si le ventilateur est éteint ou réduit en conséquence.

Si le contrôle du ventilateur du BIOS est en place, vous pouvez essayer d'utiliser dell-bios-fan-control-gitAUR :

Attention: La désactivation du contrôle du ventilateur du BIOS peut endommager votre matériel. Assurez-vous d'avoir correctement configuré i8kmon au préalable ou laissez le CPU inactif pendant que vous testez ce programme.

Pour activer le contrôle des ventilateurs du BIOS :

# dell-bios-fan-control 1

Pour désactiver le contrôle du ventilateur par le BIOS :

# dell-bios-fan-control 0

Le contrôle du ventilateur du BIOS peut être automatiquement désactivé en démarrant/activant. dell-bios-fan-control.service.

Portables ThinkPad

Parmi les daemons de contrôle des ventilateurs figurent simpfand-gitAUR et thinkfanAUR (recommandé).

Installation

Installez thinkfanAUR ou thinkfan-gitAUR. Optionnellement, mais recommandé, installez lm_sensors. Ensuite, jetez un oeil aux fichiers :

# pacman -Ql thinkfan

Notez que le paquet thinkfan installe /usr/lib/modprobe.d/thinkpad_acpi.conf, qui contient

options thinkpad_acpi fan_control=1

Le contrôle du ventilateur est donc activé par défaut.

Maintenant, chargez le module :

# modprobe thinkpad_acpi
# cat /proc/acpi/ibm/fan

Vous devriez consulter que le niveau du ventilateur est "auto" par défaut, mais vous pouvez envoyer une commande level dans le même fichier pour contrôler la vitesse du ventilateur manuellement :

# echo level 1 > /proc/acpi/ibm/fan
Niveaux du ventilateur
Niveau Effet
0 off
2 basse vitesse
4 vitesse moyenne
7 vitesse maximale
auto par défaut - automatique
full-speed vitesse maximale réelle

Le daemon thinkfan le fera automatiquement.

"7" n'est pas la même chose que "full-speed". "7" est la vitesse maximale régulée. full-speed est la vitesse maximale non régulée.

Enfin, activez thinkfan.service.

Pour configurer les seuils de température, vous devrez copier le fichier de configuration exemple (/usr/share/doc/thinkfan/examples/thinkfan.yaml) dans /etc/thinkfan.conf, et le modifier à votre goût. Ce fichier spécifie les capteurs à lire, et l'interface à utiliser pour contrôler le ventilateur. Certains systèmes ont /proc/acpi/ibm/fan et /proc/acpi/ibm/thermal disponibles ; sur d'autres, vous devrez spécifier quelque chose comme :

hwmon /sys/devices/virtual/thermal/thermal_zone0/temp

pour utiliser les capteurs génériques hwmon au lieu des capteurs spécifiques au thinkpad.

Exécution

Vous pouvez d'abord tester votre configuration en exécutant thinkfan manuellement (en tant que root) :

# thinkfan -n

et consultez comment il réagit au niveau de charge des autres programmes que vous avez en cours d'exécution.

Lorsque vous l'avez configuré correctement, démarrez/activez thinkfan.service.

Portables ASUS

Ce sujet couvrira la configuration des pilotes sur les ordinateurs portables ASUS pour Fancontrol (lm-sensors).

Modules du noyau

Dans les fichiers de configuration, nous allons utiliser les chemins complets des fichiers sysfs (par exemple /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/pwm1). Ceci est dû au fait que hwmon1 pourrait se transformer en n'importe quel autre numéro après le redémarrage. Fancontrol (lm-sensors) est écrit en Bash, donc utiliser ces chemins dans le fichier de configuration est tout à fait acceptable. Vous pouvez trouver des exemples complets de fichiers de configuration /etc/fancontrol à la page ASUS N550JV#Fan control.

asus-nb-wmi

asus-nb-wmi est un module du noyau, qui est inclus dans le noyau Linux et est chargé automatiquement sur les ordinateurs portables ASUS. Il ne permet de contrôler qu'un seul ventilateur et s'il y a un deuxième ventilateur, vous n'aurez aucun contrôle sur celui-ci. Notez que la mise en liste noire de ce module empêchera le rétro-éclairage du clavier de fonctionner.

Vous trouverez ci-dessous les commandes pour le contrôler. Vérifiez si vous avez un contrôle sur votre ventilateur :

# echo 255 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/pwm1 # Vitesse complète du ventilateur (Valeur : 255)
# echo 0 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/pwm1 # Le ventilateur est arrêté (Valeur : 0)
# echo 2 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/pwm1_enable # Change le mode de ventilation en automatique
# echo 1 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/pwm1_enable # Change le mode de ventilation en manuel
# echo 0 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/pwm1_enable # Change le mode du ventilateur à pleine vitesse

Si vous avez pu modifier la vitesse du ventilateur avec les commandes ci-dessus, continuez avec #Générer le fichier de configuration avec pwmconfig.

asus_fan

asus_fan est un module du noyau, qui permet de contrôler les deux ventilateurs sur certains anciens ordinateurs portables ASUS. Il ne fonctionne pas avec les modèles les plus récents.

Installez le module du noyau asus-fan-dkms-gitAUR (qui utilise DKMS), fournissant asus_fan :

# modprobe asus_fan

Vérifiez si vous avez un contrôle sur les deux ventilateurs :

# echo 255 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm1 # Vitesse complète du ventilateur du CPU (Valeur : 255)
# echo 0 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm1 # Le ventilateur du CPU est arrêté (Valeur : 0)
# echo 255 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm2 # Vitesse du ventilateur du GFX complet (Valeur : 255)
# echo 0 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm2 # Le ventilateur du GFX est arrêté (Valeur : 0)
# echo 2 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm1_enable # Change le mode de ventilation du CPU en automatique
# echo 1 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm1_enable # Change le mode de ventilation du CPU en manuel
# echo 2 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm2_enable # Change le mode de ventilation du GFX en automatique
# echo 1 > /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/pwm2_enable # Change le mode de ventilation du GFX en manuel
# cat /sys/devices/platform/asus_fan/hwmon/hwmon[[:print :]]*/temp1_input # Affiche la température du GFX (sera toujours 0 lorsque le GFX est désactivé/non utilisé)

Si tout fonctionne, vous pouvez charger ce module noyau au démarrage (en) :

/etc/modules-load.d/asus_fan.conf
asus_fan

Continuez avec #Générer le fichier de configuration avec pwmconfig.

Générer le fichier de configuration avec pwmconfig

Si vous obtenez une erreur There are no working fan sensors, all readings are 0 lors de la génération du fichier de configuration avec pwmconfig, ouvrez la première console et exécutez :

# watch -n 1 "echo 2 > /sys/devices/platform/kernel_module/hwmon/hwmon[[:print :]]*/pwm1_enable"

Si vous utilisez le module noyau asus_fan et que vous avez un 2ème ventilateur, dans la deuxième console :

# watch -n 1 "echo 2 > /sys/devices/platform/kernel_module/hwmon/hwmon[[:print :]]*/pwm'2_enable"

Et enfin, dans la troisième console :

# pwmconfig

Une fois que vous avez terminé et que le fichier de configuration est généré, vous devez arrêter les première et deuxième consoles. Continuez avec #Fancontrol (lm-sensors). Une fois le fichier de configuration généré, vous devrez peut-être remplacer manuellement les valeurs PWM par les chemins complets de sysfs tels qu'ils sont utilisés dans ces étapes, car les valeurs des numéros hwmon peuvent changer après un redémarrage.

Méthode alternative utilisant les registres EC

Si les méthodes ci-dessus ne fonctionnent pas pour vous, une méthode alternative consiste à écrire directement dans certains registres du contrôleur embarqué (EC). À l'aide de l'outil EC-Probe tool, vous pouvez régler le mode de ventilation sur l'un des trois modes de vitesse de ventilation, à condition que votre modèle offre cette fonctionnalité sous Windows.

Dans le modèle ASUS FX504GD, le réglage de la vitesse du ventilateur sur l'un des trois modes utilise les valeurs de registre suivantes :

# ec_probe write 0x5e 0x80 # mode silencieux
# ec_probe write 0x5e 0x40 # mode balance
# ec_probe write 0x5e 0xC0 # mode performance

Ici nous écrivons dans le registre 0x5e qui est responsable du réglage du mode de vitesse du ventilateur.

Si ces valeurs ne vous conviennent pas, exécutez l'outil ec-probe en mode moniteur sous Windows et essayez d'identifier quel registre de l'EC change de valeur lorsque vous passez d'un mode de vitesse de ventilateur à un autre.

Configuration de la politique d'accélération thermique

Au lieu de contrôler manuellement la vitesse du ventilateur en utilisant asus-nb-wmi, il est également possible de définir la thermal throttling policy pour avoir une politique de contrôle du ventilateur plus ou moins agressive. Les valeurs possibles sont les suivantes : 0 (par défaut), 1 (suralimentation) et 2 (silencieux).

# echo number > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print :]]*/throttle_thermal_policy

Modes de contrôle des ventilateurs sur certains ordinateurs portables de la série TUF

Sur certains ordinateurs portables ASUS de la série TUF, les modes de contrôle des performances et des ventilateurs peuvent être modifiés en utilisant Fn+F5. Le mode actuel peut être visualisé en exécutant la commande suivante :

$ cat /sys/devices/platform/asus-nb-wmi/fan_boost_mode

Vous pouvez voir la valeur changer lorsque vous appuyez sur Fn+F5. 0 correspond au "Mode normal", 1 au "Mode performance", 2 est très probablement le "Mode silencieux". [2] Il est également possible d'écrire ces valeurs dans le fichier fan_boost_mode en tant que root et d'obtenir l'effet désiré.

Ceci a été testé sur les modèles ASUS TUF FX504GE et ASUS TUF FX504GD et s'est avéré fonctionner.

Contrôle du ventilateur AMDGPU par sysfs

Le pilote du noyau AMDGPU offre un contrôle du ventilateur pour les cartes graphiques via hwmon dans sysfs.

Configuration du contrôle manuel

Pour passer du contrôle automatique au contrôle manuel du ventilateur, exécutez

# echo "1" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable

Réglez la vitesse du ventilateur à, par exemple, 50 % (100 % correspondent à 255 cycles PWM, calculez donc le pourcentage de vitesse du ventilateur souhaité en multipliant sa valeur par 2,55) :

# echo "128" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1

Pour revenir au contrôle automatique des ventilateurs, exécutez

# echo "2" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
Attention: La réinitialisation de la vitesse du ventilateur en mode automatique peut ne pas fonctionner à cause d'un bogue du pilote et un redémarrage du pilote peut être nécessaire comme solution de contournement.

amdgpu-fan

Le paquet amdgpu-fanAUR est un contrôleur de ventilateur automatisé pour les cartes vidéo compatibles AMDGPU écrit en Python. Il utilise une "matrice de vitesse" pour faire correspondre la fréquence des ventilateurs avec la température du GPU, par exemple :

matrice_de_vitesse :  # -[temp(*C), speed(0-100%)]
- [0, 0]
- [40, 30]
- [60, 50]
- [80, 100]

Lancez le service de contrôle du ventilateur en démarrant/activant amdgpu-fan.service.

amdfand-bin

Le paquet amdfand-binAUR est une alternative native à amdgpu-fanAUR. Lancez le service de contrôle des ventilateurs en démarrant/activant amdfand.service.

Script fancurve

Non seulement le contrôle des ventilateurs est offert via hwmon dans sysfs, mais aussi la lecture de la température du GPU :

cat /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input

Cela donne la température du GPU en °C + trois zéros, par exemple 33000 pour 33°C.

Le script bash amdgpu-fancontrol de grmat offre un contrôle entièrement automatique du ventilateur en utilisant la fonctionnalité sysfs hwmon décrite. Il permet également d'ajuster confortablement les assignations de cycles de température/PWM de la courbe de ventilation et une hystérésis en offrant des champs de configuration abstraits en haut du script.

Astuce: Pour fonctionner correctement, le script a besoin d'au moins trois affectations de cycles température/PWM définies.

Pour des raisons de sécurité, le script règle à nouveau le contrôle des ventilateurs sur auto lors de l'arrêt. Cela peut provoquer la rotation des ventilateurs, ce qui peut être contourné au prix de la sécurité en définissant set_fanmode 1 dans la section function reset_on_fail.

Configuration du script fancurve

Pour démarrer le script, il est recommandé de le faire via le système init systemd. De cette façon, la sortie verbeuse du script peut être lue via journalctl/systemctl status. À cette fin, un fichier unitaire .service est déjà inclus dans le dépôt GitHub.

Il peut également être nécessaire de redémarrer le script via un root-resume.service après une hibernation afin de le faire fonctionner à nouveau automatiquement et correctement :

/etc/systemd/system/root-resume.service
[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/usr/bin/systemctl restart amdgpu-fancontrol.service

[Install]
WantedBy=suspend.target

Dépannage

Augmenter le diviseur du ventilateur pour les capteurs

Si sensors n'affiche pas le régime du ventilateur du CPU, il peut être nécessaire de changer le diviseur du ventilateur.

La première ligne de la sortie de sensors est le chipset utilisé par la carte mère pour la lecture des températures et des tensions.

Créez un fichier dans /etc/sensors.d/ :

/etc/sensors.d/fan-speed-control.conf
}
chip 'coretemp-isa-*"
set fan "X_div 4

Remplacer coretemp-isa- par le nom du chipset et X par le numéro du ventilateur du CPU à modifier.

Sauvegardez le fichier, et exécutez-le en tant que root :

# sensors -s

ce qui rechargera les fichiers de configuration.

Exécutez sensors à nouveau, et vérifiez s'il y a une lecture du RPM. Si ce n'est pas le cas, augmentez le diviseur à 8, 16 ou 32. Tout dépendra de votre matériel.

Les chemins des périphériques ont changé dans /etc/fancontrol

Les liens symboliques hwmon énumérés situés dans /sys/class/hwmon/ peuvent varier dans l'ordre car les modules du noyau ne sont pas chargés dans un ordre cohérent par démarrage. De ce fait, fancontrol peut ne pas fonctionner correctement. L'erreur est "Configuration appears to be outdated, please run pwmconfig again". Bogue en amont.

Solution

Dans /etc/conf.d/lm_sensors, il y a 2 tableaux qui listent tous les modules détectés lorsque vous exécutez sensors-detect. Ils sont chargés par fancontrol. Si le fichier n'existe pas, exécutez sensors-detect en tant que root, en acceptant les valeurs par défaut. Ouvrez (ou créez) /etc/modules-load.d/modules.conf. Récupérez tous les modules listés à partir des 2 variables dans /etc/conf.d/lm_sensors/ et placez-les dans le fichier /etc/modules-load.d/modules.conf, un module par ligne. Les spécifier de cette manière devrait créer un ordre défini pour le chargement des modules, ce qui devrait permettre aux chemins de hwmon de rester où ils sont et de ne pas changer d'ordre à chaque démarrage. Si cela ne fonctionne pas, je vous recommande fortement de trouver un autre programme pour contrôler vos ventilateurs. Si vous n'en trouvez pas, vous pouvez essayer d'utiliser la solution alternative ci-dessous.

Solution alternative : chemins absolus

L'utilisation de chemins de fichiers absolus dans fancontrol ne fonctionne pas par défaut, car son script d'aide pwmconfig est programmé pour n'utiliser que les chemins hwmon pour obtenir les fichiers. Pour cela, il détecte si le chemin hwmon fourni dans son fichier de configuration /etc/fancontrol n'a pas changé, et utilise les variables DEVNAME et DEVPATH pour déterminer ce changement. Si vos chemins hwmon changent constamment, cela empêchera fancontrol de fonctionner quoi que vous fassiez. Cependant, il est possible de contourner ce problème. Ouvrez /usr/bin/fancontrol, et commentez cette partie du script :

if ! ValidateDevices "$DEVPATH" "$DEVNAME"
 alors
     echo "La configuration semble être périmée, veuillez exécuter pwmconfig à nouveau". >&2
     exit 1
 fi
Note:
  • En faisant cela, fancontrol peut écrire dans les fichiers que vous lui avez donnés dans le fichier de configuration, quel que soit le fichier. Cela peut corrompre les fichiers si vous fournissez le mauvais chemin. Assurez-vous que vous utilisez le chemin correct pour vos fichiers.
  • Une autre chose à noter est que si vous utilisez cette solution de contournement, l'utilisation de pwmconfig pour créer à nouveau votre script écrasera tous les chemins absolus que vous avez configurés. Par conséquent, il est préférable de changer manuellement les anciens chemins en nouveaux chemins si nécessaire au lieu d'utiliser pwmconfig.

La mise en commentaire de cet élément devrait effectivement ignorer les contrôles de validation de hwmon. Vous pouvez également ignorer les variables DEVNAME et DEVPATH dans le fichier de configuration. Après cela, remplacez tous les chemins de hwmon dans les autres variables par son chemin absolu. Pour plus de facilité, réexécutez pwmconfig avec les privilèges de l'utilisateur root pour rafraîchir les périphériques hwmon. Les chemins de hwmon dans le fichier de configuration devraient maintenant pointer vers les chemins absolus corrects. Pour chaque chemin hwmon, exécutez la commande suivante (où N est l'énumération du chemin hwmon) :

$ readlink -f /sys/class/hwmon/hwmonN/device

Cela vous donnera le chemin absolu du périphérique.

Par exemple, un fichier /etc/fancontrol liste FCTEMPS comme ceci :

FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input

L'exécution de readlink -f /sys/class/hwmon/hwmon3/device peut, par exemple, produire /sys/devices/platform/coretemp.0/. cd dans ce répertoire. Si vous consultez un répertoire /hwmon/hwmonN/, vous devez le faire dans votre fichier de configuration fancontrol pour remplacer le chemin hwmonN. A partir de l'exemple précédent :

# AVANT
FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input
# APRÈS
FCTEMPS=hwmon2/pwm1=/sys/devices/platform/coretemp.0/hwmon/[[:print :]]*/temp1_input

Essentiellement, vous devez remplacer le chemin hwmon par le chemin absolu, concaténé avec /hwmon/[[:print :]]*/ afin que bash puisse attraper le nom hwmon énuméré au hasard.

Si vous ne consultez pas le répertoire /hwmon/hwmonN/, vous n'avez pas à vous en soucier. Cela signifie que les fichiers de température se trouvent à la racine du dossier de l'appareil. Remplacez simplement hwmonN/ par le chemin absolu du fichier. Par exemple :

#AVANT
FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input
#APRÈS
FCTEMPS=hwmon2/pwm1=/sys/devices/platform/coretemp.0/temp1_input

Après avoir remplacé tous les chemins, fancontrol devrait fonctionner correctement.