Files
printserver/openspec/changes/add-cups-printserver-container/tasks.md
T
juergen 30c685e085 Print via Brother BR-Script3 PostScript instead of the vendor driver
The HL-4150CDN emulates PostScript 3, so CUPS converts client documents to PostScript and forwards them to socket://<ip>:9100. The official BR-Script3 PPD turns device options (tray, duplex, colour, media type, toner save, ...) into setpagedevice instructions. This drops the i386 multiarch runtime and the broken Brother vendor filter chain, and removes the unused Brother Linux packages from the repo.
2026-10-18 16:54:33 +02:00

2.3 KiB

Tasks

1. Repository initialization

  • 1.1 Initialize jujutsu repository with jj git init in repo root and verify .jj directory exists

2. BR-Script3 PostScript PPD asset

  • 2.1 Extract Brother's official HL-4150CDN BR-Script3 PPD (eng/BR4150_2.PPD) from the vendor Windows driver archive and commit it under assets/Brother HL-4150CDN/ppd/BR4150_2.PPD
  • 2.2 Document the provenance and the option→setpagedevice mapping in assets/Brother HL-4150CDN/ppd/README.md

3. Container build

  • 3.1 Create Containerfile based on Debian stable with CUPS, cups-filters, Avahi, D-Bus, Ghostscript and Poppler (no i386 multiarch)
  • 3.2 Install the BR-Script3 PPD into the CUPS model directory in the Containerfile
  • 3.3 Remove the Brother vendor .deb installation, i386 multiarch and the 32-bit loader setup from the Containerfile
  • 3.4 Keep cupsd.conf (listen on all interfaces, share printers, DNS-SD) and the required runtime directories
  • 3.5 Set up the startup script to run dbus, avahi-daemon and cupsd, and create the queue
  • 3.6 Expose ports 631/tcp and 5353/udp in the Containerfile

4. Printer configuration

  • 4.1 Create the queue with the BR-Script3 PPD and a raw AppSocket URI by default (socket://<ip>:9100)
  • 4.2 Keep environment-based configuration (PRINTER_IP, PRINTER_PROTOCOL, PRINTER_URI, PRINTER_NAME, PRINTER_DESCRIPTION, PPD_FILE)
  • 4.3 Share the queue and set it as default; verify AirPrint capabilities (URF, sides, colour)

5. Documentation and testing

  • 5.1 Update README for the PostScript/BR-Script3 approach and the client matrix (macOS, iOS/iPadOS, Linux, Windows)
  • 5.2 Build the image with podman and verify it builds
  • 5.3 Run the container and verify CUPS is reachable and the queue is shared/discoverable
  • 5.4 Submit a job (colour + duplex) and verify it prints correctly
  • 5.5 Verify PRINTER_IP/PRINTER_PROTOCOL/PRINTER_NAME derive the expected queue URI and advertised name

6. Cleanup

  • 6.1 Add .gitignore for macOS metadata and stop tracking existing .DS_Store files
  • 6.2 Remove the unused Brother Linux vendor packages (lpr-driver/, cupswrapper/, installer/) from the repository
  • 6.3 Prune the obsolete printserver:amd64 image, the test containers and scratch files