Rescuing old printers with an in-browser Linux VM bridged to WebUSB over USB/IP
5 hours ago
- #WebUSB
- #Printer Revival
- #Linux Emulation
- Acquired an old Canon SELPHY photo printer from a friend, discovering it was unsupported on modern Macs and Windows, but found a solution using Linux.
- Set up the printer on a Manjaro Linux machine with CUPS and Gutenprint, shared it over AirPrint for family use, enabling easy photo printing with CMY color magic.
- Developed a web app using v86 to emulate Linux in the browser, leveraging WebUSB for printer connection, aiming to make old printers usable without Linux expertise.
- Iterated through bridging methods: initially a custom CUPS backend with data transfer over TTY, then using 9p filesystem, before settling on USB/IP and tcpip.js for bidirectional communication.
- Added features like PDF embedding for proper photo sizing, HEIC to JPEG conversion with ICC profile retention, affiliate links for consumables, and basic telemetry.
- The app, printervention.app, is tested on select photo printers, with plans for broader Gutenprint support and potential commercialization or white-labeling.