Vai al contenuto

Temperatura Raspberry Pi: come monitorarla con vcgencmd e Cockpit

Illustrazione isometrica di un utente al laptop che monitora i dati di un Raspberry Pi.
Immagine generata con IA

Il firmware di un Raspberry Pi sa sempre quanto scalda il SoC, a che frequenza girano i core Arm e se l’alimentatore ha mai fatto scendere la tensione. Per leggerlo basta vcgencmd, lo strumento di Raspberry Pi OS che interroga la GPU VideoCore. Questa guida parte da lì: temperatura, clock e il valore di get_throttled letto bit per bit. Nella seconda parte installiamo Cockpit, un’interfaccia web per server Linux che mostra CPU, memoria, archiviazione e servizi, e la mettiamo in ascolto solo sull’indirizzo del Pi nella rete di casa. I comandi sono quelli della documentazione ufficiale, elencata in fondo.

Cosa serve

  • Sistema: Raspberry Pi OS. L’ultima versione si basa su Debian Trixie, la precedente su Debian Bookworm. La parte su vcgencmd segue la documentazione Raspberry Pi. Per Cockpit seguiamo le istruzioni che il progetto pubblica per Debian, dove il pacchetto c’è dalla versione 10 (Buster): non sono scritte per Raspberry Pi OS. Valgono per la versione a 64 bit, che prende i pacchetti dai repository Debian, e solo per Raspberry Pi OS Trixie: non applicarle a Bookworm, perché gli aggiornamenti di bookworm-backports sono terminati il 9 agosto 2026. La versione a 32 bit usa invece il repository Raspbian.
  • Scheda: vcgencmd c’è su tutti i Raspberry Pi. La temperatura del PMIC si legge solo sui Raspberry Pi 4 e 5. Le misure di tensione e corrente con pmic_read_adc ci sono solo sul Raspberry Pi 5.
  • Terminale: un utente che può usare sudo e una shell compatibile POSIX, come bash. Se usi fish o un’altra shell, Cockpit suggerisce di aprire temporaneamente bash con bash -i.
  • Spazio libero sulla scheda per gli aggiornamenti.
  • Un PC sulla stessa rete con un browser recente. Cockpit viene sviluppato e testato in automatico con Firefox e Chrome, e controllato periodicamente con Edge e Safari. Le versioni minime indicate sono Firefox 82, Chrome 88, Edge 88 e Safari 14.5, ma per motivi di sicurezza il progetto raccomanda l’ultima versione.

Aggiornare Raspberry Pi OS prima di cominciare

Con l’aggiornamento via APT arrivano anche il kernel e il firmware stabile, contenuto nel pacchetto raspi-firmware. Apri il terminale e aggiorna prima l’elenco dei pacchetti:

sudo apt update

Poi installa gli aggiornamenti. La documentazione di Raspberry Pi OS raccomanda full-upgrade al posto di upgrade, perché Raspberry Pi OS cambia le dipendenze dei pacchetti più spesso di Debian:

sudo apt full-upgrade

APT indica lo spazio necessario e chiede conferma: premi Y e poi Invio.

Vedere cosa sa fare vcgencmd

Il codice sorgente di vcgencmd è pubblico su GitHub. Non tutte le schede accettano gli stessi sottocomandi: mem_oom, per esempio, sul Raspberry Pi 5 non c’è. Per questo il primo passo è chiedere l’elenco:

vcgencmd commands

La sintassi è sempre la stessa: vcgencmd seguito dal nome del sottocomando. La temperatura del SoC, misurata dal sensore interno, si legge con measure_temp. Sui Raspberry Pi 4 e 5 puoi aggiungere pmic dopo measure_temp per leggere la temperatura del PMIC.

Secondo la documentazione sull’hardware Raspberry Pi, le temperature lette da Linux possono essere imprecise, mentre vcgencmd dà una lettura accurata e istantanea perché comunica direttamente con la GPU.

Leggere la frequenza attuale della CPU

measure_clock restituisce la frequenza attuale del clock che gli indichi. Con il valore arm legge quella dei core Arm, cioè della CPU:

vcgencmd measure_clock arm

Accetta anche altri clock, fra cui core (il core della GPU), emmc (l’interfaccia della scheda SD) e hdmi. Perché la frequenza scenda lo spiega la gestione termica: il limite è fissato a 85 °C su tutti i modelli; fra 80 e 85 °C i core Arm vengono rallentati progressivamente, e a 85 °C vengono rallentati sia i core Arm sia la GPU. Il valore da solo non dice se c’è throttling: per saperlo leggi get_throttled, nella sezione successiva.

