Printing to the IPP network printer

Hello.
Lately I spend several days struggling with network printing in openSUSE. I have one machine running Leap 15.1 with three USB printers connected to it. They are:
EPSON L132 - using the proprietary Epson drivers (link)
HP Deskjet 930C - using the commercial Turboprint driver
HP Deskjet Ink Advantage 3835 - using the open source HPLIP driver

I was trying to add these printers on another machine within the same LAN, running the same OS.
As such, I configured Firewalld to allow CUPS and the IPP services on both sides, opened http://localhost:631 on the client and added the first printer using the URI:
ipp://192.168.88.11:631/printers/EPSON_L132_Series
Where 192.168.88.11 is the printing server and EPSON_L132_Series is the correct printer name. Then I selected the proper PPDZ provided by Epson, completed the setup and tried to print something.
The CUPS system responded with the ‘Filter failed’ message and the printer remained silent.
I set up my older Deskjet 930C with Turboprint, using the same URI scheme. It added correctly and I was able to see the ink level on the client. I could even do the nozzle check remotely, which triggered printing the self-test page built right inside the printer firmware. However, I could not print anything - the TurboPrint monitor would pop-up as if the page was being printed, but nothing was really done. No ‘Filter failed’ message was there in case of TurboPrint.
The third printer was a rather modern HP multi-function device with its own Wi-Fi hot spot. I was able to add it using the ‘hp-setup’ program from HPLIP without dealing with my print server machine.

First, I checked the behavior of my IPP setup by testing elementaryOS and Rosa distros in their live modes. No issues were present within these systems after the same steps - all remote USB printers could print just fine.
Then I returned to openSUSE, disabled FirewallD on both the client and the server, added my user to lp, lpadmin groups (just in case), but it did not help.

I googled around and found similar topics:
https://forums.opensuse.org/showthread.php/537731-No-Printing-with-quot-Filter-failed-quot
https://forums.opensuse.org/showthread.php/509984-Print-job-stopped-after-Filter-failed

However, I did not have anything like that in my CUPS error log. I was already desperate before I finally found the solution here:
https://forums.opensuse.org/showthread.php/536803-Epson-4530-printer?p=2910668#post2910668

In my case CUPS tried to filter the task twice: one time on the client side, and the second time on the server’s side. I edited the PPD file on the client and changed the folllowing line:

*cupsFilter:    "application/vnd.cups-raster 0 /opt/epson-inkjet-printer-201411w/cups/lib/filter/epson_inkjet_printer_filter"

to

*cupsFilter: "*/* 0 -"

After that all my headaches were gone. My printers started to print everything like a charm!
However, I feel that my workaround is not the most elegant solution, especially given the fact that cups-filters in other Linux distros work correctly out of the box. Maybe I am missing somthing?

P.S. Thanks in advance and sorry for the wordy description!

As you’ve found when sharing printers like that, the CUPS client needs to pass the print to the server as a raw print job ie no filter. So, the printer is configured as a raw printer.

However, I generally don’t define print queues explicitly for this situation. I let the CUPS server on each machine discover the shared printers via Avahi as described here

https://wiki.archlinux.org/index.php/CUPS/Printer_sharing#DNS-SD_advertisement

No configuration is then needed apart from firewall adjustments for avahi and IPP perhaps.

The concepts are also discussed in this Debian wiki page…
https://wiki.debian.org/CUPSPrintQueues

HP Deskjet 930C is supported by a hplip.

https://support.hp.com/ru-ru/product/hp-deskjet-930-932c-printer-series/25305/model/19033/document/bud07406

Printer command language - HP PCL Level 3 enhanced

So you can use open PCL printer driver.

It really sounds logical, but if I set up the network device as raw, I won’t be able to control printer options. I already tried to add my printer using Avahi discovery (dnssd://), and it prints fine, only that it uses the printer’s defaults set up on the CUPS server and does not let me control it.

Yes I can but there are some hidden details. With HPLIP such deskjets can only print at 600 dpi max, because the Photoret III technology was patented and could not be supported by the OSS HPLIP software. I bought myselft a TurboPrint license for the sake of their marvellous reverse-engineered driver that delivers the full-power printer support with up to 2400 dpi. As long as I mostly print photographs, this is crucial for me.

That makes sense… in which case for printers with only USB connectivity, I would consider using a Raspberry Pi (or similar) to act as a CUPS print server instead. The CUPS clients can then be configured with the drivers and the CUPS server configured with the raw print queues.

Sounds nice. I’m going to try it. Thanks!