Files
printserver/openspec/changes/archive/2026-10-18-add-cups-printserver-container/proposal.md
T
juergen adaa11e416 Archive the add-cups-printserver-container change
Moves the completed change to openspec/changes/archive/2026-10-18-add-cups-printserver-container/ and syncs the printserver/cups capability into openspec/specs/.
2026-10-18 16:54:54 +02:00

2.4 KiB

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.