🛠 Gérer le bridage thermique à 80 °C d'un CM3+

Raspberry Pi Compute Module 3+ (CM3+ / CM3+ Lite) · intermediaire · Schéma : un module CM3+ sur carte CMIO3 avec un dissipateur posé sur le SoC BCM2837B0, un graphique température/fréquence montrant le recul DVFS au franchissement du seuil de 80 °C.

Objectives

The RP-008163-DS datasheet §10 is explicit: "the BCM2837 quad ARM block can generate significant heat under load," and DVFS throttling kicks in at 80 °C on the chip sensor — 5 °C earlier than on the original CM3. This tutorial measures the module's actual behavior under load, then configures a more conservative software threshold (temp_soft_limit) for sealed enclosures, and validates the effectiveness of a heatsink.

Hardware

Complete Code

# 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

Expected Verification

Without a heatsink, the temperature exceeds 80 °C within minutes of running stress-ng on 4 cores, get_throttled raises the throttling bit (0x4/0x8), and the measured frequency drops below 1.2 GHz. With a heatsink, the frequency remains pinned at 1200 MHz. With temp_soft_limit=70, throttling kicks in earlier, but the module never exceeds 70-72 °C — a throughput/temperature trade-off for sealed enclosures.

Common Errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials