You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug(macos): Mac App Store USB printing via CUPS/IPP (needs device repro) #1347
build/entitlements.mas.plist has print, network.client and network.server, but no USB device entitlement. This is by design, since CUPS owns the device.
No test covers ipp-client.ts / printViaLocalIpp, and docs/printers.md does not explain the MAS requirement (the printer must be added in macOS System Settings > Printers as a raw/generic queue).
Steps
On the MAS build, add a USB ESC/POS printer in macOS Printers (Generic / raw). Select it in FloCafe and print a test receipt.
Capture the FloCafe diagnostics output and the CUPS log (/var/log/cups/error_log).
Try with the printer not added to CUPS, and confirm the error message tells the user what to do.
Acceptance
Repro result recorded here.
Unit tests for ipp-client.ts (request building, error mapping).
A clear in-app error when no CUPS queue exists.
The MAS USB setup documented (docs.flopos.com printers page).
Reproduction and verification results for macOS App Sandbox CUPS/IPP USB printing (addressed in #1383):
App Sandbox transport check (/System/Library/Sandbox/Profiles/application.sb):
The macOS App Sandbox system profile permits (allow network-outbound (literal "/private/var/run/cupsd")) by default, whereas TCP loopback 127.0.0.1:631 requires com.apple.security.network.client and fails with EPERM if restricted.
cupsd idle exit and launchd socket activation (/System/Library/LaunchDaemons/org.cups.cupsd.plist):
On macOS, cupsd exits after ~60 seconds of inactivity (IdleExitTimeout 60). launchd only holds /private/var/run/cupsd open for on-demand socket activation; TCP localhost:631 returns ECONNREFUSED while cupsd is idle until woken via the UNIX domain socket.
USB dispatch & IPP raw job submission:
printViaUSB now routes through printViaLocalIpp when isMacAppStoreBuild() is true.
ippPrintRaw submits raw ESC/POS bytes over /private/var/run/cupsd using application/vnd.cups-raw with fallback to application/octet-stream on 0x040a (client-error-document-format-not-supported).
Without a configured CUPS queue / queue error states:
Missing queue (0x0406 client-error-not-found) and no raw queue configured classify as printer_not_found with actionable CUPS Raw queue setup guidance; 0x0506 (server-error-not-accepting-jobs) classifies as queue_unavailable; 0x0508 (server-error-job-canceled) is reported distinctly as a canceled job.
Activity
khaira777 commentedon Oct 26, 2026
Looking into this issue now.
khaira777 commentedon Oct 26, 2026
Reproduction and verification results for macOS App Sandbox CUPS/IPP USB printing (addressed in #1383):
/System/Library/Sandbox/Profiles/application.sb):(allow network-outbound (literal "/private/var/run/cupsd"))by default, whereas TCP loopback127.0.0.1:631requirescom.apple.security.network.clientand fails withEPERMif restricted.cupsdidle exit andlaunchdsocket activation (/System/Library/LaunchDaemons/org.cups.cupsd.plist):cupsdexits after ~60 seconds of inactivity (IdleExitTimeout 60).launchdonly holds/private/var/run/cupsdopen for on-demand socket activation; TCPlocalhost:631returnsECONNREFUSEDwhilecupsdis idle until woken via the UNIX domain socket.printViaUSBnow routes throughprintViaLocalIppwhenisMacAppStoreBuild()is true.ippPrintRawsubmits raw ESC/POS bytes over/private/var/run/cupsdusingapplication/vnd.cups-rawwith fallback toapplication/octet-streamon0x040a(client-error-document-format-not-supported).0x0406 client-error-not-found) and no raw queue configured classify asprinter_not_foundwith actionable CUPS Raw queue setup guidance;0x0506(server-error-not-accepting-jobs) classifies asqueue_unavailable;0x0508(server-error-job-canceled) is reported distinctly as a canceled job.fix(macos): route MAS USB print via CUPS socket
fix(macos): route MAS USB print via CUPS socket (FreeOpenSourcePOS#1383)