Sottotensione e throttling: leggere get_throttled

vcgencmd get_throttled restituisce lo stato di throttling del sistema come numero esadecimale, da leggere bit per bit: ogni bit acceso indica una condizione. I bit da 0 a 3 descrivono quello che succede in questo momento, i bit da 16 a 19 segnalano condizioni che si sono verificate dall’avvio. Questa è la tabella della documentazione Raspberry Pi:

Bit Valore esadecimale Significato
0 0x1 Sottotensione rilevata
1 0x2 Frequenza Arm limitata
2 0x4 Throttling in corso
3 0x8 Limite di temperatura soft attivo
16 0x10000 Si è verificata una sottotensione
17 0x20000 Si è verificata una limitazione della frequenza Arm
18 0x40000 Si è verificato un throttling
19 0x80000 Si è raggiunto il limite di temperatura soft

Se ottieni 0x0, nessun bit è acceso. Se è acceso un bit fra 16 e 19 ma i bit da 0 a 3 sono spenti, il problema c’è stato ma in quel momento non è attivo.

Se rilevi sottotensione, passa a un alimentatore e a un cavo di qualità adeguata: un’alimentazione scadente può causare comportamenti imprevedibili e corrompere i dati sul supporto di archiviazione, come avverte la documentazione Raspberry Pi sugli avvisi di alimentazione.

Solo su Raspberry Pi 5: controllare la tensione di alimentazione

Il PMIC del Raspberry Pi 5 ha degli ADC integrati. pmic_read_adc li legge e riporta la corrente assorbita e la tensione di ogni linea di alimentazione del PMIC, più la tensione di ingresso EXT5V_V. Senza parametri mostra tutti i canali:

vcgencmd pmic_read_adc

I canali che finiscono in _A sono correnti, quelli che finiscono in _V sono tensioni, da 3V3_SYS a VDD_CORE. Per leggere solo la tensione che arriva dall’alimentatore, indica il nome del canale:

vcgencmd pmic_read_adc EXT5V_V

Nell’esempio della documentazione il risultato è:

EXT5V_V volt(24)=5.06520000V

Queste letture non includono la corrente delle porte USB né quella di altri dispositivi collegati direttamente ai 5 V, perché quell’energia non passa dal PMIC.

Installare Cockpit dai backports Debian

Cockpit parte solo quando serve, grazie all’attivazione tramite socket di systemd, e non resta in background quando non lo usi. È software libero, distribuito con licenza GNU LGPL. Per avere la versione più recente, la pagina di installazione di Cockpit consiglia il repository backports di Debian. Per prima cosa carica le variabili di sistema, fra cui c’è il nome in codice della tua versione:

. /etc/os-release

Il passaggio successivo aggiunge un repository alle sorgenti di APT. Esegui tutto nella stessa finestra del terminale: in un’altra finestra la variabile ${VERSION_CODENAME} sarebbe vuota e la riga scritta nel file non funzionerebbe. Nella pagina di Cockpit, alla sezione Debian, copia il blocco di due righe che comincia con echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" e finisce con sudo tee /etc/apt/sources.list.d/backports.list. Incolla le due righe insieme e senza modificarle: la barra rovesciata alla fine della prima le unisce in un solo comando, che crea il file /etc/apt/sources.list.d/backports.list. Poi aggiorna l’elenco dei pacchetti:

sudo apt update

Ora installa Cockpit dal repository backports:

sudo apt install -t ${VERSION_CODENAME}-backports cockpit

Conferma con Y. Quando aggiorni Cockpit e le sue dipendenze, il progetto raccomanda di usare di nuovo l’opzione -t con il backports, come qui, così che i pacchetti arrivino da lì.

Avviare Cockpit e aprirlo nel browser

Il browser si collega al componente cockpit-ws, che parte quando arriva una connessione al socket cockpit.socket, di solito sulla porta 9090. Secondo la guida di Cockpit sull’avvio, per rendere il pannello disponibile dopo l’avvio del sistema bisogna abilitare il socket:

sudo systemctl enable cockpit.socket

Da un PC della stessa rete apri il browser all’indirizzo https://<indirizzo-IP-del-Pi>:9090. Al posto del segnaposto metti l’indirizzo IP del Raspberry Pi sulla rete di casa: se non lo conosci, la documentazione Raspberry Pi spiega come trovarlo nella sezione «Find the IP address of your Raspberry Pi». Se il browser mostra un avviso sul certificato, accettalo ed entra con nome utente e password del Raspberry Pi: Cockpit usa gli account e i permessi normali del sistema.

