Moves the completed change to openspec/changes/archive/2026-10-18-add-cups-printserver-container/ and syncs the printserver/cups capability into openspec/specs/.
58 lines
2.4 KiB
Markdown
58 lines
2.4 KiB
Markdown
# Proposal
|
|
|
|
## Why
|
|
|
|
Run a Podman container that shares the Brother HL-4150CDN network printer over
|
|
IPP/AirPrint, so clients on macOS, iOS/iPadOS, Linux and Windows can print.
|
|
|
|
The HL-4150CDN already emulates BR-Script3 (PostScript 3) and accepts PostScript
|
|
on its AppSocket/LPD ports, so the container can forward PostScript directly to
|
|
the printer instead of shipping Brother's 32-bit Linux CUPS wrapper plus
|
|
Ghostscript rasterisation. This removes the i386 dependency, the multiarch
|
|
runtime and the fragile vendor filter chain.
|
|
|
|
The previous approach (Brother Linux `.deb` packages) turned out not to work in
|
|
`debian:bookworm-slim`: the vendor filter `filterhl4150cdn` needs `file` (with
|
|
`a2ps` as a fallback), which are not installed, so it exits with an error and
|
|
produces no output. The official BR-Script3 PPD avoids that entire code path.
|
|
|
|
## What Changes
|
|
|
|
- Create a Containerfile for Podman based on Debian stable running CUPS, Avahi
|
|
and D-Bus (no i386 multiarch).
|
|
- Install Brother's official **BR-Script3 PPD** (committed under
|
|
`assets/Brother HL-4150CDN/ppd/`) so CUPS emits device options — paper source
|
|
(tray), duplex and colour/mono, plus media type, print quality, toner save and
|
|
secure print — as PostScript `setpagedevice`.
|
|
- Point the queue at the printer with a raw AppSocket URI (`socket://<ip>:9100`)
|
|
by default.
|
|
- Convert incoming client formats (URF/Apple Raster, PWG Raster, PDF, PostScript)
|
|
to PostScript inside CUPS and pass them through to the printer's PostScript
|
|
interpreter.
|
|
- Share the queue over IPP and advertise it via mDNS/DNS-SD (Avahi/AirPrint).
|
|
- Keep runtime configuration (printer address, protocol, queue name) in
|
|
environment variables.
|
|
- Document the supported client matrix.
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
- `printserver/cups`: Containerised CUPS print server which shares the Brother
|
|
HL-4150CDN over IPP/AirPrint and prints by sending PostScript (BR-Script3)
|
|
directly to the printer.
|
|
|
|
### Modified Capabilities
|
|
None
|
|
|
|
## Impact
|
|
|
|
- Containerfile plus supporting `cupsd.conf` and `entrypoint.sh` in the
|
|
repository root.
|
|
- Uses `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD`.
|
|
- Runtime ports: CUPS/IPP (631/tcp), mDNS/DNS-SD (5353/udp).
|
|
- No 32-bit runtime libraries; the image no longer depends on the host CPU
|
|
architecture.
|
|
- Windows clients install Brother's own BR-Script3 Windows driver client-side.
|
|
- The unused Brother Linux `.deb` packages previously under
|
|
`assets/Brother HL-4150CDN/` have been removed.
|