A developer acquired an old Canon SELPHY photo printer unsupported by modern Mac/Windows drivers and built a web app called printervention.app to revive it. The app runs Alpine Linux with CUPS and Gutenprint inside a v86 x86 emulator in the browser, compiled to WebAssembly. WebUSB connects the browser to the physical printer, while USB/IP and tcpip.js bridge the emulated Linux USB stack to WebUSB bidirectionally. Additional features include hand-rolled PDF generation to fix paper sizing, HEIC-to-JPEG conversion via libheif-js and wasm-mozjpeg, and telemetry stored in a Neon Postgres database. The author also prototyped a scanning app using SANE with the same architecture. Claude Code was used extensively throughout development.

9m read timeFrom printervention.app
Post cover image
Table of contents
I got an old photo printerLinux can share it over AirPrintNot everyone runs LinuxBut nearly everyone can use a web appHow the web app worksBridging CUPS and WebUSBMaking the bridge two-wayFurther tweaksWhat’s next

Sort: