{"id":795,"date":"2026-08-27T06:27:37","date_gmt":"2026-08-27T06:27:37","guid":{"rendered":"https:\/\/jackharvest.com\/?p=795"},"modified":"2026-09-13T23:04:00","modified_gmt":"2026-09-13T23:04:00","slug":"rekdom-bt820-thermal-label-printer-macos-driver","status":"publish","type":"post","link":"https:\/\/jackharvest.com\/index.php\/2026\/08\/27\/rekdom-bt820-thermal-label-printer-macos-driver\/","title":{"rendered":"BT820 macOS Driver \u2013 The REKDOM \/ Rongta 4\u00d76 Thermal Label Printer, Working on macOS Tahoe"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cheap 4\u00d76 thermal label printers are fantastic right up until you plug one into a Mac. The REKDOM BT820 \u2014 the same hardware sold as the <strong>Rongta RP4xx<\/strong> and a pile of other rebadges \u2014 has no official macOS driver, and the vendor\u2019s download site is down more often than it\u2019s up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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 <strong>\u2318P<\/strong>. It even prints from an iPhone.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/bt820-featured.jpg\" alt=\"BT820 macOS Driver: the 4\u00d76 thermal label printer, working on macOS Tahoe\" class=\"wp-image-711\" srcset=\"https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/bt820-featured.jpg 1200w, https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/bt820-featured-300x158.jpg 300w, https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/bt820-featured-1024x538.jpg 1024w, https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/bt820-featured-768x403.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/jackharvest\/bt820-macos-driver#install\">Install with Homebrew<\/a><\/div>\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/jackharvest\/bt820-macos-driver\/releases\/latest\">Download the .pkg<\/a><\/div>\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/jackharvest\/bt820-macos-driver\">View on GitHub<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Will this work with my printer?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Check the USB ID, whatever name is on the box. Plug it in and run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>system_profiler SPUSBDataType | grep -A 4 -i printer<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you see vendor <code>0x0fe6<\/code> and product <code>0x811e<\/code>, 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 \u2014 but I only own a BT820, so that part is untested.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Install<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Homebrew (recommended)<\/strong> \u2014 works on Apple Silicon and Intel, no security warnings to click through:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew tap jackharvest\/tap\nbrew trust jackharvest\/tap\nbrew install jackharvest\/tap\/bt820<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Homebrew 6 requires the <code>brew trust<\/code> step for any third-party tap; without it you get <em>\u201cRefusing to load formula from untrusted tap.\u201d<\/em> (That tap, <a href=\"https:\/\/github.com\/jackharvest\/homebrew-tap\">jackharvest\/homebrew-tap<\/a>, is where my Homebrew formulae live.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Installer<\/strong> \u2014 download the <code>.pkg<\/code> from Releases and double-click it. It\u2019s Apple Silicon only, and because it isn\u2019t signed with a paid Apple certificate you\u2019ll need to right-click \u2192 Open the first time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Print a label<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>bt820print label.pdf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PDFs, PNGs, JPEGs and GIFs all work. Carrier labels usually arrive as a 6\u00d74 landscape file \u2014 those are rotated upright and scaled to fit automatically, so most of the time there\u2019s nothing to configure. <code>bt820print --status<\/code> checks the printer is talking to you, and <code>--preview check.png<\/code> shows you what a label will look like before you burn one.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Option<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td><code>-n 3<\/code><\/td><td>print 3 copies<\/td><\/tr><tr><td><code>-d 12<\/code><\/td><td>darker (0\u201315, default 8)<\/td><\/tr><tr><td><code>-s 2<\/code><\/td><td>slower, which prints cleaner<\/td><\/tr><tr><td><code>-r 180<\/code><\/td><td>rotate: cw, ccw, 180, none<\/td><\/tr><tr><td><code>-p 2<\/code><\/td><td>page 2 of a multi-page PDF<\/td><\/tr><tr><td><code>--continuous<\/code><\/td><td>don\u2019t hunt for gaps between labels<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Print from any app with \u2318P<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>bt820ctl start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s it. <strong>BT820 Label Printer<\/strong> appears in System Settings \u2192 Printers &amp; Scanners and in every app\u2019s print dialog, and it comes back after a reboot. <code>bt820ctl dryrun on<\/code> renders jobs to a PNG instead of printing, which is handy for checking layout without wasting labels.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Print from an iPhone or iPad (AirPrint)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With <code>bt820ctl start<\/code> 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 <code>ippeveprinter<\/code> rejects what iOS sends. Homebrew\u2019s CUPS 2.4 fixes it (the Homebrew formula pulls it in), and <code>bt820ctl airprint<\/code> tells you if anything\u2019s missing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Every label printing twice?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you feed labels one at a time instead of using a roll, run <code>bt820ctl media continuous<\/code> 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 \u2318P jobs too.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How it works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The BT820 is a rebadged Rongta RP4xx that speaks <strong>TSPL<\/strong>, TSC\u2019s label language. That isn\u2019t documented anywhere \u2014 it came out of picking apart the bundled Windows driver (a literal <code>TSPL<\/code> string in the XPD file, the TSPL command format strings in the render DLL, and <code>0xCB 0xCB<\/code> = 203\u00d7203 dpi). Over USB it\u2019s an ordinary printer-class device, so the driver writes TSPL straight to the bulk endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The \u2318P queue is a local <strong>IPP Everywhere<\/strong> printer running as a LaunchAgent, with a CUPS queue pointed at it. On Tahoe, a queue created the obvious way is a \u201craw\u201d one \u2014 prints fine from <code>lp<\/code> but is <em>hidden<\/em> from Printers &amp; Scanners. The way out is Apple\u2019s own <code>ipp2ppd<\/code>, which turns a live IPP printer\u2019s attributes into a PPD, producing a proper driverless queue that macOS shows like any other printer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why 3.98 inches?<\/strong> TSPL\u2019s <code>BITMAP<\/code> command takes its width in whole bytes, and a 4\u2033 label at 203 dpi is 812 dots \u2014 not divisible by 8. Rounding up risks driving the head past its edge, so it rounds down to 808. The missing 0.02\u2033 comes out of the margin, not your label.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nothing needs <code>sudo<\/code>, installs a kext, or touches a system file, and <code>bt820ctl uninstall<\/code> removes all of it. MIT licensed. Not affiliated with REKDOM, Rongta or TSC \u2014 just built by reverse-engineering a printer I own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Free and open source, and it\u2019s staying that way. If it saved you some time, you can <a href=\"https:\/\/www.buymeacoffee.com\/jackharvest\">buy me a coffee<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There\u2019s no official macOS driver for the REKDOM BT820 (a rebadged Rongta RP4xx), and macOS 26 Tahoe killed the old workarounds. This is a complete replacement: print from the command line, from any app with \u2318P, or from an iPhone over AirPrint.<\/p>\n","protected":false},"author":1,"featured_media":832,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"REKDOM BT820 \/ Rongta Thermal Label Printer Driver for macOS","_seopress_titles_desc":"Print 4\u00d76 UPS, FedEx, USPS and Amazon labels on a REKDOM BT820 or Rongta RP4xx from a Mac \u2014 including macOS 26 Tahoe. \u2318P, AirPrint and a CLI. Free.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"REKDOM BT820 mac driver,Rongta RP410 mac,thermal label printer macOS Tahoe,4x6 label printer mac,TSPL printer mac,AirPrint thermal printer","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[78,77],"tags":[95,94,85,90,96,91,98,92,97,89,93],"class_list":["post-795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-macos","category-projects","tag-airprint","tag-cups","tag-homebrew","tag-label-printer","tag-macos-tahoe","tag-rekdom","tag-reverse-engineering","tag-rongta","tag-shipping-labels","tag-thermal-printer","tag-tspl"],"_links":{"self":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts\/795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/comments?post=795"}],"version-history":[{"count":1,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts\/795\/revisions"}],"predecessor-version":[{"id":796,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts\/795\/revisions\/796"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/media\/832"}],"wp:attachment":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/media?parent=795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/categories?post=795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/tags?post=795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}