[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)