Animerade QR-koder som strömmar data mellan två telefoner
Optical TransferQR-koderFountain codesAir-gapÖppen källkod

Optical Transfer - när kameran blir kabeln och QR-koder skickar filer utan nätverk

Mobile Interaction

Ibland uppstår de mest eleganta lösningarna ur den mest basala frustrationen. En utvecklare ville helt enkelt skicka en fil mellan två telefoner - men det fanns inget gemensamt wifi, ingen mobildata och ingen lust att para ihop enheter via Bluetooth. Istället för att ge upp ställde hen en ovanlig fråga: tänk om skärmen och kameran räcker? Resultatet blev Decimen Optical Transfer, ett litet projekt som fått techvärlden att höja på ögonbrynen.

Idén: skicka data med ljus

Konceptet är förbluffande enkelt. Den ena telefonen visar filen som en oändlig ström av animerade QR-koder som flimrar förbi i upp till 60 bilder per sekund. Den andra telefonen riktar sin kamera mot skärmen, läser av koderna och pusslar ihop filen igen. Det enda som passerar mellan enheterna är ljus - ingen nätverkstrafik, ingen parkoppling, ingen app och inga behörigheter utöver kameran.

Utvecklaren, känd som bashalarmistalt på GitHub, byggde hela lösningen som en webbapp med hjälp av Claude Code - i princip över en natt. Den körs direkt i webbläsaren på båda telefonerna, är släppt under den generösa MIT-licensen och kräver varken konto eller installation. Läs mer i projektets GitHub-repo eller i Tom's Hardware genomgång.

Se hur filer strömmas mellan två telefoner enbart via skärm och kamera.

Hur snabbt går det egentligen?

Siffrorna är förvånansvärt respektabla för att bara vara ljus mot en kameralins. Med en iPhone och dess ProMotion-kamera nådde utvecklaren runt 129 KB/sek när telefonen hölls i handen. Med båda enheterna helt stilla klättrade hastigheten mot cirka 186 KB/sek - nära den teoretiska taknivån. Det låter kanske blygsamt jämfört med AirDrop, men det är ungefär 30 gånger snabbare än de sekventiella QR-lösningar som gjordes 2024 och som kröp fram kring 4 KB/sek.

  • Cirka 129 KB/sek handhållet, upp till 186 KB/sek när båda enheterna är stilla
  • Upp till 60 QR-bildrutor per sekund via telefonens vanliga webbläsare
  • Ingen app, inget nätverk, ingen parkoppling - bara kamerabehörighet
  • Öppen källkod under MIT-licens

Den svåra biten: en kanal utan returväg

Det som gör det här tekniskt intressant är problemet utvecklaren behövde lösa. Nästan alla nätverksprotokoll vi bygger förutsätter en returkanal. TCP kan skicka om ett paket eftersom mottagaren kan säga "bildruta 47 kom aldrig fram". En skärm som visar QR-koder för en kamera har ingen sådan möjlighet - det är ren envägssändning. Sändaren vet inte om mottagaren tittar, om ljuset är dåligt eller om kameran råkade tappa en bildruta mitt i en autofokusering.

Den naiva lösningen - att dela upp filen i numrerade bitar och loopa sekvensen - fungerar dåligt. Telefonkameror missar bildrutor hela tiden, och en tappad bit betyder att man får vänta ett helt varv tills den kommer tillbaka. Missar man några bitar per varv konvergerar överföringen aldrig. Och man kan inte lösa det med omsändningar, för det finns ingen kanal att be om omsändning över.

Lösningen: fountain codes

Nyckeln stavas fountain codes - eller mer formellt "rateless erasure codes". Namnet fångar intuitionen: en fontän sprutar ut ett oändligt antal droppar, och du bryr dig inte om vilka droppar du fångar. Du håller bara ut hinken tills den är full.

Istället för att sända bit 1, sedan bit 2, sedan bit 3, gör en så kallad Luby Transform-kodare något smartare: varje bildruta blir en slumpmässig blandning av hela filen, ihop-XOR:ad från flera källblock. Ingen bildruta är "den tredje biten" - varje bildruta är en unik mix. Mottagaren samlar bildrutor i vilken ordning som helst, och när den fått ihop ungefär 15 procent fler bildrutor än antalet ursprungsblock kan den lösa ekvationssystemet och återskapa originalet. Vilka bildrutor som kom fram spelar ingen roll.

Det fina är inte hastigheten. Det är att en begränsning alla behandlar som dödlig - ingen returkanal, förlustkänsligt medium, inget handslag - visar sig ha ett rent, fyrtio år gammalt svar i kodningsteorin.

- Noqta Team, om Decimen Optical Transfer

Varje QR-bildruta är dessutom självbeskrivande: ett 20 bytes stort huvud bär sessions-ID, sekvensnummer, antal block och en hash - men inte listan över vilka källblock som ingår. Mottagaren räknar ut samma slumpmässiga urval från samma frö. En läsvärd teknisk djupdykning finns hos Noqta.

Varför det är intressant för oss

Vi bygger appar och digitala lösningar för kunder som ofta verkar i miljöer där nätverket inte kan tas för givet - industri, fält, vård och säkerhetsklassade sammanhang. Optical Transfer illustrerar en princip vi återkommer till: när en kanal saknar det du är van vid, lönar det sig att gräva i grundforskningen istället för att stapla fler lager ovanpå. Fountain codes är fyrtio år gamla men underanvända, helt enkelt för att de flesta utvecklare aldrig möter en kanal utan omsändning.

Det finns också konkreta användningsfall: air-gap-överföringar där en maskin aldrig får röra ett nätverk, platser med dyr eller opålitlig mobildata, och företagsmiljöer där USB och fildelningstjänster är blockerade men ingen skrivit en policy mot att rikta en telefon mot en skärm.

Skärmar och kameror är de två mest universella I/O-enheterna på planeten. Varje telefon har båda. Att behandla det paret som ett transportlager är en genuint bra idé.

- Mobile Interaction

En viktig brasklapp

"Air-gapped" här betyder optiskt isolerat - inte säkert mot angripare. En kamera riktad mot en skärm är fortfarande en datakanal. Vem som helst som ser skärmen, inklusive en övervakningskamera, ett fönster eller en spegling, tar emot samma sändning. Det finns ingen parkoppling och ingen autentisering. Är innehållet känsligt måste det krypteras innan det blir bildrutor - själva transporten ger dig ingen säkerhet alls.

Slutsats

Decimen Optical Transfer är ett proof of concept, inte en ersättare för AirDrop. Men det är en påminnelse om att de bästa idéerna ofta kommer från att ställa en till synes dum fråga - "tänk om kameran räcker?" - och sedan ha modet att gräva i teorin tills den fungerar. Vi gillar den sortens ingenjörskonst.

Vill ni diskutera detta?

Kontakta oss för en förutsättningslös diskussion om hur vi kan hjälpa er med er digitala satsning.

Kontakta oss