🛠 Surveiller température et fréquence CPU

Raspberry Pi 3 Model B (model-3b) · avance · Schéma : IMG-model-3b-avance-2-model3b-surveillance-thermique.svg — courbe de température du BCM2837 avec zones 80 °C (ralentissement progressif) et 85 °C (bridage matériel CPU+GPU), sondes vcgencmd et /sys/class/thermal

Objectifs

Mettre en place une surveillance de la température et de la fréquence des cœurs du Raspberry Pi 3 Model B. Connaître les seuils du 3B : ralentissement progressif des cœurs Arm entre 80 °C et 85 °C, bridage matériel CPU + GPU à 85 °C (pas de limite logicielle douce sur ce modèle). Interpréter le drapeau get_throttled et journaliser l'historique pour dimensionner un boîtier ou un ventilateur.

Matériel

Code complet

#!/usr/bin/env bash
# thermal_log.sh — échantillonne température, fréquence et drapeaux de bridage
# seuils du 3B : 80 °C ralentissement progressif, 85 °C bridage dur CPU+GPU

while true; do
  temp_c=$(vcgencmd measure_temp | grep -oE '[0-9]+\.[0-9]+')
  temp_sysfs=$(($(cat /sys/class/thermal/thermal_zone0/temp) / 1000))
  freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)
  throttled=$(vcgencmd get_throttled | cut -d= -f2)
  echo "$(date -Is) temp_C=$temp_c temp_sysfs=$temp_sysfs freq_kHz=$freq throttled=$throttled"
  sleep 5
done | tee -a /var/log/thermal.log

# Dans un autre terminal, provoquer la montée en température :
#   stress --cpu 4 --timeout 300
# Decoder un drapeau (ex. 0x50000 = sous-tension + bridage) :
#   printf '%x\n' $((0x50000 & (1<<0)))   # bit 0 : sous-tension

Vérification attendue

Au repos, vcgencmd measure_temp et le fichier sysfs donnent la même température (±1 °C), par exemple 40–45 °C. Pendant stress --cpu 4, la fréquence scaling_cur_freq descend sous 1200000 kHz quand la température franchit 80 °C, et vcgencmd get_throttled passe à une valeur non nulle dont le bit de bridage est armé. Après arrêt de la charge, température et fréquence redescendent. Le journal permet de tracer la courbe et de comparer boîtier ouvert/fermé.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels