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 :
vcgencmdest 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é (
°Cpartout) via un simplesedsur la sortie devcgencmd.
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
- How to find out Raspberry Pi GPU and ARM CPU temperature on Linux — l'article qui m'a servi de point de départ.
- lm-sensors does not detect integrated temperature sensor on Raspberry Pi — pourquoi
sensorsne suffit pas sur Pi.