diff --git a/README.md b/README.md index c64027f..7c09b10 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,7 @@ The BR-Script3 PPD exposes the HL-4150CDN's hardware options. Common ones: | Paper source | `InputSlot` | `AutoSelect`, `Tray1`, `Tray2`, `MPTray` | | Two-sided printing | `Duplex` | `None`, `DuplexNoTumble` (long edge), `DuplexTumble` (short edge) | | Colour / mono | `BRPrintQuality` | `Auto`, `Color`, `Black` | -| Colour mode | `BRColorMode` | `Normal`, `Vivid`, `None` (default) | +| Colour mode | `BRColorMode` | `Normal` (default), `Vivid`, `None` | | Media type | `BRMediaType` | `Plain`, `Thin`, `Thick`, `Recycled`, `Glossy`, `Label`, envelopes, … | | Print quality | `CAPT` | `Fine` (600×600), `SuperFine` (2400 dpi class) | | Toner save | `TonerSaveMode` | `True`, `False` | @@ -252,11 +252,8 @@ Client-specified values always win over the preset. ### Changes to the vendor PPD `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD` is Brother's original file plus -two additions, each marked with a `%` comment in the file: +one addition, marked with a `%` comment in the file: -- **`*DefaultBRColorMode: None` instead of `Normal`.** `Normal` and `Vivid` both - set `<>`; the printer's own CIE conversion washes the - colours out (see [Colours are printed pale / washed out](#colours-are-printed-pale--washed-out)). - **Six `APPrinterPreset` entries** mapping `print-color-mode` (color/monochrome) and `print-quality` (draft/normal/high) onto `BRPrintQuality`, `CAPT` and `TonerSaveMode`. CUPS applies such presets for @@ -273,6 +270,10 @@ two additions, each marked with a `%` comment in the file: whitespace, so `key=value` becomes the option *name* and the lookup fails). Note that IPP `print-quality` is `3` (draft), `4` (normal), `5` (high). +Every other PPD value, including the colour-mode default +`BRColorMode: Normal`, is the vendor original — the container does not tune +colour output (see [Colours are printed pale / washed out](#colours-are-printed-pale--washed-out)). + ## Client support | Platform | Path | Notes | @@ -459,27 +460,33 @@ changing anything on the server. ### Colours are printed pale / washed out -Symptom: colour printouts look desaturated compared to the same PDF printed -directly from the Mac, or with Brother's own driver. +Symptom: colour printouts through the container look desaturated compared to +the same PDF printed through the Mac's local (Brother) driver. -Cause: the PPD colour mode `Normal` (Brother's default) makes the printer's -PostScript interpreter apply its own CIE conversion (`<>`), -which washes colours out. `Vivid` sets `UseCIEColor` as well, so it does not -help either; `BRPrintQuality` (`BRColorAdapt`) and `TonerSaveMode` made no -visible difference in a side-by-side test. The container therefore ships the -PPD with `*DefaultBRColorMode: None` (`UseCIEColor` off), which produces -saturated output. +Cause: a known limitation, not a switchable setting. Tested side by side on +the HL-4150CDN, the PPD colour-mode options make **no visible difference**: +`BRColorMode None` — which switches the printer's CIE conversion off via +`<>` — prints the same as the vendor default `Normal`, +and `Vivid`, `BRPrintQuality` (`BRColorAdapt`) and `TonerSaveMode` change +nothing either. (An earlier version of this container defaulted to `None` on +the theory that the printer's CIE conversion caused the washout; before/after +test prints disproved that, and the default is the vendor original again.) The +gap comes from the conversion path: the local driver applies its own +client-side colour management, while the container converts the job +server-side to PostScript without it. No server-side lever is currently +known. -Check and, if needed, override the current default: +For colour-critical output, print through the local driver. The remaining +server-adjacent checks are: ```sh -podman exec printserver lpoptions -p -l | grep BRColorMode # expect *None -podman exec printserver lp -d -o BRColorMode=None test.pdf +podman exec printserver lpoptions -p -l | grep BRColorMode # expect *Normal +podman exec printserver lp -d -o BRColorMode=Vivid test.pdf # optional experiment ``` -If output is still pale with `BRColorMode=None`, check the printer's own menu -(Toner → Toner Save off) and make sure `BRMediaType` matches the media in the -tray. +Also check the printer's own menu (Toner → Toner Save off) and make sure +`BRMediaType` matches the media in the tray — both affect the print, though +neither closes the saturation gap. Black-and-white is a related but separate path: `print-color-mode=monochrome` from a driverless client is mapped by the PPD presets onto diff --git a/assets/Brother HL-4150CDN/ppd/BR4150_2.PPD b/assets/Brother HL-4150CDN/ppd/BR4150_2.PPD index b53d98b..acdfda4 100644 --- a/assets/Brother HL-4150CDN/ppd/BR4150_2.PPD +++ b/assets/Brother HL-4150CDN/ppd/BR4150_2.PPD @@ -374,12 +374,9 @@ restore *CloseUI: *BRPrintQuality *% Color Mode Information =============== -*% Modified by this repo (see README, "Changes to the vendor PPD"): -*% - default switched from Normal to None: with UseCIEColor off the printer -*% skips its CIE conversion, which otherwise washes out the colours. *OpenUI *BRColorMode/Colour Mode: PickOne *OrderDependency: 131.0 AnySetup *BRColorMode -*DefaultBRColorMode: None +*DefaultBRColorMode: Normal *BRColorMode Normal/Normal: " <>setpagedevice <>setpagedevice diff --git a/openspec/changes/revert-colour-mode-default/tasks.md b/openspec/changes/revert-colour-mode-default/tasks.md index 987460d..dc2c898 100644 --- a/openspec/changes/revert-colour-mode-default/tasks.md +++ b/openspec/changes/revert-colour-mode-default/tasks.md @@ -2,7 +2,7 @@ ## 1. PPD auf Vendor-Default zurücksetzen -- [ ] 1.1 `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD`: `*DefaultBRColorMode: +- [x] 1.1 `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD`: `*DefaultBRColorMode: None` auf den Vendor-Wert `*DefaultBRColorMode: Normal` zurücksetzen und den dreizeiligen „Modified by this repo"-Kommentar über dem Default entfernen. Die sechs `APPrinterPreset`-Einträge und ihr Kommentarblock @@ -14,18 +14,18 @@ ## 2. README korrigieren -- [ ] 2.1 Optionstabelle („Colour mode | `BRColorMode`"): Werte auf +- [x] 2.1 Optionstabelle („Colour mode | `BRColorMode`"): Werte auf `Normal` (default), `Vivid`, `None` ändern. Verifikation: `grep -n 'BRColorMode' README.md` zeigt in der Tabelle „Normal (default)" und nirgends mehr „None (default)". -- [ ] 2.2 Abschnitt *Changes to the vendor PPD*: den ersten Aufzählungspunkt +- [x] 2.2 Abschnitt *Changes to the vendor PPD*: den ersten Aufzählungspunkt (Default-Wechsel mit CIE-Begründung) entfernen, die Einleitung auf die verblebende eine Abweichung (Presets) anpassen und den Verweis auf den Troubleshooting-Abschnitt entsprechend korrigieren. Verifikation: Abschnitt listet nur noch die Presets; `grep -n 'DefaultBRColorMode' README.md` findet den Ausdruck nur noch in der Troubleshooting-Sektion (falls dort referenziert). -- [ ] 2.3 Troubleshooting-Abschnitt *Colours are printed pale / washed out* +- [x] 2.3 Troubleshooting-Abschnitt *Colours are printed pale / washed out* umschreiben (Design D3): Symptom bleibt, Ursache nennt die getesteten Fakten (`None` vs. Vendor-Default ohne sichtbaren Unterschied, ebenso `Vivid`, `BRPrintQuality`, `TonerSaveMode`), die Lücke liegt im @@ -40,16 +40,17 @@ ## 3. Integrationstests (podman, lokal) -- [ ] 3.1 Image bauen und Container starten: installierte PPD im Image hat +- [x] 3.1 Image bauen und Container starten: installierte PPD im Image hat `*DefaultBRColorMode: Normal`, `lpoptions -p -l | grep BRColorMode` listet `Normal`/`Vivid`/`None`, Startup endet mit `ready`. Verifikation: `podman exec printserver grep 'DefaultBRColorMode' /usr/share/cups/model/BR4150_2.PPD`, `podman exec printserver lpoptions -p -l | grep BRColorMode`, `podman logs printserver | grep 'ready'`. -- [ ] 3.2 Override-Pfad: Container mit `PRINTER_OPTIONS="BRColorMode=None"` +- [x] 3.2 Override-Pfad: Container mit `PRINTER_OPTIONS="BRColorMode=None"` starten → Queue-Default ist `None`; danach Testcontainer verwerfen. - Verifikation: `podman exec printserver lpoptions -p | grep BRColorMode` - enthält `BRColorMode=None`. + Verifikation: `podman exec printserver2 lpoptions -p -l | grep BRColorMode` + zeigt `*None` (die ursprüngliche Form ohne `-l` beobachtet nur + IPP-Queue-Attribute, keine PPD-Optionen, und wurde korrigiert). - [ ] 3.3 Physischer Farbtest (durch Nutzer, kein Automationspfad): Testdruck über die Container-Queue mit Normal-Default — erwartet: identisch zu den Ausdrucken vor/nach tpypxmkn, also weiterhin weniger gesättigt als der