Why is there no open source firmware for laser or inkjet printers? (2019)
hackaday.io
hackaday.io
https://www.eff.org/pages/list-printers-which-do-or-do-not-d...
"Some of the documents that we previously received through FOIA suggested that all major manufacturers of color laser printers entered a secret agreement with governments to ensure that the output of those printers is forensically traceable."
Are similar techniques used in 3D printers?
Now, the only person dumber than a criminal who would think to try this is a store clerk who would accept these. So it is not an effective crime, unless the effect you want is "jail, quickly". But it is nonetheless a real crime.
Not always - it'll often be safer just to accept the "money" and contact the police directly afterwards.
If you want to print a bomb threat or whatever it would be easier to use a black and white printer, or just fill the whole page with yellow.
The problem isn't in the mechanics of the printing; controlling a carriage along one axis, and a couple of rollers is essentially a 'simpler' version of a 3d printer. Interpreting a representation of the desired output into signals to drive the mechanics is also already a done deal (think in terms of G-code for example).
The real problem is in the existing controller (usually a really niche, old and crappy setup) and the rather low quality of most of the components (remember: this is mass produced stuff, intended to make money on volume, not quality). So you have to keep track of what offsets and adjustments you need to add in order to keep the output of the device somewhat reasonable. And then you need to make sure that the host system knows what to send to the device, which might be 'dumb' data like a bitmap raster, or something faster and higher quality (because the printer can adjust what it does based on what it knows the output needs to be -- this is nearly impossible to do for pre-rendered jobs), at which point you get into PS and PCL which is about as problematic has HTML 4 was, but instead of fixing it for 1 browser, you'd be fixing it again and again for every print job...
In the commercial mass produced stuff, a lot of resources are put in validation and correction algorithms, this is probably as close to a definition of 'secret sauce' you can get, and also really a big problem caused by the need for a manufacturable design that is profitable.
Technically, this could be done slightly easier if the controller and tolerances were better; but at that point you'd have to replace a lot of parts to the point where you're almost building a new printer. Or you have to replicate that special sauce somehow.
That said, people have RE'd the printhead protocols and used them outside of their original printer:
https://spritesmods.com/?art=magicbrush
https://spritesmods.com/?art=inker
https://www.eevblog.com/forum/projects/hacking-an-inkjet-pri...
and there's also lots of patents (of which many are already expired, e.g. https://patents.google.com/patent/US20010045967 ) that document much of what's necessary. Besides the printhead itself, controlling the X/Y axes is easily doable with existing (open) knowledge from the 3D printing/CNC world.
Even better if you have to throw away a few extra cartridges with the scrap machine because they don't fit the new one.
Your other point about DRM ink/toner is orthogonal to that.
Printers haven't substantially changed for years, all the (literally) thousands of new models being churned out are presumably to avoid anyone bring able to standardise on a third-party work-alike ecosystem that would remove the barrier to entry. No one needs the HP CrapJet 2321e to be developed except HP. Most new features (say WiFi or Dropbox printing) could really handled with software or at worst an upgradable control module[1], without redesigning all the mechanics.
Currently, if you want to sell your own ink or toner, you first have to build a printer and defend it from undercutters who would like to not have to pay to build a printer first. Or, if you are the undercutters, you have to constantly play catch up as the printer manufacturers change the products to make your job harder.
An open printer hardware platform is what's required, à la Framework or Prusa 3D printers. The non-printer hardware (ports, WiFi, screen, CPU, power) is almost trivial now. This wouldn't actually be that hard: the data rates are low and the mechanical issues are mostly solved. But without that, you're always going to be making reversed firmware for last year's printers and HP can make the CrapJet 2322 with "new improved ultrasecure" features faster than you can break them, and now you're behind and the 2322 is already being replaced with the 2322a and your users can't even buy the models you support except on eBay.
The other problem is that the incumbents have thoroughly mined the path with overlapping fields of patents, so if you tried it, they'd hammer you into the ground with lawyers.
[1]: basically a slot for an SBC with a standard connector to the printer hardware. Even if you need a new control board because you want a 5G modem or something, you can still use the same printer mechanism.
That said, there are some people modifying the proprietary firmware to disable DRM. They have only done a small number of all of the printers have have such chips in them:
Many decades ago when I was a unix admin, you used to just dump a postscript file to the printer device, and it would print. From a quick google search, every printer I see has postscript drivers - from hp to epson to brother. PS is open, you don't need a driver from the vendor to make a PS file - you can make it with any software you want.
So if this is true (and maybe it's not), then the reason there are no open source printer drivers is because there are, and they've been around always, and the same one will work for all printers, because PS is a standard that's not printer-dependent.
Many, if not most printers do not block 3rd party ink with firmware - it's the driver in windows that blocks that stuff. Many, if not most, block it with a driver in the OS.
Drivers can in essence have hotlists for additional filtering or be given access to communication with an ink chip by the firmware, but AFAIK downgrading a driver doesn't work because what has really happened is it updated the firmware.
A driver upgrade can also never be sufficient for blocking copying on a MFP printer, a standardized net print protocol as you mentioned or using open source drivers either on Linux or under WSL.
It would be great to have an open source firmware like for router, but to what benefit for printers might it be?
Maybe someone will make printers like the framework laptops. I’d love something that could do up to a tabloid format.
If you need 300 dpi laser printing as cheap as possible, getting an old IBM 4019 can give you 25,000 pages for a single toner cartridge. It might be a bit slower though. How much is to be gained from open sourcing it?
Alternatively, one thing we can do is try to buy printers that don’t limit their software across the product line as much.
For example, Brother at the time I last paid attention used pretty capable driver software that was nearly the same (minus physical capacities) for the high end to the low end, meaning with a low to mid range inkjet you could have a ton of functionality.
Certain printers like Zebra and even some a brother label printers allow you to print at a low level using ZPL or other layout languages. Actually, exploring the world of customizing label printing can also uncover a lot of flexible holes in the printer world that can apply to printers.
Being able to say "the firmware comes from an external "neutral" party is a shorthand for "they have no reason to try to bait-and-switch on consumables". The default answer in the SOHO space is "buy a Brother laser" but that puts a lot of trust in a firm that's no doubt under constant temptation to do the exact same thing HP is doing.
It may also mean "broad support is likely because it's speaking well-documented languages." You can make a potato talk to a PostScript, PCL, or old ESC/P dot-matrix, but if you're outside of Windows/MacOS/maybe certain blessed Linux setups, your random cheapo inkjet is a crapshoot.
As an observation, not a dig, the leadership and motivation to produce such a project simply has not precipitated. The FSF itself is probably inappropriate, but a suitable entity might be sprung from those roots.
Put up a bounty for Andrew Tridgell figure(s) to reverse engineer PCL6 or whatever. Clean-room and ethically do it.
I would imagine that printers ride this line where there's not enough benefit to reverse engineer all the fiddly mechanical bits to make it print, extremely limited hardware expansion, and unlike router firmware or general purpose compute software there's little additional new functionality that would be possible.
That said, there are people who hacked printers to make them do other things - for example, the ThunderScan which let certain old dot matrix Apple printers scan: https://www.youtube.com/watch?v=yoUYqLteH9Q but that still needed additional hardware added.
Coding your own PDFs depending on what you are after might not let you run your own firmware but much more programmatically address a lot of things kn the printer via a document template.
The scary parts were the embedding of JavaScript and arbitrary binary data.
I haven’t had to look at or use the pdf spec in a long time but it might still be valuable to some scanned if it’s not super available.
For 99.99% of the other people in the world that need it, the PDF spec is freely available.
Apple brought us CUPS.
Apple bought the company that made CUPS and changed the license as a result.
When I was there we had a black and white laser printer from Imagistics. They did later buy a HP printer but I don’t know what model. It was used just to print letters for their bi-annual member mailing.
A lot of printing was done by external companies, including the member newsletter and of course, all the color printing for events.
Historically, manuals were typeset with free software but the cover art was made by a third party using Quark on a classic era Macintosh and exported to PostScript. The first few book covers that were made using free software were the Introduction to the Command Line and the modern Emacs manual. I made these in Inkscape on Linux.
In real life, in 1980s, when appear first Laser printers, some of them was "software driven", and used special software on computer to render.
And one of example of such "software printer" marketed by Sun, and I know exactly, their software stack was very agile, so people connected Ghostscript instead of standard proprietary render engine.
Other parts are similar to 3D printers slice engines.
Also, render is not simple task, so even when have "hardware" render board, in HP LJ 4M, we always use "dither by software" switch in Photoshop in 90s, because much better quality and lot more properties to tune accessible, vs "hardware" render board.
So, reason is the same, why Photoshop exceeds GIMP - just too much work need to make really good software, but nobody will sell hardware for it, so modern 3D printers ecosystem (with open firmware), appear just because Chinese dumping hardware sales, so appear niche for opensource 3D printing solutions.
The problems include (1) QA, (2) reverse engineering the communication protocol, and (3) support.
#1 and #3 are chronic issues in the OSS world. They're also a problem because there are a ton of printers out there, and getting one to develop/test against eventually becomes an expense and space problem.
And, printers are cheap. There's no real financial incentive to do it.
As an aside, I talked to some guy at Chase years ago, and all he wanted was some way to manage all the printers Chase had. That was it. It was like his personal nightmare. It was literally an impossible task, especially since some unknown percentage of them were no longer manufacturer supported...and many didn't have a manufacturer anymore.
This is why financials want you to go all-digital - so they can dump these behemoth printers that cost a fortune to maintain.
Yes, but not since 30 years. /s