Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP
2 days ago
- #WebUSB
- #Scanner Emulation
- #Legacy Hardware
- Yes We Scan enables old USB scanners to work with modern computers through a web app.
- It uses v86 to emulate an x86 CPU in the browser, running SANE on Alpine Linux.
- A custom C program, aided by Claude, connects to the scanner and streams data via the hypervisor console.
- Scan data is processed in the browser: previewed on a <canvas> or compressed to JPEG/PNG via Web Workers.
- USB/IP on Linux packages USB data into TCP packets, with tcpip.js handling Ethernet-to-TCP/IP conversion in JavaScript.
- WebUSB bridges the USB/IP packets to the computer's USB hardware.
- Initially developed from printervention.app, the app has been tested on a Canon scanner but supports many models.
- The code is not open-sourced except where necessary, as of May 2026.