I’ve had a Brother HL-3150CDN for quite some time. Brother are still maintaining the firmware, with the latest release being in late 2023. Things are going driverless, and it does support modern communications such as AirPrint™ and IPv6 over ethernet. While it can do these things, the limitations of tiny CPU and 64MB RAM become evident. It does not handle network printing well, compared to over USB with a desktop CPU doing all the heavy lifting.
Over USB, it does not support IPP Everywhere™ and indeed still requires a driver to operate.
The problem: They have not updated the Linux driver since 2013, and it ships with only 32-bit binaries. For the record, the last 32-bit desktop processor was released in 2006, and the last Ubuntu LTS with a 32-bit option was released in 2016. You simply don’t run 32-bit software on Linux anymore.
How much effort is too much effort for Brother to continue to support its older printers? Well, it’s not much effort at all. I’ve found that their newer drivers are completely generic, and work perfectly fine when you repackage them to work on an older model. I’ll go into detail of how I made the driver below. This process can likely be adapted to other models. If you’re only here for the HL-3150CDN, I’ll just link to a download for the repackaged driver and you can be on your way.
Download the driver here: hl3150cdnpdrv-3.5.1-1.amd64.deb
Rolling Your Own Driver
First, download the driver for your printer. I got the HL-3150CDN driver from here. Also download the driver for the nearest current model. I chose the HL-L3240CDW (v3.5.1-1). It’s their current basic networked colour laser.
Extract the .deb files to a working directory. Here’s what the old CUPS wrapper deb package contains:
The only file you actually need from this is brother_hl3150cdn_printer_en.ppd
. If you inspect that binary with “file brcupsconfpt1
“, you’ll find it’s an ELF 32-bit executable. Yuck.
If you inspect the new driver, you’ll find this:
The brother_lpdwrapper_hll3240cdw
file is a perl script (architecture-independent). Both binaries in the x86_64 directory are ELF 64-bit binaries. Perfect!
Now, to make a working v3.5.1-1 driver for the HL-3150CDN, it’s actually quite trivial:
- Remove
brother_hll3240cdw_printer_en.ppd
and replace it withbrother_hl3150cdn_printer_en.ppd
from the older driver. - Find and replace “
hll3240cdw
” with “hl3150cdn"
inprerm
,postinst
,postrm
,control
,cupswrapperhll3240cdw
andbrhll3240cdwrc
. - Rename every file and directory so that
hll3240cdw
becomeshl3150cdn
. - (optional) remove the
i686
directory and change the architecture property in thecontrol
file fromi386
toamd64
. Remove the i686 symlinking from thepostinst
script too. - Repackage the
.deb
file.
Repackaging can be done with dpkg-deb
:
dpkg-deb -b [workingdir] hl3150cdnpdrv-3.5.1-1.amd64.deb
Then install the .deb
as usual. When you restart CUPS, the driver will appear.
Leave a Reply