Skip to content

About

macOS drivers for the Brother HL-2030 series printers. Open-Source, modern, built for Apple Silicon (and Intel) Macs.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

95 Commits

Folders and files

Repository files navigation

SisterHL2030

Anime girl fixing a printer

A modern, native driver for the Brother HL-2030 laser printer on Apple Silicon and Intel Macs.

Why this exists

The Brother HL-2030 is a great little printer, but Brother stopped updating its Mac driver years ago. The old driver only runs today because of Rosetta 2, the compatibility layer that lets Intel-only apps run on Apple Silicon Macs, and Apple has announced that a future version of macOS will remove Rosetta 2 entirely. When that happens, the official Brother driver will simply stop working, and an otherwise perfectly good printer would become e-waste.

SisterHL2030 is a from-scratch driver, built natively for both Apple Silicon and Intel, so your HL-2030 keeps working long after Rosetta 2 is gone.

While rebuilding the driver, it also picked up a feature Brother's own driver never had: AirPrint. With the printer connected to your Mac over USB, every device on your network (other Macs, iPhones, iPads) can print to it wirelessly, no drivers required on their end. This Mac has to stay awake.

On an Intel Mac Brother's driver still runs natively today; SisterHL2030 is still worth installing there for AirPrint and the supply levels panel, and it means nothing changes if you later move to Apple Silicon.

Is this for you?

If you have a Brother HL-2030 series printer connected by USB to a Mac, yes: running macOS 11 or later. One installer covers both Apple Silicon and Intel computers.

Two print styles

SisterHL2030 ships as two installers that differ in exactly one thing: how photos and shaded areas are turned into the dots this laser actually prints. Everything else — quality modes, AirPrint, supply levels — is identical either way, and you can install the other one later if you change your mind; it just replaces the one already there.

  • Newspaper style — InstallSisterDrivers.NewspaperStyle.pkg. Dots are grouped into a crisp, evenly-spaced grid, the way a halftone photo looks in a printed newspaper. Better for documents, line art, small text, and color graphics: the pattern is clearer on this printer, at the cost of a coarser look on photos.
  • Pencil style — InstallSisterDrivers.PencilStyle.pkg. Dots are scattered individually (a technique called Atkinson dithering, the one classic Mac graphics software used), giving a soft, sketchy texture like pencil shading. Smoother gradients on photos; softer edges on line art and text.

Not sure which? Pencil style is the one this driver has always shipped with — reach for Newspaper style if what you print is mostly documents, line art, text, or color graphics rather than photos.

Newspaper style Pencil style
Newspaper style halftone Pencil style halftone

Installing

  1. Go to the Releases page and download the latest set of installer packages, including whichever one of InstallSisterDrivers.NewspaperStyle.pkg or InstallSisterDrivers.PencilStyle.pkg matches the style you want (see above).
  2. Plug the printer into your Mac with a USB cable and turn it on. The installer needs it connected so it can find the printer.
  3. If you still have Brother's official driver installed, double-click UninstallBrotherDrivers.pkg first and follow the prompts. The two drivers can't be installed side by side.
  4. Double-click the installer you picked and follow the prompts. macOS will ask for your administrator password, which is normal for anything that installs system software.

The printer will now show up in System Settings → Printers & Scanners on this Mac, and you can print to it right away from here.

All installers are signed with a Developer ID certificate, so macOS will let you open them normally (you may still see a first-run Gatekeeper prompt, which is expected for software from outside the App Store).

Anime girl printing a document

Printing from other devices (AirPrint)

Once the driver is installed, the printer is plugged in, and this Mac is awake, other Macs, iPhones, and iPads on the same network see it as Brother HL-2030 and can print to it with no extra software.

Uninstalling

Double-click UninstallSisterDrivers.pkg from the same release. It removes the driver, its background service, and the printer queue.

