Files
abonnel-www/96eaaeb7-e04f-472d-b4ed-37ffbdae945f/draft_overlay.md
T

4.0 KiB

Relever la température du SoC d'un Raspberry Pi

Surveiller la température de votre Raspberry Pi permet d'anticiper les ralentissements et d'éviter les dommages matériels. À partir de 80 °C, le Pi réduit automatiquement sa fréquence (throttling) pour se protéger ; au-delà de 85 °C, le throttling devient plus agressif. Les composants ne risquent pas de griller dans des conditions normales — la protection thermique est intégrée — mais une température qui plafonne haut indique qu'un meilleur refroidissement s'impose.

À noter : sur un Raspberry Pi, le CPU et le GPU partagent le même SoC (Broadcom). Les deux commandes ci-dessous renvoient donc des valeurs quasi identiques, issues de capteurs très proches. On parle plus justement de « température du SoC ».

Tests réalisés sur un Raspberry Pi 4 sous Raspberry Pi OS Bookworm.

Fondamentaux

La température rapportée par le firmware VideoCore est accessible via vcgencmd :

$ vcgencmd measure_temp
temp=43.0'C

La température exposée par le kernel se trouve dans /sys/class/thermal/thermal_zone0/temp, en millièmes de °C :

$ cat /sys/class/thermal/thermal_zone0/temp
44790

Pour l'afficher en °C, on divise par 1000 :

$ awk '{printf("temp=%.1f°C\n", $1/1e3)}' /sys/class/thermal/thermal_zone0/temp
temp=44.7°C

Script

Le script ci-dessous affiche les deux mesures côte à côte, avec un formatage homogène.

#!/bin/bash
# Script  : piSensorsTemp
# Objet   : Afficher la température du SoC d'un Raspberry Pi (2/3/4/5)
# Auteur  : Cédric Abonnel — https://www.abonnel.fr — licence CC BY
# ------------------------------------------------------------------

echo "$(date) @ $(hostname)"
echo "-------------------------------------------"

# Température rapportée par le firmware (VideoCore)
gpu_temp=$(vcgencmd measure_temp | sed "s/'C/°C/")
echo "Firmware (VideoCore) => $gpu_temp"

# Température rapportée par le kernel (zone thermique cpu-thermal)
for zone in /sys/class/thermal/thermal_zone*; do
    if [[ "$(cat "$zone/type" 2>/dev/null)" == "cpu-thermal" ]]; then
        awk '{printf("Kernel (cpu-thermal)  => temp=%.1f°C\n", $1/1e3)}' "$zone/temp"
        break
    fi
done

Trois améliorations par rapport à la version originale :

  • vcgencmd est appelé sans chemin absolu — /opt/vc/bin/ n'existe plus depuis Raspberry Pi OS Bullseye et a totalement disparu sur le Pi 5.
  • La zone thermique est détectée dynamiquement plutôt que codée en dur sur thermal_zone0, ce qui évite les surprises selon les configurations kernel.
  • Le symbole degré est harmonisé (°C partout) via un simple sed sur la sortie de vcgencmd.

Rendre le script exécutable :

$ chmod +x piSensorsTemp
$ ./piSensorsTemp

Rafraîchir l'affichage toutes les secondes (l'option -d surligne les valeurs qui changent) :

$ watch -n 1 -d ./piSensorsTemp

Exemple d'exécution :

$ ./piSensorsTemp
vendredi 15 mai 2026, 11:25:31 (UTC+0200) @ rpitst
-------------------------------------------
Firmware (VideoCore) => temp=43.0°C
Kernel (cpu-thermal)  => temp=43.3°C

Si la température est trop haute

Quelques pistes si vous observez du throttling régulier :

  • Dissipateurs passifs : utiles, mais insuffisants seuls sur un Pi 4 sous charge soutenue.
  • Ventilateur : la solution la plus efficace ; le boîtier officiel du Pi 4 en intègre un, piloté par le kernel.
  • Boîtier dissipateur (type Argon ONE, FLIRC) : tout le boîtier sert de radiateur.
  • Vérifier la ventilation de la pièce et éviter les boîtiers fermés sans circulation d'air.

Pour aller plus loin