Set *DefaultBRColorMode: None in the vendor PPD so every job sends <</UseCIEColor false>>: Brother's Normal/Vivid modes enable the printer's own CIE conversion, which washed the colours out. Add six APPrinterPreset entries mapping print-color-mode and print-quality from driverless (AirPrint/IPP) clients onto the Brother device options; they use the notation CUPS generates itself (Apple metadata as 'key value' pairs, PPD options as '*Name Value'), because key=value strings are silently discarded. print-quality is 3/4/5. Add the PRINTER_OPTIONS env var: whitespace-separated key=value pairs applied as queue defaults on every start via lpadmin -o, validated against the queue's PPD, with warnings instead of a failed startup. Document all of it in the README. The VividNoCIE candidate was dropped after test prints showed no difference from None. Archive the OpenSpec change and sync the printserver/cups spec with the two new requirements.
BR-Script3 PPD — Brother HL-4150CDN
BR4150_2.PPD is Brother's official BR-Script3 (PostScript 3) PPD for the
HL-4150CDN.
Provenance
Extracted from the vendor Windows driver in ../Windows/:
Y10B_C1-ps-win8-64-103-en.EXE (ZIP self-extracting archive)
└── eng/BR4150_2.PPD
unzip -j "Y10B_C1-ps-win8-64-103-en.EXE" "eng/BR4150_2.PPD"
The archive also contains PPDs for the related BR4140 and BR4570 models; only the HL-4150CDN PPD is used here. Line endings were normalised from CRLF to LF.
Why this file
The HL-4150CDN emulates PCL6 and BR-Script3 (PostScript 3). This PPD encodes
every device setting as PostScript setpagedevice, for example:
| PPD option | Emitted PostScript |
|---|---|
InputSlot Tray2 |
<</ManualFeed false /BRTraysw false /BRFeeder 1>> setpagedevice |
InputSlot MPTray |
<</ManualFeed false /BRTraysw false /BRFeeder 4>> setpagedevice |
Duplex DuplexNoTumble |
<</Duplex true /Tumble false>>setpagedevice |
BRPrintQuality Black |
<</BRProcessColor 1>>… <</BRRenderMode true>>setpagedevice |
BRColorMode Normal |
<</UseCIEColor true>>… <</BRColorMode 0>>setpagedevice |
BRMediaType Recycled |
<</MediaType (RECYCLED)>>setpagedevice |
CUPS's pstops filter injects the selected option code, and the PPD's
*JCLBegin / *JCLToPSInterpreter / *JCLEnd entries wrap the job in PJL.
This lets the HL-4150CDN be driven with a plain PostScript queue, so the
container does not need Brother's 32-bit Linux CUPS wrapper/filter
(brlpdwrapperhl4150cdn) or its Ghostscript rasterisation step.