Trasferire un file tra due dispositivi vicini significa quasi sempre appoggiarsi a una rete WiFi, al Bluetooth, a un cavo USB oppure a un servizio cloud. Decimen Optical Transfer prova a eliminare tutti questi passaggi: trasforma il contenuto in una sequenza molto rapida di codici QR mostrati sullo schermo del dispositivo sorgente. La fotocamera del dispositivo ricevente cattura i fotogrammi e ricostruisce i dati. Il display diventa il canale attraverso cui i dati passano da un dispositivo all’altro.
L’idea richiama tecnologie storiche che hanno preceduto l’arrivo degli smartphone: le vecchie porte a infrarossi, i modem che trasmettevano dati convertendoli in segnali audio e alcuni sistemi industriali di comunicazione ottica sfruttavano un canale fisico separato dalle normali reti dati. Anche i QR animati non rappresentano una novità assoluta: diversi progetti hanno già sperimentato la trasmissione di blocchi binari tramite immagini in successione. Decimen, però, riunisce il meccanismo in una web app open source che funziona dal browser, senza account, associazione tra dispositivi o applicazioni native.
Il progetto supporta file fino a 64 MB e frammenti di testo fino a 4 MB. L’esperimento dal quale deriva ha raggiunto circa 130 KB/s tra due telefoni: non sono prestazioni paragonabili a WiFi Direct, AirDrop, Quick Share o a un cavo USB moderno. Tuttavia, Decimen funziona sempre, anche quando tra i dispositivi non esiste alcun percorso di rete utilizzabile.
Come trasferire un file con Decimen
Sul primo dispositivo si apre la pagina di invio, si fa clic su Send per poi selezionare un file oppure incollare un testo. Lo schermo comincia a mostrare codici QR che cambiano più volte al secondo. Sul secondo dispositivo si apre la pagina di ricezione, si concede al browser l’accesso alla fotocamera e si inquadra il display del mittente.

Non serve che i due device si trovino sulla stessa LAN; essi non devono nemmeno conoscere i rispettivi indirizzi IP. La web app richiede naturalmente una connessione per il primo caricamento, ma usa un service worker e una cache locale per continuare a funzionare offline nelle visite successive. Può inoltre essere installata come Progressive Web App (PWA) su iOS e Android.
La documentazione consiglia di usare come mittente il dispositivo dotato dello schermo più grande, aumentare la luminosità, tenere stabile il ricevitore e fare in modo che il QR occupi una parte ampia dell’inquadratura. Riflessi, vibrazioni, messa a fuoco incerta e una frequenza di aggiornamento poco adatta riducono il numero di fotogrammi decodificati e, di conseguenza, la velocità effettiva.
Un laptop che trasmette verso uno smartphone può quindi risultare più efficace di due telefoni tenuti in mano. La qualità della fotocamera conta, ma non è l’unico fattore: incidono anche la luminosità del pannello, il tempo di esposizione, il refresh rate, il browser e la capacità del dispositivo di elaborare più immagini senza saturare la CPU.

