🛠 Gérer le bridage thermique à 80 °C d'un CM3+
Objectifs
Le datasheet RP-008163-DS §10 est explicite : « le bloc quad ARM du BCM2837 peut générer une chaleur significative en charge », et le bridage DVFS s'enclenche dès 80 °C sur le capteur de la puce — soit 5 °C plus tôt que sur le CM3 original. Ce tutoriel mesure le comportement réel du module en charge, puis configure un seuil logiciel plus conservateur (temp_soft_limit) pour les boîtiers scellés, et valide l'efficacité d'un dissipateur.
Matériel
- CM3+ sur CMIO3 (ou carte custom), boîtier ou ventilation connus
- Dissipateur adhésif ou clip pour le BCM2837B0 ; pâte thermique si boîtier fermé
- Alimentation stable 5 V / 3,5 W minimum pour ne pas confondre sous-tension et thermique
- Le quad-core est plafonné à 1,2 GHz sur module : le bridage descend en dessous, jamais au-dessus
Code complet
# 1. Outillage de mesure
sudo apt install -y stress-ng
# 2. Test de charge : température + indicateur de bridage toutes les 2 s
stress-ng --cpu 4 --timeout 300s &
while sleep 2; do
printf '%s °C %s %s MHz\n' "$(vcgencmd measure_temp | cut -d= -f2)" "$(vcgencmd get_throttled)" "$(( $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) / 1000 ))"
done
# 3. Abaisser le seuil logiciel à 70 °C (config.txt, après reboot)
sudo tee -a /boot/firmware/config.txt <<'EOF'
temp_soft_limit=70
EOF
sudo reboot
# 4. Rejouer le test avec le dissipateur posé, comparer la fréquence tenue
Vérification attendue
Sans dissipateur, la température franchit 80 °C en quelques minutes de stress-ng sur 4 cœurs, get_throttled lève le bit de bridage (0x4/0x8) et la fréquence mesurée chute sous 1,2 GHz. Avec dissipateur, la fréquence reste plaquée à 1200 MHz. Avec temp_soft_limit=70, le recul s'enclenche plus tôt mais le module ne dépasse jamais 70-72 °C — compromis débit/température pour boîtier scellé.
Erreurs fréquentes
- Confondre les deux 80 : la plage de fonctionnement des composants va jusqu'à +80 °C ambiante (limite eMMC/LPDDR2), mais le bridage du die intervient à 80 °C de jonction — ce n'est pas la même mesure.
- Comparer au CM3 : l'ancien modèle bridait à 85 °C ; les guides qui parlent de 85 °C ne s'appliquent pas au CM3+ (seuil datasheet : 80 °C).
- Accuser la température alors que
get_throttledaffiche 0x50000 : les bits 16+ signalent une sous-tension, pas un bridage thermique — changer l'alimentation avant de coller des dissipateurs. - Coller un dissipateur sur le blindage métallique sans pâte thermique dans un boîtier sans flux d'air : le gain est marginal, prévoir un conduit d'air ou une paroi métallique comme dissipateur.
- Monter la fréquence au-delà de 1,2 GHz avec force_64/overclock : le module est limité par son alimentation, pas seulement par le thermique — l'overclock n'est pas documenté comme supporté.
- Négliger l'eMMC en température : au-delà de la plage nominale, c'est la puce de stockage qui lâche en premier, pas le SoC.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash