Програміст під псевдонімом Bashalarmistalt представив відкритий проєкт Decimen Optical Transfer — рішення для передачі файлів між двома смартфонами лише за допомогою екрана та камери. Технологія обходиться без Wi-Fi, Bluetooth, мобільного зв’язку та попереднього сполучення пристроїв.
Один пристрій виводить файл на екран у вигляді безперервного потоку анімованих QR-кодів. Другий наводить на нього камеру й відновлює вихідні дані. Для цього достатньо відкрити сторінку в браузері та надати доступ до камери. Не потрібно встановлювати застосунок, підключати гаджети до спільної мережі чи заздалегідь сполучати пристрої.
Файл, що передається, розбивається на сотні дрібних фрагментів, кожен з яких кодується в окремий QR-код. Послідовність кодів змінюється на екрані зі швидкістю 60 кадрів за секунду. Ключову роль тут відіграє фонтанне кодування (fountain coding). Цей метод дає змогу відновити файл, навіть якщо камера не встигла розпізнати частину кадрів. Якщо кілька QR-кодів із сотень зчиталися неправильно, даних, що залишилися, все одно вистачає для повного відновлення вихідного файлу.
Кожен QR-код, окрім корисного навантаження, містить службовий заголовок розміром 20 байтів. У нього входять ідентифікатор сесії, порядковий номер блоку, розмір і загальна кількість блоків, а також довжина файлу та його хеш. Ці дані потрібні приймальному пристрою для коректного складання фрагментів.
Підписуйтесь на Mediasat у Telegram: тут найцікавіші новини ТБ та телекому
Опублікований прототип передає зображення розміром 512 КБ або 2 МБ — розмір файлу обирається в налаштуваннях відправника. У тестах зі смартфонами в руках швидкість передачі сягала близько 128 КБ/с. Коли обидва пристрої лишалися повністю нерухомими, швидкість зростала до 186–190 КБ/с.
Ідея технології спала авторові на думку, коли він шукав спосіб передавати дані між смартфонами без підключення до спільної мережі. Раніше в масштабнішому експерименті на iPhone з камерою Apple ProMotion він застосував щільніші кадри, багатокодові сітки та колірний канал з корекцією помилок. Результати виявилися схожими — близько 128 КБ/с, а коли пристрої лишалися нерухомими — до 186 КБ/с. Опублікований на GitHub прототип Decimen Optical Transfer зберігає лише базовий механізм приймання даних із цього підходу. Розробник зазначив, що написав код проєкту за допомогою ШІ-асистента для програмістів Claude Code від компанії Anthropic.
За швидкістю Decimen Optical Transfer помітно поступається звичним бездротовим інтерфейсам — Wi-Fi, Bluetooth і навіть NFC. Втім, у технології є потенційна ніша — ситуації, коли ці інтерфейси недоступні, вимкнені або їх використання небажане. У таких умовах звичайні екран і камера смартфона перетворюються на простий оптичний канал зв’язку.
Автор написав вихідний код проєкту на TypeScript та HTML і опублікував його на GitHub під ліцензією MIT. Наразі рішення залишається демонстрацією концепції. Хоча ідея передачі даних через QR-коди досліджувалася й раніше, автор зазначає, що дійшов до власної реалізації самостійно.
Схожі підходи розробляли й інші ентузіасти — Bashalarmistalt звертає увагу на кілька таких проєктів. Так, mohankumarelec/airgapped-qr-code-transfer реалізує передачу файлів через QR-коди в браузері зі стисненням даних та послідовним розбиттям на фрагменти. Цей проєкт автор виявив уже після публічної демонстрації власного рішення. Ще 2018 року з’явився divan/txqr — реалізація на Go, що поєднує анімовані QR-коди з фонтанним кодуванням. Автор цього проєкту також опублікував дві статті про те, чому фонтанне кодування ефективніше за послідовний перебір кадрів. А проєкт sz3/libcimbar іде далі за QR-коди, застосовуючи спеціально розроблений високощільний кольоровий код.
