Программист под псевдонимом 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-кодов, применяя специально разработанный высокоплотный цветной код.