La home del progetto elenca cosa puoi fare dal pannello, fra cui:

  • seguire le prestazioni, con metriche che mettono in relazione carico della CPU, uso della memoria, traffico di rete e archiviazione con il journal di sistema;
  • gestire l’archiviazione;
  • controllare i servizi systemd e intervenire su di essi;
  • sfogliare e cercare nei log di sistema, vedere l’hardware e aggiornare il software;
  • usare un terminale integrato.

Quando ti disconnetti, il processo cockpit-bridge termina. Dopo 10 minuti senza attività si chiude da solo anche cockpit-ws.

Limitare Cockpit alla rete di casa

Di default cockpit-ws accetta connessioni sulla porta 9090. La guida su porta e indirizzo spiega come metterlo in ascolto su un solo indirizzo IP con un file drop-in per systemd.

Attenzione: questo passaggio cambia il modo in cui raggiungi il pannello. Se nel file scrivi un indirizzo sbagliato, dopo il riavvio del socket Cockpit non risponderà più dal browser; per rimediare correggi o cancella il file dal terminale del Pi, in locale o via SSH. Vale lo stesso se il router assegna al Pi un indirizzo IP diverso da quello scritto nel file. E non aprire né inoltrare la porta 9090 sul router: Cockpit non va esposto su internet.

Il file va in /etc/systemd/system/cockpit.socket.d/listen.conf. La cartella cockpit.socket.d di solito non c’è, e la guida di Cockpit dice di creare le cartelle mancanti del percorso. Crea la cartella cockpit.socket.d dentro /etc/systemd/system con mkdir preceduto da sudo, poi apri il file con un editor di testo da terminale, sempre tramite sudo. Se il file non esiste, l’editor si apre vuoto e lo crea quando salvi. Il file deve contenere queste righe:

[Socket]
ListenStream=
ListenStream=192.168.1.1:443
FreeBind=yes

Nella terza riga metti l’indirizzo IP del tuo Pi sulla rete locale al posto di 192.168.1.1, e 9090 al posto di 443, così la porta resta quella usata finora. La seconda riga, ListenStream= senza valore, va lasciata così: svuota l’elenco degli indirizzi di ascolto e disattiva la porta 9090 predefinita dell’unità originale. Quando si indica un IP specifico, la guida raccomanda vivamente FreeBind=yes. Salva, chiudi l’editor e ricarica la configurazione di systemd:

sudo systemctl daemon-reload

Poi riavvia il socket:

sudo systemctl restart cockpit.socket

Dal PC ricarica https://<indirizzo-IP-del-Pi>:9090: se compare la schermata di accesso, l’indirizzo è giusto. Se usi firewalld o SELinux, la stessa guida spiega anche come autorizzare una porta diversa da 9090.

Tornare indietro: disattivare o rimuovere Cockpit

Se non vuoi più che il pannello sia raggiungibile dal browser dopo l’avvio, disabilita il socket:

sudo systemctl disable cockpit.socket

Per eliminarlo del tutto non basta rimuovere il pacchetto cockpit: lascia installati i componenti del pannello, a cominciare da cockpit-ws. Usa invece sudo apt purge cockpit cockpit-ws cockpit-bridge cockpit-system cockpit-networkmanager cockpit-packagekit cockpit-storaged, che cancella anche i file di configurazione, e controlla l’elenco proposto da APT prima di confermare. Poi cancella il file /etc/systemd/system/cockpit.socket.d/listen.conf e fai rileggere la configurazione a systemd:

sudo systemctl daemon-reload

Il file /etc/apt/sources.list.d/backports.list, creato durante l’installazione, resta sul sistema: APT continua a usare il repository backports finché non lo togli.

Se qualcosa va storto

  • full-upgrade chiede più spazio di quello libero: controlla lo spazio disponibile e liberane cancellando con sudo apt clean i vecchi pacchetti scaricati, che APT conserva in /var/cache/apt/archives.
  • get_throttled segnala sottotensione: controlla alimentatore e cavo e sostituiscili con modelli di qualità adeguata, perché un’alimentazione scadente può corrompere i dati sul supporto di archiviazione.
  • pmic_read_adc mostra tutti i canali invece di quello richiesto: il nome del canale non è stato riconosciuto. Il comando non dà errore: controlla di aver scritto esattamente EXT5V_V.
  • I comandi di Cockpit per Debian non funzionano: richiedono una shell compatibile POSIX come bash. Se usi fish o simili, apri bash con bash -i e riparti dal comando che carica /etc/os-release.

Documentazione di riferimento

Pagine consultate il 9 novembre 2026:

Leggi anche