Skip to content

BT820 macOS Driver – The REKDOM / Rongta 4×6 Thermal Label Printer, Working on macOS Tahoe

BT820 macOS Driver: the 4×6 thermal label printer, working on macOS Tahoe

Cheap 4×6 thermal label printers are fantastic right up until you plug one into a Mac. The REKDOM BT820 — the same hardware sold as the Rongta RP4xx and a pile of other rebadges — has no official macOS driver, and the vendor’s download site is down more often than it’s up.

And then macOS 26 Tahoe removed raw print queues and PPD printer drivers entirely, which is why most of the old workarounds for these printers stopped working. So I wrote a complete replacement. Print UPS, FedEx, USPS and Amazon return labels from the command line, or add it as a normal printer and just hit ⌘P. It even prints from an iPhone.

BT820 macOS Driver: the 4×6 thermal label printer, working on macOS Tahoe

Will this work with my printer?

Check the USB ID, whatever name is on the box. Plug it in and run:

system_profiler SPUSBDataType | grep -A 4 -i printer

If you see vendor 0x0fe6 and product 0x811e, this driver is for your printer. Other Rongta RP4xx models (RP410, RP420) speak the same TSPL language and very likely work too, possibly with a different USB ID — but I only own a BT820, so that part is untested.

Install

Homebrew (recommended) — works on Apple Silicon and Intel, no security warnings to click through:

brew tap jackharvest/tap
brew trust jackharvest/tap
brew install jackharvest/tap/bt820

Homebrew 6 requires the brew trust step for any third-party tap; without it you get “Refusing to load formula from untrusted tap.” (That tap, jackharvest/homebrew-tap, is where my Homebrew formulae live.)

Installer — download the .pkg from Releases and double-click it. It’s Apple Silicon only, and because it isn’t signed with a paid Apple certificate you’ll need to right-click → Open the first time.

Print a label

bt820print label.pdf

PDFs, PNGs, JPEGs and GIFs all work. Carrier labels usually arrive as a 6×4 landscape file — those are rotated upright and scaled to fit automatically, so most of the time there’s nothing to configure. bt820print --status checks the printer is talking to you, and --preview check.png shows you what a label will look like before you burn one.

OptionWhat it does
-n 3print 3 copies
-d 12darker (0–15, default 8)
-s 2slower, which prints cleaner
-r 180rotate: cw, ccw, 180, none
-p 2page 2 of a multi-page PDF
--continuousdon’t hunt for gaps between labels

Print from any app with ⌘P

bt820ctl start

That’s it. BT820 Label Printer appears in System Settings → Printers & Scanners and in every app’s print dialog, and it comes back after a reboot. bt820ctl dryrun on renders jobs to a PNG instead of printing, which is handy for checking layout without wasting labels.

Print from an iPhone or iPad (AirPrint)

With bt820ctl start running, the printer shows up in the iOS share sheet under Print, on the same Wi-Fi. Nothing to install on the phone. One catch: macOS still bundles CUPS 2.3.4 from 2020, whose ippeveprinter rejects what iOS sends. Homebrew’s CUPS 2.4 fixes it (the Homebrew formula pulls it in), and bt820ctl airprint tells you if anything’s missing.

Every label printing twice?

If you feed labels one at a time instead of using a roll, run bt820ctl media continuous once. In gap mode the printer finishes a label by hunting for the next gap; with nothing behind it, it runs out, decides the job never finished, and reprints the moment you reload. Continuous media never hunts. The setting sticks and applies to ⌘P jobs too.

How it works

The BT820 is a rebadged Rongta RP4xx that speaks TSPL, TSC’s label language. That isn’t documented anywhere — it came out of picking apart the bundled Windows driver (a literal TSPL string in the XPD file, the TSPL command format strings in the render DLL, and 0xCB 0xCB = 203×203 dpi). Over USB it’s an ordinary printer-class device, so the driver writes TSPL straight to the bulk endpoint.

The ⌘P queue is a local IPP Everywhere printer running as a LaunchAgent, with a CUPS queue pointed at it. On Tahoe, a queue created the obvious way is a “raw” one — prints fine from lp but is hidden from Printers & Scanners. The way out is Apple’s own ipp2ppd, which turns a live IPP printer’s attributes into a PPD, producing a proper driverless queue that macOS shows like any other printer.

Why 3.98 inches? TSPL’s BITMAP command takes its width in whole bytes, and a 4″ label at 203 dpi is 812 dots — not divisible by 8. Rounding up risks driving the head past its edge, so it rounds down to 808. The missing 0.02″ comes out of the margin, not your label.

Nothing needs sudo, installs a kext, or touches a system file, and bt820ctl uninstall removes all of it. MIT licensed. Not affiliated with REKDOM, Rongta or TSC — just built by reverse-engineering a printer I own.

Free and open source, and it’s staying that way. If it saved you some time, you can buy me a coffee.

Leave a Reply

Your email address will not be published. Required fields are marked *