Il merito è di Printervention, un progetto Web ideato da George MacKerron per rimettere in funzione periferiche ormai lasciate sole dai produttori, direttamente dal browser. Tutto nasce da un caso molto pratico: una Canon SELPHY comprata usata su eBay, ancora perfettamente in grado di stampare foto, ma complicata da usare su Windows o macOS recenti senza driver aggiornati. Da lì MacKerron ha provato una strada diversa: portare l’intero sistema di stampa dentro una pagina Web. Non un espediente da smanettoni, ma una piccola macchina Linux avviata nel browser.
Perché i driver abbandonati mandano in pensione stampanti ancora funzionanti
Il problema delle stampanti USB obsolete non riguarda solo vecchi dispositivi dimenticati in cantina per vent’anni. A volte basta un cambio di architettura, come il passaggio da x86 ad ARM, oppure l’addio ai driver a 32 bit, per rendere inutilizzabile hardware ancora in buono stato. È successo con molte stampanti fotografiche compatte, scanner e periferiche professionali legate a software proprietari.
“La stampante funzionava, era il computer a non parlarle più”, ha spiegato in sostanza MacKerron raccontando il suo esperimento. Su Linux, in diversi casi, il supporto arriva da progetti come Gutenprint, che raccolgono driver sviluppati anche tramite reverse engineering. Su Windows e macOS, invece, l’utente resta quasi sempre legato al pacchetto ufficiale del produttore. Quando quel pacchetto sparisce, o non si installa più, la periferica viene di fatto tagliata fuori. Anche se ha ancora cartucce nuove nel cassetto. E una qualità di stampa più che dignitosa.
Printervention porta Linux, CUPS e Gutenprint dentro una pagina Web
La soluzione di Printervention cambia prospettiva: se il sistema operativo non riesce più a gestire la stampante, l’ambiente adatto viene ricreato nel browser. Il progetto usa v86, un emulatore x86 scritto in JavaScript che traduce codice macchina in WebAssembly e consente di avviare un piccolo sistema Linux locale, senza installare programmi esterni. Dentro questa macchina virtuale gira Alpine Linux, una distribuzione leggera, configurata con CUPS e con i driver Gutenprint. CUPS è da anni il riferimento per la stampa nei sistemi Unix-like; Gutenprint, invece, è prezioso perché supporta molti modelli che i produttori hanno lasciato indietro.
L’utente apre una pagina, collega la stampante e carica il file. Dietro, però, succede parecchio: il documento passa alla macchina virtuale, viene elaborato dai filtri CUPS e trasformato in un flusso binario leggibile dalla periferica. MacKerron ha raccontato di aver usato anche Claude di Anthropic per velocizzare alcune parti dello sviluppo e superare intoppi tecnici. Una scelta pratica. Più da laboratorio che da vetrina commerciale.
WebUSB e Chromium: così il browser parla direttamente con la stampante
Il passaggio chiave è WebUSB, un’API disponibile nei browser basati su Chromium che permette a una pagina Web di comunicare con dispositivi USB, ma solo dopo l’autorizzazione esplicita dell’utente. In pratica, il browser vede la stampante collegata via USB, legge dati come vendor ID e product ID, poi li confronta con l’elenco dei driver presenti in Gutenprint.
Per trovare la corrispondenza più vicina, Printervention usa anche un algoritmo basato sui trigrammi, cioè sequenze di tre caratteri, utile per riconoscere modelli con nomi simili o non identici. La configurazione passa poi da comandi tipici di Linux, come lpadmin, eseguiti dentro la macchina virtuale. Quando arriva il momento di stampare, il comando lp produce il flusso dati e il browser lo invia alla periferica tramite trasferimenti USB di tipo bulk.
Nelle prime prove, ha raccontato lo sviluppatore, il passaggio dei byte attraverso una TTY virtuale modificava alcuni caratteri di controllo. Il comando stty raw ha risolto il problema, disattivando trasformazioni non volute. Sono dettagli da officina software. Ma sono proprio questi dettagli a separare una bella dimostrazione da una pagina che esce davvero dal vassoio.
Limiti, sicurezza e usi possibili per le periferiche legacy in azienda
Printervention non cancella tutti i limiti delle periferiche legacy. Il principale, almeno nella configurazione descritta, è il flusso a senso unico: il sistema invia dati alla stampante, ma non riceve un ritorno chiaro sullo stato del dispositivo. Se la carta si inceppa o il toner finisce, l’utente potrebbe non accorgersene dal browser.
C’è poi il nodo della compatibilità: serve un browser con supporto WebUSB, quindi oggi il terreno naturale resta quello di Chromium e derivati. Su Windows, in alcuni casi, può essere necessario usare driver generici tramite strumenti come Zadig, così da permettere l’accesso diretto alla periferica. Anche la sicurezza va considerata con attenzione, soprattutto in azienda. WebUSB richiede il consenso dell’utente, ma dare a una pagina Web accesso diretto all’hardware non è una scelta da prendere alla leggera in ambienti gestiti, dove policy, isolamento e controllo dei dispositivi pesano molto.
Detto questo, gli usi concreti non mancano: recuperare stampanti fotografiche dismesse, tenere in funzione apparecchiature industriali non più supportate, creare laboratori didattici per mostrare come lavorano CUPS, driver e stack di stampa. Il punto più ampio è semplice: un browser moderno, con le API giuste, può ormai sostituire pezzi del sistema operativo. Non sempre conviene. Ma in certi casi può evitare che una stampante ancora funzionante finisca troppo presto tra i rifiuti elettronici.