🛠 Gérer le bridage thermique à 80 °C d'un CM3+
Objetivos
La hoja de datos RP-008163-DS §10 es explícita: «el bloque quad ARM del BCM2837 puede generar un calor significativo bajo carga», y el recorte DVFS se activa a partir de 80 °C en el sensor del chip —5 °C antes que en el CM3 original. Este tutorial mide el comportamiento real del módulo bajo carga, configura un umbral de software más conservador (temp_soft_limit) para carcasas selladas y valida la eficacia de un disipador.
Material
- CM3+ sobre CMIO3 (o placa personalizada), carcasa o ventilación conocidas
- Disipador adhesivo o de clip para el BCM2837B0; pasta térmica si la carcasa está cerrada
- Fuente de alimentación estable de 5 V / 3,5 W mínimo para no confundir subtensión con problemas térmicos
- El quad-core está limitado a 1,2 GHz en el módulo: el recorte baja por debajo, nunca sube por encima
Código completo
# 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
Verificación esperada
Sin disipador, la temperatura supera los 80 °C en pocos minutos de stress-ng en 4 núcleos, get_throttled activa el bit de recorte (0x4/0x8) y la frecuencia medida cae por debajo de 1,2 GHz. Con disipador, la frecuencia se mantiene fija en 1200 MHz. Con temp_soft_limit=70, la reducción se activa antes, pero el módulo nunca supera los 70-72 °C —compromiso entre rendimiento y temperatura para carcasa sellada.
Errores frecuentes
- Confundir los dos 80: el rango de funcionamiento de los componentes llega hasta +80 °C de temperatura ambiente (límite eMMC/LPDDR2), pero el recorte del die interviene a 80 °C de temperatura de unión —no es la misma medición.
- Comparar con el CM3: el modelo anterior recortaba a 85 °C; las guías que hablan de 85 °C no se aplican al CM3+ (umbral de la hoja de datos: 80 °C).
- Culpar a la temperatura cuando
get_throttledmuestra 0x50000: los bits 16+ indican una subtensión, no un recorte térmico —cambia la fuente de alimentación antes de pegar disipadores. - Pegar un disipador sobre el blindaje metálico sin pasta térmica en una carcasa sin flujo de aire: la mejora es marginal, prevé un conducto de aire o una pared metálica como disipador.
- Subir la frecuencia por encima de 1,2 GHz con force_64/overclock: el módulo está limitado por su alimentación, no solo por la temperatura —el overclock no está documentado como admitido.
- Descuidar la eMMC en temperatura: por encima del rango nominal, es el chip de almacenamiento el que falla primero, no el SoC.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash