Fan speed control (Français)

État de la traduction:
Cet article est la version francophone de
Fan speed control
. Date de la dernière traduction: 2022-04-30. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
Lm_sensors
Undervolting CPU
CPU frequency scaling (Français)
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-git
AUR
— Une alternative à Fancontrol indépendante des chemins des périphériques.
isw
AUR
— 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.
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 répertoire 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-gui
AUR
ou
fancontrol-kcm
AUR
[
broken link
: package not found]
.
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
Note
NBFC n'est plus maintenu depuis le 29 mars 2020. Les nouvelles configurations utilisateur peuvent toujours être créées manuellement, mais des configurations prédéfinies n'ont pas été ajoutées depuis cette date. Il existe des forks qui permettent d'ajouter de nouvelles configurations, comme nbfc-revive.
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
nbfc
AUR
ou
nbfc-git
AUR
. 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-linux
AUR
ou
nbfc-linux-git
AUR
.
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
i8kutils
AUR
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-git
AUR
- 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-git
AUR
:
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-git
AUR
et
thinkfan
AUR
(recommandé).
Installation
Installez
thinkfan
AUR
ou
thinkfan-git
AUR
. 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
hwmon
1
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-git
AUR
(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 :]]*/pwm
1
_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-fan
AUR
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-bin
AUR
est une alternative native à
amdgpu-fan
AUR
. Lancez le service de contrôle des ventilateurs en
démarrant/activant
amdfand.service
.
Pour cet outil, il existe également des interfaces graphiques :
amdguid-glow-bin
AUR
(Xorg) et
amdguid-wayland-bin
AUR
(Wayland). Avant de lancer le client,
activez
et
démarrez
amdgui-helper.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/hwmon
N
/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/hwmon
N
/
, vous devez le faire dans votre fichier de configuration
fancontrol
pour remplacer le chemin
hwmon
N
. 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/hwmon
N
/
, vous n'avez pas à vous en soucier. Cela signifie que les fichiers de température se trouvent à la racine du répertoire de l'appareil. Remplacez simplement
hwmon
N
/
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.