Hacker News

gmac
Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP yes-we-scan.app

ValdikSS13 hours ago

It's a great concept, but you haven't open-sourced the previous code, as the license requires, and you're yet again apologizing in this project as well, without any code.

Pretty sure you have my code in both projects. I contribute first and foremost to make printers and scanners to work reliably, but also keeping in mind the idea that I could at least try to apply legal actions for companies which violate the license rules one day, as a CUPS/SANE/printer/scanner drivers contributor.

Printer companies generally don't like that: https://xcancel.com/ValdikSS/status/1745898408693371125#m

Cool project though! Hope you can publish the source one day so we can all benefit from it in the future!

gmacop9 hours ago

If you think I’ve done something wrong according to the licences involved here, please do clarify. I had understood that open-sourcing the Linux stuff (as branches of a fork of v86, linked from the /credits page) met all relevant legal obligations, which I absolutely intend to do.

More broadly, it’s unusual for me not to make everything open, and I do feel bad/conflicted about it. But, unusually, I feel like I have identified a possible route to monetising this, and I think open-sourcing all of it risks making that harder.

ValdikSS8 hours ago

Sorry, it's me who needs a reading comprehension lessons. I've read back in printervention website and now again that you didn't open the code that you HAVE to. Because you're apologizing for that, I assumed that you're breaking the license, twice.

After rereading both of your websites again, I should say you've nothing wrong! It's sleepy me who accused you for nothing, sorry.

Linux printing and scanning stack is held on 5 enthusiasts basically, and is quite buggy. Any contributions welcome.

