I have an Epson L1250 printer and a Raspberry Pi 4 server running Debian 12, and I want to connect the printer to the server through USB, and let CUPS on the server offer the printer to other computers on the local network. I managed to make this work[*], but I’ve noticed that documents are printed in color, even when I specify monochrome in a GUI application. I believe this is because the printer driver I use (printer-driver-escpr) has some options that deviate from the standard naming convention for printer options, and somehow CUPS doesn’t forward these non-standard options to remote clients.
On the server, these are the printer options:
$ lpoptions -l -p Epson
MediaType/Print Quality: PLAIN_HIGH *PLAIN_NORMAL SFINE_HIGH SFINE_NORMAL PMMATT_HIGH PMMATT_NORMAL PLATINA_HIGH PLATINA_NORMAL PMPHOTO_HIGH PMPHOTO_NORMAL PMPHOTO_DRAFT PSGLOS_HIGH PSGLOS_NORMAL PSGLOS_DRAFT LCPP_HIGH LCPP_NORMAL LCPP_DRAFT ENV_HIGH ENV_NORMAL
Ink/Grayscale: *COLOR MONO
PageSize/Media Size: *A4 4X6FULL T4X6FULL 2L A6 A5 B5 B6 L TL INDEX5 8x10 4X7 T4X7 Postcard TPostcard ENV10 EnvDL ENVC6 Letter Legal 16K
Brightness/Brightness: -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 *0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Contrast/Contrast: -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 *0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Saturation/Saturation: -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 *0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
On the server, I can print on color / monochrome with these (example) commands:
$ lp -d Epson /usr/share/cups/data/default-testpage.pdf
$ lp -d Epson -o ink=MONO /usr/share/cups/data/default-testpage.pdf
However, on a remote machine, these are the printer options:
$ lpoptions -l -p Epson_rpiserver
PageSize/Media Size: 101.6x180.62mm 101.6x180.62mm.Borderless 101.6x180.62mm.Borderless 195.02x270.02mm 195.02x270.02mm.Borderless 3.5x5 3.5x5.Borderless 4x6 4x6.Borderless 4x6.Borderless 5x7 5x7.Borderless 5x8 5x8.Borderless 88.97x127mm.Borderless 8x10 8x10.Borderless 99.98x148.03mm.Borderless *A4 A4.Borderless A5 A5.Borderless A6 A6.Borderless B5 B5.Borderless B6 B6.Borderless Env10 Env10.Borderless EnvC6 EnvC6.Borderless EnvDL EnvDL.Borderless Legal Legal.Borderless Letter Letter.Borderless Postcard Postcard.Borderless
MediaType/Media Type: Stationery Stationery SfineHigh SfineNormal PmmattHigh PmmattNormal PlatinaHigh PlatinaNormal PmphotoHigh PmphotoNormal PmphotoDraft PsglosHigh PsglosNormal PsglosDraft LcppHigh LcppNormal LcppDraft Envelope Envelope
ColorModel/Print Color Mode: Gray *RGB
OutputBin/Output Tray: *FaceUp
cupsPrintQuality/Print Quality: *Normal
print-scaling/Print Scaling: *auto auto-fit fill fit none
and, at least my experience with GUI applications is that setting ColorModel to Gray has no effect (it still prints in color).
[Snip: some other test results; I couldn’t post them here because that would mark this question as Spam.]
It seems to me that the server-side CUPS is aware of the printer options, but doesn’t forward them over IPP to remote clients. Why not, and can I change that? Or, alternatively, can I tell CUPS to translate the print-color-mode option on IPP to the ink option of the printer driver?
[*] This was not easy. A short summary: I ended up using Debian’s printer-driver-escpr package, and the PPD file for the L3250 printer, from the source code of that package.