Come un Harmony 600 dato per morto è tornato a sincronizzarsi con i servizi Logitech — con un po' di reverse engineering e un collaboratore artificiale molto paziente.
Qualche settimana fa mi sono ritrovato in mano un Logitech Harmony 600 con un firmware talmente vecchio (0.2) che l'attuale software Logitech non lo aggiornava più (errore ce1005). Il tool online lo rifiutava, il software desktop non ne voleva sapere, e sulla rete la risposta della community era più o meno unica: firmware del 600 introvabile, rassegnati. I servizi legacy sono stati spenti nel 2025 e del firmware giusto non esiste traccia pubblica: né mirror, né archivi, né Wayback.
Il telecomando era un fermacarte. Molto ben costruito, ma un fermacarte.
Cosa avevo in mano
Non molto, a dire la verità. Due Harmony 600: il "malato" con firmware 0.2 e uno più recente con 0.3, da usare come donatore. Poi i dump del firmware fatti con Concordance (il tool open source che sa leggere da questi telecomandi ma non sa scrivere), e un pacchetto firmware ufficiale per Harmony 650 scaricato anni fa: non compatibile col 600, ma potenzialmente utile come esempio del formato che il software ufficiale si aspetta.
L'idea, a dire il vero folle, era: costruire a mano il pacchetto di aggiornamento che Logitech non distribuisce più, usando come firmware il 0.3 letto dall'altro 600, e farlo installare dal software ufficiale stesso.
Il problema è che il formato non è documentato da nessuna parte.
Il collaboratore
Qui entra in scena il vero protagonista tecnico di questa storia: un agente AI (z.ai GLM5.3) con cui ho lavorato fianco a fianco per un'intera giornata. Non il "chatbot che risponde" — dico un agente che ha passato ore a scaricare sorgenti di libconcord, decompilare il software Logitech, scrivere tool, leggere la flash del telecomando via USB, e riportarmi ogni scoperta con la sua brava classificazione: dimostrato, probabile, non dimostrato.
E le scoperte sono state parecchie. Le riassumo per i nerd:
- I dump di Concordance sono troncati a 64 KiB: è un limite hardcoded del tool. Le immagini firmware reali sono più lunghe (~70-77 KB). Traduzione: il firmware "letto" era incompleto.
- Nell'intestazione binaria del firmware c'è un checksum XOR che abbiamo decodificato e validato sulle immagini ufficiali. Una volta capito, è diventato il nostro strumento di certificazione: ogni immagine che ricostruivamo doveva passare quel controllo, byte per byte.
- Abbiamo scritto un piccolo client Python che parla il protocollo HID del telecomando (documentato nei sorgenti di libconcord) e legge la flash oltre il limite dei 64 KiB, in sola lettura — il tool non contiene nemmeno un comando di scrittura, per principio.
- Il pacchetto firmware è uno ZIP con dentro un manifest XML e due "regioni": il firmware vero e proprio e una configurazione incorporata che è specifica per modello (77 byte di differenza fra un 600 e un 650: abbiamo verificato). Quindi niente pezzi del 650: tutto quello che abbiamo impacchettato veniva letto dai 600 stessi.
- Infine la mossa che ha chiuso il cerchio: decompilare il software Logitech 7.7 (è un'app Java, alla faccia della segretezza) per scoprire esattamente cosa controlla prima di flashare. Risposta: un solo gate, su tre campi del manifest. Nessuna firma digitale, nessun controllo di integrità del payload. Il nostro pacchetto passava per costruzione.
A quel punto avevamo il pacchetto candidato, il pacchetto di ripristino (costruito dal backup completo del telecomando, per poter tornare indietro), e la procedura di emergenza documentata. La regola che ci eravamo dati era rigida: niente flash finché ogni rischio non è classificato e mitigato.
Il click
L'aggiornamento in sé è quasi deludente, tanto è stato banale: doppio click sul file .hfw, si apre il software Logitech, appare il pannello di upgrade, un bottone. Pochi secondi di scrittura, il telecomando si riavvia.
E ricompare come Harmony Remote 0-0.3.0.
Verifica finale indipendente: rilettura della flash e confronto byte per byte con l'immagine certificata. Identica. Poi il test vero, quello per cui era nato tutto questo: collegarlo al tool online di Logitech.
Si sincronizza. Il fermacarte è di nuovo un telecomando gestibile, aggiornabile, vivo.
Quindi, chi è stato?
Un lavoro di squadra. L'agente ci ha messo i muscoli tecnici — gestendo script, protocolli e reverse engineering. Io ci ho messo la testa, il contesto e la regia. Da solo questo lavoro mi avrebbe richiesto forse settimane, daltronde l'IA senza una guida non avrebbe scritto una singola riga di codice utile.
Probabilmente non ci fermiamo qui, ora serve un editor per usare il telecomando completamente offline
Chi volesse i dettagli tecnici completi — formato dell'header, algoritmo del checksum, protocollo HID, internals del software Logitech — ho lasciato tutto in una knowledge base e in un dossier con ogni affermazione classificata per livello di evidenza. Se ti capita un Harmony "morto" della stessa famiglia, ora esiste una strada.
Commenti