If you want to further improve your project, make it small and fast, you can compile printer filters (most of which work on cups-raster data) with emscripten. This way you don't need to use CUPS, Linux, and x86 emulation. You'll need to write some shims for CUPS libppd functions which many filters use (some don't), and either parse PPD files or convert them into another representation.

Most filters (drivers) are quite simple pipes from stdin to stdout, sometimes they don't use cups functions at all, receiving all the data directly from raster header. Some filters, such as gutenprint, are more complex and use their own backends, but even in this case it's not a hard task: libusb has emscripten WebUSB backend.

stuaxo5 hours ago

OT: But in a way kind of good to know.

Ages ago I got a Canon A3 printer. I've never been sure if it worked properly, as I was never sure if the colours are right.

Next time I unpack it I'll have to try and find the place the 5 enthusiasts hang out - the cups mailing list ?

woolion8 hours ago

If monetization is at odds with open-source, why wouldn't potential customers just wouldn't go to VueScan, as someone posted? I was recently looking at scanners, and saw some brands directly advertise Linux support through this... which means you now have to pay subscription each year to access the expensive hardware you bought.

Thankfully the Avision FB5100 states native Linux support (AFAIK, this is the only flatbed A3 scanner that does), so I'm certainly going to buy this one. I know implementing device support for companies that don't make any effort is hard and thankless, but then we need to divest/invest in the right companies and solutions.

gmacop2 hours ago

My monetization idea doesn't involve charging users, and it's more on the printing side (but most of the source is shared with scanning).

ValdikSS7 hours ago

Any airprint/mopria certified devices don't need drivers to work on Linux, Windows, Android or macOS.

https://mfi.apple.com/account/airprint-search

https://mopria.org/certified-products

skywal_l2 hours ago

My recent experience shows that eSCL is way behind in terms of functionality. If I want lossless scanning from by Brother scanner, I need the proprietary drivers.

ironhaven10 hours ago

If you just install CUPS in a virtual machine (emulated in wasm on the web) what patches do you need to share?

ValdikSS8 hours ago

See above, that's my mistake.

izacus9 hours ago

The same you have to share if you don't use a virtual machine, this isn't hard.

itsthecourier11 hours ago

hope we see that code soon

winkelmann5 hours ago

FYI, if the goal is just to use something like an old Canon LiDE scanner (pretty common/cheap devices with no more driver support) on macOS: SANE runs natively and works great: https://formulae.brew.sh/formula/sane-backends (comes with `scanimage` CLI tool).

gmacop2 hours ago

That is super helpful (I may well use it myself). But I guess a web app probably reaches some non-technical users that CLI tools don't.

hommelix3 hours ago

Sane works out of the box on Linux (at least in my limited experience). There are front ends for Windows and MacOS [1]. No need for a browser in the loop. The browser is becoming more and more Emacs... An operating system that happens to be a browser.

[1] http://sane-project.org/sane-frontends.html

IdiotSavage7 hours ago

With AirSane [1], you can make scanners integrate nicely with macOS. This page [2] has a writeup (in German) how to set it up on a RaspberryPi. On non-macOS devices you can still use the web interface, as demonstrated by the "yes-we-scan" app.

[1] https://github.com/SimulPiscator/AirSane

[2] https://archive.ph/1D2EQ

jdub12 hours ago

Hrm, yes-we-scan and printervention are built on SANE and CUPS respectively, which makes sense. But running them in a whole wasm-emulated Linux kernel and userland seems... like a lot.

jdub12 hours ago

Oh, and:

> I must apologise that I haven’t so far open-sourced any part of this that I don’t have to.

With some blather about commercial opportunities. Which is a weird thing to say without linking to the bits that must be shared (under the terms of the various licenses).

gmacop9 hours ago

There’s separately a /credits page where I’ve done that, linked from the footer. Perhaps I should link it from the apology too. Tell me if you think I’ve not shared what I have to.

mrweasel8 hours ago

If you just need a single scan every now and then and have an old scanner, I can see this being handy. Installing Linux, battling Windows drivers or buying Vuescan (great as it is) might be enough to make most just give up and take a photo of whatever document they where going to scan.

It is a little much, but if it can be made to "Just Work" by booting a Linux kernel in the browser that it pretty cool and impressive. I'm still a little on the fence about my browser having USB support, but this could be handy for dusins of people.

jdub12 hours ago

Ah, it seems like the architecture was designed by a slop machine. OK.

userbinator11 hours ago

RE'ing drivers and porting them is one of those things that AI turns out to be really useful for, and there have been a few of such projects posted here already. But of course the author has to drive it in that direction rather than let it just glue stuff together.

ironhaven10 hours ago

If they reverse engineered the drivers then why do they need a virtual cpu and a Linux kernel to run them. Is this reverse engineering or just installing software in a weird environment?

Speaking of not just gluing stuff together with usb/ip could one make a virtual WebUSB host kernel module that could be used by the Linux kernel USB stack? They most likely would not want to do that because then all of the code would be GPL and would have to be shared with the public.

toast010 hours ago

I don't think a usb host driver is necessarily tainted into being GPL? But if it is, plenty of non-gpl oses that can run SANE.

raffraffraff10 hours ago

I used a raspberry pi 3b+ and an ancient ipad to turn my Canon A3 scanner into a network scanner with an LCD interface (which also just points to the phpscan web page). I tuned to html / js / css to fit the ipad perfectly and only show options that worked with my specific scanner.

keepamovin7 hours ago

Such a cool project. I love seeing what the web platform can do and particularly like the hardware integration capabilities of these type of APIs. I remember playing with a Web USB ADS-B scanner that plugs into your SDR.

Interestingly, it was better executed than many of the downloadable native apps.

hard_times7 hours ago

The idea of emulating a lightweight Alpine Linux in the browser to make this work, without overengineering don't-know-what custom niche solution is definitely intriguing.

I wonder how much work would it be to port a given Linux USB driver to WASM alone?

Aloha13 hours ago

I could also just go buy VueScan, which is cross platform and great.

erasmoss6 hours ago

Reminds me of building a tiny Linux VM to access the APFS share of our Mac-centric uni from Windows. Other students just got a MacBook..

ocdtrekkie11 hours ago

I don't want this enough to subject myself to WebUSB, but I am particularly fond of a no-longer-supported flatbed scanner I own which powers entirely off the USB port. It was super handy if you wanted to scan to like a tablet in a car or something, as long as you had a USB-A port to work with.

brnt7 hours ago

I've plugged in many a scanner (or printer) into my Linux machines, and they always just werk. Which this project probably makes use of: SANE. I think there's even a project porting SANE to Windows (because that's I guess what this is aimed at: scanners that never got a WHQL driver).

DeathArrow11 hours ago

Can this be made into a generic support app for old devices, not just scanners?

indianbunghole3 hours ago

[flagged]

brudgers2 days ago

The ShowHN a few days ago, https://yes-we-scan.app/

hn-front (c) 2024 voximity
source