Live data from Hacker News

Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

yes-we-scan.app

11–20 of 37 posts

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#11
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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#12
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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#13
post #7

Earlier quoted context omitted.

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

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.

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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#14
post #4

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…

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

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#15

Earlier quoted context omitted.

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.

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…

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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#16
post #4

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…

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

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

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#17
post #4

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…

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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#18
post #6
post #5

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.

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

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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#19
post #5

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.

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.

Re: Reviving old scanners with an in-browser Linux VM bridged to WebUSB over USB/IP

#20
post #17
post #4

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…

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 i…

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.

Post reply on HN