XP-365B printer app for macOS
A driverless macOS driver for the Xprinter XP-365B
Turns the Xprinter XP-365B label and receipt printer into two AirPrint printers on a modern Mac — no PPDs, no CUPS filters, no Rosetta — and keeps jobs for the wrong mode waiting instead of printing them as garbage.
Language
C
Licence
MIT
Status
Beta
Repository
webloomlabs/xprinter-365b-macos-driver
Requires
Apple Silicon Mac, macOS 26+
Printer
Xprinter XP-365B on USB (1fc9:2016)
Distribution
.pkg installer from GitHub releases
Why it exists
One printer, two languages,
and a Mac that refuses raw queues
The XP-365B prints labels in TSPL and receipts in ESC/POS, and which one it speaks is set by a switch on the printer. It reports the same USB identity in both modes, so nothing on the Mac knows which is active — and a job sent in the wrong language prints about a metre of nonsense.
The drivers it ships with are the PPD-and-filter kind that macOS is retiring. macOS 26 no longer allows raw queues at all, and because the printer has no USB serial number, a CUPS queue pins itself to a port: move the cable and the queue stays offline for good.
This replaces all of that with a printer application built on PAPPL, the approach Apple and CUPS now recommend. It owns the USB device, asks the printer which mode it is in after every power cycle, and pauses the other queue so its jobs wait instead of misprinting.
What it does
What XP-365B printer app for macOS gives you
The short version of the README. The repository has the rest, including what XP-365B printer app for macOS does not do yet.
Two printers, one device
XP-365B Labels and XP-365B Receipts appear as ordinary AirPrint printers, so any Mac app can print to either.
Mode-aware queues
The app probes the printer after power-on and pauses the queue for the other mode. Its jobs print once you switch.
Receipts that save paper
Blank space above and below the content is trimmed, then the printer feeds just far enough to clear the tear bar.
Labels on the gap
Gap, black-mark and continuous media from 20 mm to 82 mm wide, with darkness, speed and copies configurable.
Raw jobs for POS software
Point-of-sale software can send its own TSPL or ESC/POS with lp -o raw. Each job is checked, and the wrong language is refused rather than printed.
Survives a cable move
The printer is matched by USB vendor and product ID, not by port. A web interface on localhost:8365 shows status, jobs and the mode.
Getting started
Installing the package
Remove any existing XP-365B queue that uses the Xprinter or TSC driver first — two programs cannot share the USB printer. Then plug the printer in and switch it on.
Install
sudo installer -pkg XP365B-*.pkg -target /Or open the .pkg from the releases page. It installs a background service and adds both printers to macOS.
Check or set the mode
xp365b mode # the mode the app expects
xp365b mode -o mode=detect # ask the printerThe same controls are on http://localhost:8365/mode.
Built with