Contrôle de la vitesse du ventilateur sur Proxmox (Lenovo ThinkCentre M73)
Contexte
Proxmox VE ne propose aucune gestion native de la vitesse des ventilateurs : c'est du Debian en dessous, donc on passe par les outils Linux standards lm-sensors + fancontrol.
Matériel testé
- Machine : Lenovo ThinkCentre M73 (carte mère “SHARKBAY”)
- BIOS : Lenovo FHKT52AUS (2014)
- CPU : Intel Core i5-4570T
- Puce de supervision matérielle : ITE IT8792E (Super I/O)
1. Installation des paquets
apt install lm-sensors fancontrol
2. Détection des capteurs
sensors-detect
Réponses à donner aux questions posées (garder les valeurs par défaut, entre parenthèses, en appuyant sur Entrée) :
- “Do you want to scan for them?” (embedded sensors) → YES (défaut)
- “Do you want to scan for Super I/O sensors?” → YES (défaut) — c'est cette étape qui détecte la puce IT8792E
- “Do you want to scan for IPMI interfaces?” → YES (défaut, sans effet ici, pas d'IPMI sur ce matériel)
- “Do you want to scan the ISA I/O ports?” → NO (défaut)
- “Do you want to probe the I2C/SMBus adapters now?” → YES (défaut)
- Pour chaque adaptateur I2C/SMBus listé ensuite (“Do you want to scan it?”) → NO (défaut, laisser passer, non nécessaire ici)
- “Do you want to add these lines automatically to /etc/modules?” → yes (répondre explicitement, ce n'est pas la valeur par défaut) — ajoute
coretempetit87à/etc/modulespour qu'ils se chargent automatiquement au démarrage
Le programme doit trouver :
Driver `it87':
* ISA bus, address 0xa40
Chip `ITE IT8792E Super IO Sensors' (confidence: 9)
Driver `coretemp':
* Chip `Intel digital thermal sensor' (confidence: 9)
Accepter l'ajout automatique des modules à /etc/modules.
3. Problème rencontré : "Device or resource busy"
Au chargement du module, erreur classique sur ce type de carte mère (le BIOS réserve la plage I/O du chip IT87 via ACPI) :
modprobe: ERROR: could not insert 'it87': Device or resource busy
Solution : autoriser le noyau à ignorer cette réservation ACPI.
Éditer /etc/default/grub et ajouter le paramètre à la ligne GRUB_CMDLINE_LINUX_DEFAULT :
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_enforce_resources=lax"
Puis :
update-grub reboot
Après redémarrage, le module se charge normalement :
modprobe coretemp modprobe it87 sensors
Le chip it8792-isa-0a40 doit apparaître avec fan1, pwm1, et les températures.
4. Génération de la courbe avec pwmconfig
pwmconfig
Le programme teste chaque PWM en coupant brièvement le ventilateur pour voir lequel réagit. Sur cette machine, seul fan1 / pwm1 est câblé (fan2 et fan3 à 0 RPM = headers non utilisés).
Une fois le test terminé, un menu apparaît :
Select fan output to configure, or other action: 1) hwmon2/pwm1 2) Change INTERVAL 3) Just quit 4) Save and quit 5) Show configuration select (1-n):
Navigation à suivre :
- Choisir 1) hwmon2/pwm1 pour configurer ce ventilateur
- Sélectionner la sonde de température source → hwmon1/temp1_input (température CPU “Package id 0”)
- Renseigner les 3 valeurs demandées à la suite : température basse (40), température haute (75), PWM à utiliser au-dessus de la température haute (255)
- De retour au menu, choisir 5) Show configuration pour vérifier ce qui a été enregistré
- Choisir 4) Save and quit pour écrire
/etc/fancontrol
Courbe mesurée (PWM → RPM) :
PWM 255 → 3110 RPM (vitesse max) PWM 135 → 894 RPM (zone stable la plus basse) < PWM 135 → comportement instable (RPM qui remonte au lieu de descendre)
Réglages retenus (sonde de référence : hwmon1/temp1_input = température CPU “Package id 0”) :
- MINTEMP = 40°C → en dessous, ventilateur au minimum
- MAXTEMP = 75°C → au-dessus, ventilateur à fond
- MINSTART = 150 → PWM nécessaire pour relancer le ventilateur à l'arrêt
- MINSTOP = 100 → corrigé manuellement après coup (pwmconfig avait mis 0 par défaut, ce qui aurait laissé le ventilateur descendre dans la zone instable sous PWM 135)
- MAXPWM = 255
5. Fichier /etc/fancontrol final
# Configuration file generated by pwmconfig, changes will be lost INTERVAL=10 DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/it87.2624 DEVNAME=hwmon1=coretemp hwmon2=it8792 FCTEMPS=hwmon2/pwm1=hwmon1/temp1_input FCFANS= hwmon2/pwm1=hwmon2/fan1_input MINTEMP=hwmon2/pwm1=40 MAXTEMP=hwmon2/pwm1=75 MINSTART=hwmon2/pwm1=150 MINSTOP=hwmon2/pwm1=100 MAXPWM=hwmon2/pwm1=255
Correction de MINSTOP après génération :
sed -i 's/MINSTOP=hwmon2\/pwm1=0/MINSTOP=hwmon2\/pwm1=100/' /etc/fancontrol
6. Activation du service
systemctl enable --now fancontrol systemctl status fancontrol
7. Vérification
sensors | grep pwm1 watch -n 2 'sensors | grep -E "pwm1|Package"'
Note : le libellé MANUAL CONTROL affiché à côté de pwm1 est normal une fois fancontrol actif — il indique que le pilotage est fait en logiciel (par fancontrol) plutôt que par l'automatisme du BIOS. Ce n'est pas une erreur.
Pour valider le comportement : lancer une charge CPU et observer que le PWM augmente progressivement entre 40°C et 75°C, puis redescend au repos jusqu'à MINSTOP (100).
Résumé des commandes
apt install lm-sensors fancontrol sensors-detect # éditer /etc/default/grub : ajouter acpi_enforce_resources=lax update-grub && reboot modprobe coretemp it87 pwmconfig nano /etc/fancontrol # vérifier/corriger MINSTOP systemctl enable --now fancontrol