Perché una normale sequenza di codici QR non funziona
Un collegamento schermo-fotocamera è sostanzialmente unidirezionale. Il ricevitore non dispone di un canale di ritorno attraverso il quale chiedere: “Rimandami il blocco numero 352“: alcuni fotogrammi finiranno inevitabilmente persi a causa del movimento, della sfocatura, dell’autofocus o della mancata sincronizzazione tra refresh del display ed esposizione della fotocamera.
Con una sequenza tradizionale numerata, la perdita di un solo QR costringerebbe il ricevitore ad attendere il completamento dell’intero ciclo prima di rivedere il frammento mancante. Per un file composto da migliaia di codici, il sistema diventerebbe presto lento e frustrante.
Decimen affronta il problema con i fountain code, codici progettati per distribuire continuamente informazioni ridondanti. Il file da trasmettere è prima suddiviso in blocchi; ogni fotogramma non contiene semplicemente uno di quei blocchi, ma il risultato dell’operazione XOR applicata a un sottoinsieme pseudocasuale di essi.
Il ricevitore non deve quindi raccogliere una serie precisa nell’ordine corretto. Gli basta acquisire un numero sufficiente di fotogrammi distinti, anche disordinati, per risolvere progressivamente le combinazioni e recuperare i blocchi originari.
La stima indicata dal progetto è pari a circa K moltiplicato per 1,15: se servono teoricamente K blocchi indipendenti, nella pratica il ricevitore deve raccogliere approssimativamente il 15% di fotogrammi in più. Non si tratta di una soglia matematica immutabile: dipende dalla distribuzione generata e dalla qualità dei frame acquisiti. Tuttavia, una perdita rallenta il trasferimento, ma non obbliga a ripartire da zero.
Cosa contiene ogni QR animato
Ogni fotogramma include un header di 20 byte con i parametri necessari per interpretare il flusso. Sono presenti, tra le altre informazioni, l’identificatore della sessione, il numero di sequenza, la quantità e la dimensione dei blocchi, la lunghezza complessiva e un riferimento hash.
Il formato auto-descrittivo permette al ricevitore di agganciarsi anche quando la trasmissione è già iniziata. Non esiste una fase di handshake: la fotocamera può iniziare a leggere in qualunque momento.
All’interno dei dati codificati trova posto un contenitore che conserva il nome originale del file, il MIME type, la lunghezza e l’hash dei byte iniziali. Il programma applica la compressione gzip soltanto quando produce una riduzione reale delle dimensioni. File già compressi, come JPEG, MP4, ZIP o PDF contenenti molte immagini, spesso non ottengono benefici significativi.
Terminata la ricostruzione, Decimen calcola il digest SHA-256 e lo confronta con quello registrato nel contenitore. Se i valori non coincidono, il browser non propone il file come correttamente ricevuto.
Cosa rimane memorizzato sul dispositivo
Decimen non usa server remoti per trasferire i contenuti: file e testi non vengono caricati su un’infrastruttura esterna, perché il passaggio avviene direttamente tra il display del mittente e la fotocamera del ricevente. Il server che ospita la web app distribuisce soltanto HTML, JavaScript, componenti WebAssembly e le altre risorse necessarie al funzionamento dell’interfaccia; non interviene nella trasmissione e non riceve una copia dei dati inviati.
L’elaborazione resta quindi confinata ai due dispositivi. Sul ricevente, i frammenti di testo rimangono nella memoria della scheda del browser e scompaiono quando la pagina viene chiusa o ricaricata. I file trasferiti, invece, finiscono nella cartella di download secondo le normali regole del browser e del sistema operativo.
Chi non volesse dipendere neppure dall’istanza pubblica può adottare Decimen in self-hosting. Il codice sorgente è disponibile su GitHub con licenza MIT: si può clonare il repository, compilare l’applicazione e pubblicarla su un server interno, su una macchina locale o su un’infrastruttura controllata dall’organizzazione. Anche in questa configurazione il server distribuisce soltanto l’applicazione; lo scambio dei file continua a svolgersi tramite il canale ottico tra schermo e fotocamera.
Dove Decimen può avere davvero senso
Il progetto non sostituisce gli strumenti di condivisione più noti e affermati. Per trasferire foto e file pesanti tra due telefoni collegati alla stessa rete, Quick Share, AirDrop o PairDrop risultano molto più rapidi; per trasportare molti gigabyte di dati, un cavo resta imbattibile. Decimen diventa interessante nei casi in cui creare una connessione diretta risulta scomodo, vietato o tecnicamente impossibile.
Si può pensare a un computer isolato dalle reti che deve esportare un piccolo log, a un laboratorio nel quale non si vogliono collegare supporti USB, a due dispositivi appartenenti a reti segregate oppure a uno smartphone aziendale sul quale l’installazione di applicazioni e il pairing Bluetooth risultano bloccati.
L’esistenza di strumenti come Decimen ricorda che una postazione air-gapped, ovvero completamente separata dalle altre reti, non è automaticamente impermeabile. In ambienti ad alta sicurezza, telecamere, smartphone e dispositivi ottici vengono esclusi proprio perché possono registrare informazioni mostrate su uno schermo.
Per uso personale, Decimen resta soprattutto una dimostrazione tecnica ben riuscita. Mette in risalto come browser, WebAssembly, Web Worker, fotocamere accessibili tramite MediaDevices e fountain code possano trasformare due normali dispositivi in una coppia trasmettitore-ricevitore senza infrastrutture dedicate.