Transferencia Óptica Decimen: Enviando Archivos a Través de la Luz con Códigos QR de Fuente

Explora la Transferencia Óptica Decimen, una herramienta de código abierto que transmite archivos entre dispositivos usando códigos QR animados y codificación de fuente, logrando hasta 130 KB/s sin conexión de red.

En un mundo donde la transferencia de archivos generalmente significa subidas a la nube, emparejamiento Bluetooth o cables USB, hay algo casi mágico en enviar datos a través de la luz. La Transferencia Óptica Decimen (decimen.app) hace exactamente eso: convierte tu pantalla en un transmisor y tu cámara en un receptor, transmitiendo archivos como una secuencia interminable de códigos QR animados. Sin red, sin emparejamiento, sin instalación de aplicaciones—solo dos dispositivos enfrentados.

¿Por Qué Transferencia Óptica?

Los métodos tradicionales de transferencia de archivos dependen de una ruta de red entre dispositivos. Pero, ¿qué pasa si estás en una instalación segura, en una ubicación remota, o simplemente quieres evitar la molestia de configurar una conexión? La transferencia óptica utiliza la interfaz más universal disponible: la pantalla y la cámara. Cada teléfono inteligente las tiene, y funcionan en todas las plataformas sin controladores ni permisos más allá del acceso a la cámara.

La idea clave es que un enlace de pantalla a cámara no tiene canal de retorno. El emisor no puede saber si un fotograma se recibió correctamente. Aquí es donde la codificación de fuente brilla.

La Magia de los Códigos de Fuente

Los códigos de fuente, específicamente los códigos Luby Transform (LT), son una clase de códigos de borrado que generan un flujo infinito de símbolos codificados a partir de un archivo fuente. El receptor solo necesita recolectar un cierto número de símbolos distintos—alrededor de 1.15 veces el tamaño del archivo original—para reconstruir el archivo completo, sin importar qué símbolos se perdieron.

En el contexto de la transferencia óptica, esto significa que el emisor puede transmitir fotogramas continuamente, y el receptor puede descartar fotogramas (debido a desenfoque de movimiento, reflejos o desalineación de la cámara) sin ningún impacto en la corrección. Los fotogramas descartados cuestan tiempo, nunca corrección. Esto es una mejora masiva sobre el fragmentado secuencial, donde un solo fotograma perdido requeriría un mecanismo de retransmisión—imposible sin un canal de retorno.

Cómo Funciona Decimen

El proyecto está construido con TypeScript y utiliza node-qrcode para codificar y zxing-wasm para decodificar. La arquitectura se divide en los directorios send/ y receive/, con un módulo compartido para utilidades comunes.

Cuando abres la aplicación en dos dispositivos, uno va a la página /send/ y el otro a /receive/. El emisor selecciona un archivo (hasta 64 MB) o pega un fragmento de texto. El archivo se comprime con gzip si ayuda, y se divide en fragmentos. Cada fragmento se codifica en un código QR, y el flujo de códigos QR se anima en la pantalla.

La cámara del receptor escanea continuamente la pantalla, decodificando cada código QR a medida que aparece. Los fragmentos decodificados se almacenan, y una vez que se recolectan suficientes fragmentos distintos, el archivo se reensambla. Un hash SHA-256 verifica la integridad antes de que el archivo se ofrezca para descargar.

Rendimiento y Resultados en el Mundo Real

El proyecto reporta un rendimiento útil de 130.5 KB/s en una prueba del mundo real (ver la captura de pantalla en el repositorio). Esto es impresionante para un canal visual. El experimento original del que se extrajo alcanzó 128 KB/s de teléfono a teléfono. El protocolo está diseñado para ser eficiente, y el uso de códigos de fuente asegura que incluso con una alta tasa de pérdida de fotogramas, la transferencia se complete tan pronto como se reciban suficientes fotogramas.

Cómo Empezar

Para ejecutarlo tú mismo, clona el repositorio e instala las dependencias:

npm install
npm run dev # servidor de desarrollo https con HMR

Luego abre https://localhost:5173/send/ en el dispositivo emisor y la URL de red en el teléfono receptor (acepta el certificado autofirmado una vez). Para producción, usa npm run build y sirve la carpeta dist/.

También hay un modo de demostración (npm run demo) que solo permite enviar cargas útiles incluidas, útil para probar sin un archivo real.

Particularidades de Plataforma y Soporte Sin Conexión

La aplicación es una PWA, por lo que funciona sin conexión después de la primera visita y se puede instalar en las pantallas de inicio de iOS y Android. La versión v0.3.0 agregó la prueba de capacidades de Android, reproducción de medios en línea y diálogos de compartir. El proyecto también incluye una compilación independiente que produce dos páginas autocontenidas, que se pueden alojar en cualquier lugar o incluso abrir directamente desde un sistema de archivos.

Consideraciones de Privacidad

Es importante tener en cuenta que la transferencia óptica no está cifrada. Lo que esté en la pantalla del emisor es legible por cualquier cámara apuntada hacia ella. La propiedad que obtienes es sin red, no confidencialidad. Si necesitas privacidad, debes cifrar el archivo antes de enviarlo.

Proyectos Similares

El concepto de transferencia de datos óptica ha sido explorado por otros. El README menciona:

  • mohankumarelec/airgapped-qr-code-transfer: transferencia de archivos QR basada en navegador con compresión y fragmentado secuencial.
  • divan/txqr (2018): QR animado más códigos de fuente en Go, con excelentes escritos sobre por qué la codificación de fuente supera al bucle secuencial.
  • sz3/libcimbar: va más allá de QR por completo con un código de color personalizado de alta densidad diseñado específicamente para este canal.

Estos proyectos muestran que la idea no es única, pero la implementación de Decimen es pulida, bien documentada y de código abierto bajo la licencia MIT.

Conclusión

La Transferencia Óptica Decimen es un ejemplo fascinante de usar hardware cotidiano para propósitos no convencionales. No va a reemplazar el Wi-Fi para transferencias grandes, pero para transferencias rápidas, seguras en el sentido de aisladas, es una herramienta útil. El uso de códigos de fuente es una solución inteligente al problema de no tener canal de retorno, y el proyecto es un gran recurso de aprendizaje para cualquier persona interesada en comunicación óptica o codificación de borrado.

Ya sea que estés en un entorno de alta seguridad o simplemente quieras impresionar a tus amigos transmitiendo un archivo por el aire, Decimen vale la pena probarlo. Y como es de código abierto, puedes sumergirte en el código y ver exactamente cómo funciona.

Fuente

bashalarmistalt/decimen-optical-transfer