Controller della scheda portante¶
La scheda portante (carrier board) dell’HALPI2 include un microcontrollore RP2040 che gestisce l’alimentazione, monitora il sistema e controlla i LED del pannello frontale. Il controller funziona indipendentemente dal Compute Module: è attivo dal momento in cui viene collegata l’alimentazione di ingresso, prima che il sistema operativo si avvii e dopo che si è spento. Il Compute Module comunica con esso tramite I2C (bus 1, indirizzo 0x6d) attraverso il demone HALPI.
Questa pagina descrive le modalità di funzionamento, le transizioni di stato e la configurazione del controller. Documenta la versione 3.3.x del firmware. Per l’uso di tutti i giorni non è necessario leggere nulla di tutto questo — vedere invece Uso quotidiano.
Modalità di funzionamento¶
Il controller funziona in una di due modalità, a seconda che il demone HALPI stia comunicando con esso oppure no.
Modalità Co-op¶
La modalità Co-op è la modalità di funzionamento normale. È attiva quando il demone HALPI (halpid) è in esecuzione e comunica con il controller. L’immagine HaLOS preinstallata e tutte le immagini dei sistemi operativi di Hat Labs includono il demone.
In modalità Co-op:
- Il controller e il demone si scambiano dati in tempo reale: tensioni, corrente, temperature e stato.
- Gli eventi di mancanza di alimentazione vengono comunicati al demone, che avvia uno spegnimento controllato del sistema operativo.
- Il timer del watchdog protegge dai blocchi del sistema operativo (vedere Protezione tramite watchdog).
- La configurazione può essere letta e modificata con lo strumento da riga di comando
halpi.
Modalità Solo¶
La modalità Solo è la modalità di ripiego. Il controller vi entra quando non c’è comunicazione con il demone:
- durante l’avvio, prima della partenza del demone
- se il demone non è installato, è stato disabilitato o si è arrestato in modo anomalo
- sui sistemi operativi privi di supporto per HALPI2
In modalità Solo il controller protegge comunque dalla mancanza di alimentazione, ma con un meccanismo più rudimentale: richiede lo spegnimento simulando pressioni del pulsante di accensione e non può sapere se il sistema operativo ha davvero completato lo spegnimento in modo controllato.
Affidabilità della modalità Solo
La modalità Solo offre una protezione essenziale, ma è meno affidabile della modalità Co-op. Le pressioni simulate del pulsante non funzionano se il sistema operativo è bloccato. Se si utilizza un sistema operativo personalizzato, installare il demone HALPI — vedere Altre distribuzioni Debian.
Mancanza di alimentazione e sequenze di spegnimento¶
Il controller monitora continuamente la tensione di ingresso. L’alimentazione di ingresso è considerata assente quando la tensione di ingresso scende sotto 9,0 V. Un timer di interruzione di corrente (predefinito 5 secondi) distingue i disturbi brevi dalle interruzioni reali: i supercondensatori coprono l’intervallo e, se l’alimentazione ritorna entro il tempo del timer, non accade altro.
Sequenza di spegnimento in modalità Co-op¶
- Il demone rileva la mancanza di alimentazione dalle misure di tensione del controller.
- Il demone attende che trascorra il limite di tempo di interruzione (predefinito 5 secondi).
- Il demone esegue il comando di spegnimento configurato (predefinito
/sbin/poweroff). - Il sistema operativo si spegne in modo controllato alimentato dai supercondensatori.
- Il controller rileva che il Compute Module si è spento e disattiva la linea da 5 V.
- Se lo spegnimento non si completa entro 60 secondi, il controller forza lo spegnimento.
- Il sistema resta spento finché l’alimentazione di ingresso non ritorna, quindi si riavvia automaticamente.
Sequenza di spegnimento in modalità Solo¶
- Il controller rileva la mancanza di alimentazione e avvia il timer di interruzione di corrente (predefinito 5 secondi).
- Allo scadere del timer, il controller simula una doppia pressione del pulsante di accensione.
- Il sistema operativo risponde e avvia uno spegnimento controllato alimentato dai supercondensatori.
- Se lo spegnimento non si completa entro 60 secondi, il controller forza lo spegnimento.
- Il sistema resta spento finché l’alimentazione di ingresso non ritorna, quindi si riavvia automaticamente.
Comportamento di riavvio dopo uno spegnimento da software¶
Uno spegnimento avviato da software mentre l’alimentazione di ingresso resta disponibile (ad esempio con il comando shutdown o dal menu del desktop) termina nello stato powered down (spento). Ciò che accade dopo dipende dall’impostazione di configurazione auto_restart:
auto_restartdisabilitato (impostazione di fabbrica sulle unità prodotte dall’inizio del 2026): il sistema resta spento finché l’alimentazione di ingresso non viene tolta e ridata o finché non viene premuto un pulsante di accensione.auto_restartabilitato (valore di ripiego del firmware e impostazione di fabbrica sulle unità precedenti): il controller riavvia il sistema dopo 5 secondi, in modo che un sistema non presidiato non resti spento a causa di uno spegnimento accidentale.
L’impostazione si modifica con halpi config set auto_restart <true|false>.
La pressione di un pulsante di accensione, o lo spegnere e riaccendere l’alimentazione di ingresso, riavvia sempre il sistema, indipendentemente dall’impostazione auto_restart.
Protezione tramite watchdog¶
In modalità Co-op un timer watchdog protegge dai blocchi del sistema operativo:
- Il demone deve inviare al controller un segnale di feed del watchdog a intervalli regolari.
- Se nessun feed arriva entro il timeout del watchdog (predefinito 10 secondi), il controller considera l’host non rispondente, mostra la sequenza dei LED di allarme (tutti i LED rossi fissi) e spegne e riaccende il Compute Module per ripristinare il funzionamento.
- Il timeout è configurabile con
halpi config set watchdog_timeout <seconds>.
Standby¶
Lo standby spegne il Compute Module mentre il controller resta attivo, in attesa di una riattivazione programmata:
# Enter standby, wake up after a delay (seconds)
halpi shutdown --standby --time 3600
# Enter standby, wake up at a given time (local time; append Z or an offset for UTC)
halpi shutdown --standby --time "2026-08-13 06:00:00"
Durante la transizione tutti i LED sono blu fissi; in standby sono rossi attenuati. Il controller riavvia il sistema all’orario programmato, alla pressione di un pulsante di accensione o dopo che l’alimentazione di ingresso è stata tolta e ridata.
Riferimento dei LED di stato¶
I cinque LED RGB del pannello frontale riflettono lo stato del controller. Questa tabella è la mappatura di riferimento dagli stati del controller alle sequenze dei LED; la pagina Uso quotidiano ne presenta una versione semplificata.
| Stato del controller | Sequenza dei LED |
|---|---|
| PowerOff (nessuna alimentazione di ingresso utilizzabile; controller alimentato dalla carica residua) | LED 5 rosso fisso |
| OffCharging | Barra rossa che si riempie durante la carica dei supercondensatori |
| SystemStartup | Scorrimento arcobaleno, quindi un ciclo di colori fissi |
| OperationalSolo | Barra gialla del livello di carica |
| OperationalCoOp | Barra verde del livello di carica |
| BlackoutSolo | Barra arancione del livello di carica |
| BlackoutCoOp | Barra verde scuro del livello di carica |
| BlackoutShutdown, ManualShutdown | Barra viola del livello di carica |
| PoweredDownBlackout, PoweredDownManual | Tutti spenti |
| HostUnresponsive (timeout del watchdog) | Tutti rossi fissi |
| EnteringStandby | Tutti blu fissi |
| Standby | Tutti rossi attenuati |
| Allarme di sovratensione dei supercondensatori | Tutti i LED lampeggianti in rosso |
Nelle sequenze a barra del livello di carica, ogni LED acceso rappresenta un volt di tensione dei supercondensatori:
| LED | Intervallo di tensione |
|---|---|
| LED 1 | 5,0–6,0 V |
| LED 2 | 6,0–7,0 V |
| LED 3 | 7,0–8,0 V |
| LED 4 | 8,0–9,0 V |
| LED 5 | 9,0–10,0 V |
Parametri di configurazione¶
La configurazione è memorizzata nella memoria flash del controller e viene conservata anche spegnendo e riaccendendo il sistema. Si legge e si modifica con halpi config — vedere la Guida al software.
| Parametro | Valore predefinito | Descrizione |
|---|---|---|
auto_restart |
false sulle unità attuali (impostato al collaudo di produzione); valore di ripiego del firmware true |
Riavvio automatico 5 s dopo uno spegnimento da software in presenza di alimentazione di ingresso |
watchdog_timeout |
10 s | Timeout del watchdog in modalità Co-op |
power_on_threshold |
8,0 V | Tensione dei supercondensatori richiesta prima dell’accensione del Compute Module |
solo_power_off_threshold |
5,5 V | Tensione dei supercondensatori alla quale il controller forza lo spegnimento in modalità Solo |
solo_depleting_timeout |
5 s | Timer di interruzione di corrente in modalità Solo |
led_brightness |
48 | Luminosità dei LED del pannello frontale (0–255) |
Il timer di interruzione di corrente della modalità Co-op e il comando di spegnimento sono impostazioni del demone, configurate in /etc/halpid/halpid.conf (blackout-time-limit, predefinito 5 s; poweroff, predefinito /sbin/poweroff).
Informazioni correlate
- Uso di tutti i giorni: vedere Uso quotidiano
- Dettagli sul sistema di alimentazione: vedere Alimentazione in dettaglio
- Aggiornamenti del firmware: vedere Guida al software
- Sorgenti del firmware e protocollo I2C: vedere il repository
HALPI2-firmware