What you get

  • Native on Apple Silicon and Intel: one universal build, no Rosetta 2, no emulation.
  • AirPrint: print from any Mac, iPhone, or iPad on the network, once the printer is connected to one Mac over USB and that Mac is awake.
  • Correct scaling: pages print at 100% by default.
  • Good-looking output: a choice of two halftone styles for photos and shading, Newspaper or Pencil (see above), each tuned for this printer's resolutions.
  • Toner and drum levels: shown right in System Settings' Supply Levels panel, same as a modern printer.
  • Three quality modes: Draft (300 dpi), Normal (600 dpi), and Fine (1200×600 dpi).
  • Implicit tonner saving mode: Draft and Normal quality modes automatically active the tonner saving mode.

How it works, briefly

The HL-2030 is a "host-based" printer: it has no PostScript, PCL, or AirPrint smarts of its own, so whatever computer it's plugged into has to do all the work: turning the page into dots, choosing which dots become toner, and speaking Brother's own compressed language over USB. That's what this driver does. It runs as a small background service (a "printer application") that takes over the job the manual work would otherwise require, then advertises AirPrint on the network.

The wire format was recovered by studying Brother's own Linux drivers and double-checking the result against the real, official macOS driver on actual hardware; see docs/protocol.md if you're curious about the details. None of Brother's proprietary code is compiled into this driver; it's a clean-room reimplementation.

For developers

Building from source requires CMake 3.20+ and a C++17 compiler (Apple Clang is enough):

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failure

That builds the encoder library, the tests, and the CLI tools. The printer application itself is built with an extra flag, since it downloads and builds PAPPL 1.4.x (pinned by checksum) the first time:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DSISTER_WITH_PAPPL=ON
cmake --build build --target sister-printer-app

Scripts/ has the shell-based install/uninstall path used during development (as opposed to the .pkg installers used for releases):

"Scripts/Uninstall Official Brother Drivers.sh"   # if needed, run first
"Scripts/Install Sister HL2030.sh"

Both ask for an administrator password and refuse to run if the official Brother package is still present; the install script also asks which halftone style to build (see Two print styles above). Scripts/Uninstall Sister HL2030.sh reverses it. Scripts/build_distribution_packages.sh builds the four signed .pkg files that ship in each release: one InstallSisterDrivers per style, plus the two uninstallers. Their binaries are universal (arm64 + x86_64).

Builds target the architecture of the Mac you run them on. To build the other one, pass -DCMAKE_OSX_ARCHITECTURES=x86_64 (or arm64) to CMake; the printer application takes one architecture per build directory, since the static OpenSSL, libpng and libusb it links are single-architecture. For Intel from an Apple Silicon Mac, Scripts/build_x86_64_deps.sh builds static x86_64 copies of those three libraries from source (Homebrew is arm64-only on current macOS); configure with PKG_CONFIG_PATH pointing at its output. The packaging script does all of this and joins the two builds with lipo; SISTER_ARCHS="arm64" or "x86_64" limits it to one.

To turn a bitmap into a HL-2030 job stream directly, without printing:

python3 Scripts/make_test_pbm.py > page.pbm
./build/sister-rawtobr < page.pbm > job.bin

And to decode a job stream back into a bitmap, to check what would land on paper without spending any:

python3 Scripts/decode_job.py job.bin out.pbm

See CLAUDE.md for the full architecture writeup, and docs/protocol.md / docs/reverse-engineering.md for how the wire format was recovered.

Hardware

Model Brother HL-2030 series
USB Vendor 0x04f9, product 0x0027
Connection USB only
Paper A4, Letter, Legal, Executive, Folio, A5, A6, B5, B6; Com-10 and DL from the manual slot
Resolutions 300, 600, and 1200×600 (Fine) dpi
Duplex Not supported

License

GNU GPL v2 or later. See LICENSE.

Brother's original Linux packages were used locally, during development only, as a protocol reference; they are not included in this repository and none of their proprietary code is compiled into this driver. This project's license matches the GPL-2 CUPS wrapper sources Brother already shipped, and stays compatible with brlaser, an independent open-source driver for related Brother models.

About

macOS drivers for the Brother HL-2030 series printers. Open-Source, modern, built for Apple Silicon (and Intel) Macs.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages