[HN Gopher] Rescuing old printers with an in-browser Linux VM br...
___________________________________________________________________
Rescuing old printers with an in-browser Linux VM bridged to WebUSB
over USB/IP
Author : gmac
Score : 131 points
Date : 2026-04-07 16:33 UTC (6 hours ago)
(HTM) web link (printervention.app)
(TXT) w3m dump (printervention.app)
| redeeman wrote:
| surely a glorious OS like osx would not be without support for
| hardware that linux supports? when will it be year of osx
| desktop?
| akdev1l wrote:
| wdym?
|
| OSX has literally always been supported only on very limited
| hardware so how would it support anything else?
| redeeman wrote:
| did you read what this is about? support for a printer people
| buy in stores. the kinda thing people expect working?
| morpheuskafka wrote:
| If you are using an LLM, wouldn't it have been a lot easier to
| just have the LLM find the relevant CUPS driver decompile or just
| capture the USB traffic, and rewrite it in Go or something
| native? (No need to deal with the system printing framework, the
| goal was just an app that accepts JPEG input.)
| gmac wrote:
| Interesting suggestion: I guess that would have been possible.
| On the other hand I think this is a more general solution, and
| it does minimal reinventing-the-wheel.
| dolmen wrote:
| Or ask the agent to write a Dockerfile (to abstract the build
| environment) that builds CUPS and all your stuff around it
| directl in WASM, instead of targeting x86 and then emulating
| x86 with WASM.
| jojomodding wrote:
| Is there a Docker-to-WASM pipeline, and how does it do
| anything differently from emulating x86?
| hulitu wrote:
| Another AI add.
| hahn-kev wrote:
| This is pretty cool! Thanks for sharing.
| juancn wrote:
| Thank you, loved this and it made me "duh!".
|
| I have an old-ish Samsung laser printer that works perfectly and
| a Linux file server at home and the printer no longer supports
| AirPrint.
|
| I never thought about using the Linux box as an AirPrint server!
| This will free me from all the odd print requests from my kids!
| (probably)
| mikepurvis wrote:
| I have a Samsung ML-1740 kicking around still that I just can't
| bear to part with; I've been meaning forever to RasPi-ify it,
| but it's one of those projects that feels like it's going to
| end up being a rabbit hole.
| HeyMeco wrote:
| ML-1740 is supported by the driver available here:
| https://www.bchemnet.com/suldr/index.html Works on my arm64
| sbc as a cups printer for another samsung printer
| asteroidburger wrote:
| It'll work great if you can get the drivers all aligned
| properly. I've tried a few times to get my 12 year old Brother
| laser setup like that, and each time I end up throwing in the
| towel.
|
| Maybe I'll try it again someday with an LLM assisting.
| SoftTalker wrote:
| I have an old Epson MX80 dot-matrix printer in the closet, have
| thought about getting a Raspberry Pi and setting that up so we
| can wirelessly print to it. But... who would really want that?
| mrighele wrote:
| For a printer like an Epson MX80 an esp32 should be enough to
| share the printer on a raw TCP interface (AppSocket I think the
| protocol is named) on port 9100. It is supported by Windows and
| CUPS.
|
| Very easy implementation as it essentially it just forwards the
| data to the printer. Since it's a raw interface you need the
| proper driver, but luckily Epson provides a Windows 10 driver
| for the Epson MX-80 (!) [1] CUPS doesn't have driver for the
| MX-80 but it has a number of generic Epson drivers and my guess
| is that one of those will work.
|
| The most difficult part is probably the parallel interface
| (unless you have a printer with a serial interface in which
| case it will be much easier)
|
| [1] https://epson.com/Support/Printers/Impact-Printers/MX-
| Series...
| monocasa wrote:
| Isn't cups a de facto apple project? What's the VM getting you?
| yjftsjthsd-h wrote:
| The gutenprint drivers to support the specific printer don't
| support darwin
| monocasa wrote:
| Gutenprint supports macos as a first class citizen, including
| this particular printer AFAICT.
| gmac wrote:
| From the Gutenprint home page, https://gimp-
| print.sourceforge.io/:
|
| As of July 7, 2024 the Gutenprint project has formally
| deprecated MacOS support. This means that no further MacOS-
| compatible binaries will be produced.
|
| Gutenprint has not had an active MacOS maintainer for over
| three years, and the remaining developers lack the
| technical ability to produce MacOS binaries, much less
| undertake the substantial amount of work necessary to
| produce, test, and support binaries on newer (post-
| Mojave/10.14) MacOS releases.
| monocasa wrote:
| It looks like it's just because they had no way to test,
| and bandwidth to deal with it. But should still mostly
| work, once whatever issue (that sounds like app
| notrization) is fixed.
|
| It seems like the better option would have been to fix
| whatever was blocking them just two years ago, rather
| than this wild rube goldberg machine of a Linux VM
| emulated in a browser tab.
| gmac wrote:
| I mean, anyone is welcome to do just that! But I guess
| coding Rube Goldberg machines in JS (to push the
| boundaries of the web) is a thing I really kind of enjoy.
| merb wrote:
| No. Most cups changes nowadays happen in
| https://github.com/openprinting/cups?tab=readme-ov-file
|
| See here for the details:
| https://openprinting.github.io/achievements/#cups-upstream-h...
| monocasa wrote:
| Oh, OK, new information, thanks!
|
| But this driver is older than OpenPrinting's fork from Apple
| CUPS.
| bityard wrote:
| Okay, this is reasonably genius. I have quite a few USB devices
| lying around that are either old enough or were niche enough that
| they don't work on modern _anything_, even Linux. One of them is
| a GameBoy Advance flash cartridge.
| yjftsjthsd-h wrote:
| Oh, there's a thought - v86 supports lots of old DOS/Windows
| versions too, so assuming you could get the right port through
| (probably easy with anything USB, maybe possible with other
| things?) you could probably use your choice of old drivers:)
| leptons wrote:
| Too bad Apple is still preventing the WebUSB spec from being
| standardized. They won't even make suggestions to get it through
| committee because WebUSB might cut into their native app store.
| davsti4 wrote:
| From: https://developer.mozilla.org/en-
| US/docs/Web/API/WebUSB_API "WebUSB provides a way for these
| non-standardized USB device services to be exposed to the web.
| This means that hardware manufacturers will be able to provide
| a way for their device to be accessed from the web, without
| having to provide their own API."
|
| That doesn't sound secure at all!
| monocasa wrote:
| Which is why Firefox doesn't support it either.
| cosmic_cheese wrote:
| Mozilla doesn't want it either.
| DeathArrow wrote:
| I would have asked Claude to write a driver. But this works, too.
| :)
| randusername wrote:
| what the heck we're not in web 1.0 anymore are we
| Gabrys1 wrote:
| > I must apologise that I haven't so far open-sourced any part of
| this that I don't have to. Mainly that's because I think this
| would be an awesomely sticky web property for a printer
| consumables firm to integrate with their sales site. And I'd much
| prefer it if they paid me to white-label it for them, rather than
| just forking a repo and getting it all for free.
|
| They might be interested if they cared at all about the ease of
| use of their printers
| kube-system wrote:
| They are referring to aftermarket ink cartridge companies, not
| the printer OEM.
| jeroenhd wrote:
| These printer makers have the source code and the ability to
| write firmware. If they wanted to support WebUSB, they could
| and would.
| zamadatix wrote:
| The hardest part would probably be convincing someone to pay to
| white label something for which most of the key design choices
| and implementation came from one unfamiliar dev prompting an
| PS18 Claude Code subscription.
| ale42 wrote:
| I'm using an ancient Canon Selphy photo printer... on Windows 11
| without any issues. Using the Windows 7 64-bit driver, worked
| basically out-of-the-box. It's definitely not officially
| supported, but to date it works totally fine.
| gmac wrote:
| Huh, interesting. Is the driver built in to Windows, downloaded
| from Canon, or acquired some other way?
|
| TBH the web app story on Windows isn't ideal anyway because you
| have to install Zadig before it will work.
| ale42 wrote:
| I think I downloaded it from Canon 5-6 years ago. It should
| still be around I guess, but I can share it if needed.
|
| EDIT: you can find it here for example:
| https://asia.canon/en/support/0100304802
| PunchyHamster wrote:
| Doesn't Apple outright uses CUPS in the first place ? Did they
| just removed old drivers in their version ?
| hexmiles wrote:
| I know that it is a heavyweight solution, but it could be useful
| for some situations with old driver/devices/applications. I have
| some old hardware that is compatible only with pre-WinNT OS, and
| I could do something similar to provide a simple solution for the
| end user.
| Narishma wrote:
| Would such old hardware even be able to run a modern browser
| needed for this?
| hexmiles wrote:
| Sorry, I wasn't clear. By old hardware, I meant peripherals
| connected to the computer via serial or USB. We are at a
| level of performance where running an entire VM as a driver
| is kind of feasible, if wasteful.
| simoncion wrote:
| Oh neat. v86 is mentioned in the FOSDEM 2025 slides [0] for
| another wasm port of QEMU. Interesting that what appears to be
| v86's inability to run x86 executables didn't fuck you.
|
| I wonder why the decision wasn't made to use the network sharing
| features of SANE and CUPS, instead of requiring one to use Chrome
| due to the WebUSB dependency. Seems to me that you'd have a _way_
| more general solution if you could usefully deploy your VM both
| in _any_ major web browser and as a standalone program.
|
| [0]
| <https://archive.fosdem.org/2025/events/attachments/fosdem-20...>
| gmac wrote:
| Can you elaborate on how using the network sharing features of
| CUPS would let you achieve the same thing (printing to old USB
| printers) in any major web browser?
| simoncion wrote:
| Given your commercial aspirations, I'm happy to consult on
| your project as a paid contractor.
| gmac wrote:
| Fair enough! I just don't think I fully understand what
| you're suggesting.
___________________________________________________________________
(page generated 2026-04-07 23:00 UTC)