Probablemente todos alguna vez tuvimos que reemplazar un periférico no porque estuviese roto, sino porque dejó de tener soporte en el sistema operativo. Es especialmente brutal para los usuarios de Windows, pero cada vez más también pasa en Linux con hardware antiguo. George MacKerron aparece con una técnica que puede mantener vivos estos dispositivos: correr una computadora x86 minimalista dentro del navegador, con apenas el sistema operativo justo para soportar el dispositivo.

¿Cómo funciona yes-we-scan.app?

En este caso el hardware es un escáner USB y el software resultante toma un emulador x86 en WebAssembly y le suma una capa de pegamento que le permite usar WebUSB para hablar con el hardware del mundo real. Por dentro corre un entorno minimal de Alpine Linux con SANE, una combinación normal para usuarios de Linux pero que nunca existió en una máquina Windows. El resultado es algo que no requiere instalación y se puede ejecutar en cualquier máquina con un navegador suficientemente potente.

¿No es exagerado emular x86 entero solo para escanear?

Podría parecer matar moscas a cañonazos, pero según el autor corre sorprendentemente rápido. En esta primera entrega el blanco son escáneres USB, pero la técnica se puede aplicar a muchas otras piezas de hardware envejecido que perdieron soporte en sistemas operativos modernos.

Los primeros reportes de usuarios sugieren que el rendimiento depende mucho del modelo. Un comentario sobre un Canon LiDE 210 reportó un escaneo de página completa a 600 dpi y 16 bits color en alrededor de 1 a 2 minutos, después de cambiar el driver con Zdiag para que el navegador pudiera acceder al USB. Lento si se trabaja en lotes grandes, pero perfectamente útil para el escaneo ocasional, y radicalmente más barato que comprar una alternativa comercial.

Un problema que también golpea a Linux

El propio Hackaday destaca que el problema dejó de ser exclusivo de Windows. El kernel Linux ya dropeó soporte para CPUs 386 y está a punto de soltar el 486, junto a chips raros como el AMD K5 y el ruso Baikal. Tarjetas de red NE2000 y derivadas también desaparecieron, igual que el EDAC del chipset Intel 440BX que afectaba a Pentium II y III. El soporte para discos MFM se borró por completo. Lo mismo está ocurriendo, según comentarios técnicos del hilo, con muchas placas ISA y PCMCIA antiguas, e iconos de los noventa como SoundBlaster 16 y Gravis Ultrasound.

Para el caso específico de los escáneres, SANE ha resistido la tentación de purgar drivers viejos, pero los distros están dejando fuera el soporte del puerto paralelo que muchos escáneres antiguos requerían. Y el modelo systemd/udev hace cada vez más difícil cargar los blobs binarios propietarios que algunos escáneres necesitaban. Frente a eso, una emulación x86 corriendo en el navegador del usuario se vuelve una salida elegante para no tirar hardware perfectamente funcional a la basura.

Si WebAssembly te suena nuevo, Hackaday hizo un primer acercamiento al tema hace algunos años.