First of all, thanks for your efforts! Besides gutenprint, quality printing on POSIX systems is in a sad state...
Please consider adding Epson ET-8550 / L8180. It's a decent device for a photographer or a small studio, featuring quite unusual ink set. Currently it is supported by escpr2 that has crippled abilities for quality printing, while Epson's linux printing app is still based on already anscient qt4. I'm not a programmer, yet ready do my best in testing or whatever is needed to make this happen.
Thanks beforehand!
I'd like to second this. I have the smaller variant called the Epson EcoTank Photo ET-8500; it has a smaller 8.5" x 11.7" flatbed scanner and only supports up to 8.5" x 11" paper size. Would love to have better print support for photography on linux and happy to help test, contribute, whatever to help get things moving.
Note: as Nick mentioned there are different names for these two models. From the Rtings review, "In Europe, the ET-8550 is known as the Epson EcoTank L8180, while the ET-8500 is known as the Epson EcoTank L8160." (https://www.rtings.com/printer/reviews/epson/ecotank-photo-et-8550)
Thanks!
JP
Epson has, to my knowledge, never published documentation for their ESC/P-R language, and their
linux drivers for the ET-8500/8550 rely on a proprietary library.
Reverse-engineering how ESC/P-R (and their proprietary library) works is not something I have any particular interest in doing -- I barely have time to handle basic maintenance these days, and there's a very long list of more pressing things that need doing.
Are you sure it requires ESC/PR? I tried some things with my ET-8550, and here's my current impression of things; but I would assume you would have much more insight on this. I've been reading Gutenprint source code and would be happy to experiment with this, so any pointers would be appreciated.
The proprietary Epson driver sends RGB data to the printer. It uses the sometimes mentioned and dreaded RHV2 compression. In any case, just by changing the compression type I was able to get it to take uncomperssed RGB. That's the ESC/PR part. It's my current impression that ESC/PR means "eat RGB, do rasterization on the printer" whereas ESC/P uses process colors and expects the driver to do the raserization.
I see no indication that ESC/PR can be used to print in CMYK+Gray+Photo black, but then I haven't really been able to find any captures of fancier RIPs printing to the printer.
Using ESC/P2, I was able to print the process colors combining some information I found on the web, although so far I only got it to work at 360 dpi (perhaps it needs some of the weaving stuff, or just enabling a different print mode, for higher resolutions?) and didn't try varying the dot size.
Now, I'm pushing just scripted bytes to the printer, so might well work out of the box with what Gutenprint does with other Epson models.
The colors are K=0, M=1, C=2, Y=4, Gray=16, Photo Black=64. There is nothing preventing printing K (pigment matte black) and PB (dye photo black) on the same page; the black inks do not seem to be in any way special.
Things that are a bit unclear to me:
Looking at Gutenprint, some of the closer printer models are probably XP-15000 (another six ink printer, except with Red instead of Photo Black—crucially, it also has Gray). It uses Claria Photo HD inks instead of the Claria (ET) Premium inks of the ET-8550. There are also printers that use Light Cyan and Light Magenta. Someone on the web had an Epson representative say that the inks ET-8550 uses are "essentially the same" but with Gray and PB replacing LC and LM. It feels like XP-15000 would be a good starting point to try to get this to work in Gutenprint?
How much programming/redesigning, as opposed to calibrating, do you think it takes to support CMYK+GY+PB as an ink set? Based on above, I'd guess we have a good starting point for calibration, especially if the XP-15000 Gray is the same. Perhaps the 15000 uses the Photo Black ink, so the matte black needs calibrating. Are the calibrations fundamentally for the whole set of inks, so that there's not much that can be reused if the Red is not available? Does Gutenprint somehow intelligently calculate what to do based on what inks are available, or do I need to implement some CMYK+GY without Red code somewhere?
How do people usually debug/try out commands with the printer? Do you send them one by one to the printer? I've seen that the printer ejects the page on error, which is likely useful to tell where we went wrong. OTOH the printers also seem to send a status back periodically, but only over USB?
Does anyone know if it's possible to cancel/reset the printer over network? :D I'm quite frustrated at it getting stuck to "Printing..." or "Canceling..." and needing to interact with the touch screen on the printer.
I think next I'll try to just print something on it using Gutenprint XP-15000 driver and see what goes wrong apart from the red ink.
I got it to work by cloning the XP-15000 driver, including at 1440 dpi, though not yet with all the nozzles aligned (I think "headOffset").But I didn't get it to use Gray.
Looking at the ink xml files:
I have a few questions / deductions that I'd like to verify. I'm sorry for this many questions; perhaps these are best taken as indicative of areas where I'd need pointers.
<Shades>block in the ink files—I assume those define how black gray is or how cyan light cyan is?<channel name="standard_cyan" index="0">do? Should those just be numbered from 0 on, arbitrarily?escp2_ink_typewith values like 16, 18 or 19. What does this do? Somehow select e.g. glossy vs matte inks? How do these get mapped to the ink sets/groups/lists?@Sami Liedes, I can't help with any of those questions but happy to help test anything you're working on with my ET-8500. Was pumped to see the email notification and your thorough digging!
I just joined SourceForge to reply here and to subscribe. I just recently purchased an ET-8550 and would LOVE to be able to use Gutenprint to make use of extended ICC profiles without needing to boot into Windows. I'm going to DL to source and try to follow along.
BIG THANK YOU to Sami for pursuing this!!!
Then I should probably give an update.
My branch of gutenprint at https://github.com/sliedes/gutenprint/tree/msg-20250719 (tagged as of today) is a bit of a mess, but
Instead of doing all the calibration stuff, I decided to move on to a model where I pass the printer the process colors (raw amounts of CMYKk) and only have Gutenprint do the dithering. I'm printing on rather funky papers so it helps to have that control anyway. I don't know if there really are any workflows that use CMYKk, although obviously you could do that with a CMYK workflow—you'll just have to linearize the ink amounts somehow (or calibrate the gutenprint driver; I believe there are even instructions for that somewhere in the Gutenprint documentation); I'm making it up as I go.
Maybe there would have been an easier way to do this, but I ended up bypassing CUPS and PDF; https://github.com/sliedes/gutenprint/blob/msg-20250719/src/testpattern/printraw.c (yes, I know, the directory doesn't make sense; I just copied testpattern.c and used it as a template) contains code to read a 5-channel TIFF and produce the PCL that needs to be sent to the printer to print a dithered version of it. Not sure if that will be helpful for anybody else. Also, as a word of warning, it works on the raw ink amounts, and turns out that the maximum is a lot. I get nice pastel colors by using 5% of the maximum of ink (that is, C+M+Y+K+k <= 0.05 * 255). 50% is already quite dark.
What I think it is is a solid beginning that has all the important printer control functionality working and showing that (and how) the ET-8550 can be controlled using ESC/P2.
Thanking you again, Sami. I understand this is a work-in-progress. That, in itself, gives more hope than if this printer was simply being ignored. I wish I could offer more to the project, but I fear this is all (way) above my level.
But who knows? Maybe I'll surprise myself ;-)