🛠 Dompter la chauffe : throttling à 70 °C, dissipateur et pilotage CPU
Objectifs
Le BPI-CM4 est un champion de l'effondrement thermique : le throttling démarre vers 70 °C et, en module nu sous stress-ng, la fréquence s'effondre en 5 secondes à peine — après 10 minutes, un module sans refroidissement tourne à 1000/1000 MHz contre 1800/1398 MHz avec un simple petit dissipateur (mesures publiées). Vous allez reproduire le test, instrumenter les deux clusters big.LITTLE (4× A73 + 2× A53, politiques cpufreq séparées) et arbitrer entre dissipateur, plafond de fréquence et governor.
Matériel
- BPI-CM4 + carrier, alimentation 5 V / 3 A
- Petit dissipateur adhésif (celui des mesures publiques suffit) ; un boîtier sans flux d'air aggrave tout
- Thermomètre infrarouge optionnel
Code complet
sudo apt update && sudo apt install -y stress-ng linux-cpupower
# État des politiques de fréquence (une par cluster big.LITTLE)
for p in /sys/devices/system/cpu/cpufreq/policy*; do
echo "$p : $(cat $p/scaling_governor) $(cat $p/cpuinfo_cur_freq 2>/dev/null)"
done
# Températures (thermal zones amlogic)
for z in /sys/class/thermal/thermal_zone*/; do
echo "$(cat $z/type 2>/dev/null) : $(($(cat $z/temp 2>/dev/null)/1000)) °C"
done
# Test de 10 min avec enregistrement des fréquences
sudo stress-ng --matrix 0 --timeout 10m &
while sleep 15; do
date +%T; paste -sd' ' /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
done
# Plafonner les A73 à 1,8 GHz pour un régime silencieux
sudo cpupower frequency-set -d 1GHz -u 1.8GHz
Vérification attendue
Sans dissipateur : chute visible en quelques secondes vers les fréquences plancher, stabilisation autour de 1000 MHz par cœur après 10 minutes. Avec dissipateur : maintien nettement supérieur (ordre de grandeur 1800/1398 MHz). Consommation de référence mesurée sur ce montage : 1,8 W au repos, 4,1 W en pleine charge stress-ng.
Erreurs fréquentes
- Conclure à un défaut de la carte : le comportement est normal pour un module nu ; la règle d'usage, c'est le dissipateur.
- Regarder un seul cœur : les clusters A73 et A53 ont des politiques distinctes, il faut les relever ensemble.
- Tester dans un boîtier fermé sans ventilation : pire que le module nu.
- Confondre la température de seuil (~70 °C documentée) avec une température maximale de jonction : le maximum absolu du A311D n'est pas publié dans les sources accessibles.
- Comparer des benchmarks sans contrôler la température : un score obtenu à froid n'a rien à voir avec le régime établi.
Autres tutoriels pour cette carte
- Monter le module BPI-CM4 sur son carrier et réussir le premier boot
- Apprivoiser les LED et la touche ADC du carrier CM4IO
- Mesurer le stockage du BPI-CM4 : eMMC, microSD et le palier NVMe
- Activer I2C, SPI et UART sur le BPI-CM4 : env.txt ou armbianEnv.txt
- Brancher un capteur BME280 sur l'I2C1 du carrier (GPIOX_17/18)
- Déplacer le rootfs sur un SSD NVMe via le port mini-PCIe
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash