HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!)

Write tutorials for Linux Mint here
More tutorials on https://github.com/orgs/linuxmint/discu ... /tutorials and (archive) on https://community.linuxmint.com/tutorial
Forum rules
Don't add support questions to tutorials; start your own topic in the appropriate sub-forum instead. Before you post read forum rules

Did this solve your problem?

Yes, thanks!
15
79%
No (elaborate on what you need help with)
4
21%
 
Total votes: 19

BonjourPrinter

HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!)

Post by BonjourPrinter »

Brother's official instructions are horrible, awfully laid out, and are wrong in so many places, such as suggesting that you edit /etc/printcap which is an auto-generated file that you CANNOT edit because any changes will automatically be replaced (herp derp), along with many other plain errors; Brother's Linux people seem to be on a salary of peanuts and the instructions appear to be a hobbled-together mess of ancient, outdated misinformation.

Other people have tried to fill these horrible documentation flaws by figuring out how to do things and have made a few guides, but all of those guides have been very messy and full of useless or plain wrong steps and with vital details left out, mostly due to being based on the horribly wrong instructions by Brother.

I've spent SEVEN hours digging deep into the internals of Brother's drivers and the AirPrint and mDNS protocols and have a very good understanding of how everything works, so here I present to you a complete, perfect guide for installing Brother printer drivers and even getting AirPrint to work, covering all required steps (over 50% of which are never even covered by Brother), while avoiding all the junk/plain wrong misinformation! If you look at the official instructions you'll see LOADS of things that are not covered here, and vice versa; rest assured that you have ZERO reason to read the official instructions and will in fact just be causing yourself HARM by doing so. Take my word for it and AVOID Brother's "help" pages completely!

The guide refers to the HL-2270DW in many places (since it's an excellent, best-selling printer and I needed something for the example commands), but just substitute it for your own model number if you have a different model!

The steps have been marked as either "32/64 bit", "32-bit only" or "64-bit only". Do the ones appropriate for your system!

Finally, these instructions are written for all versions of Ubuntu and Linux Mint, but other distros should work as well (either as-is or with minor changes; most notably you might need the RPMs rather than the DEB installers). I only provide full guarantees of success for Ubuntu and Linux Mint.

(64-bit only) Install the pre-requisite package:
# sudo apt-get install ia32-libs

(32/64 bit) Download both driver deb files here http://welcome.solutions.brother.com/bs ... #HL-2270DW

(64-bit only) Download the 64-bit patch file here http://welcome.solutions.brother.com/bs ... tml#f00098

(64-bit only) Rename the patch file to brdpkgdeldep.sh and make it executable.

(64-bit only) Navigate to the folder that contains your two package files and the patch and run these commands:
# ./brdpkgdeldep.sh hl2270dwlpr-2.1.0-1.i386.deb
# ./brdpkgdeldep.sh cupswrapperHL2270DW-2.0.4-2.i386.deb

(64-bit only) Install the patched drivers (note the "a" after the version numbers, indicating 64 bit versions):
# sudo dpkg -i --force-all hl2270dwlpr-2.1.0-1a.i386.deb
# sudo dpkg -i --force-all cupswrapperHL2270DW-2.0.4-2a.i386.deb
(the force flag means force installation despite 32 vs 64 bit package mismatch)

(32-bit only) Install the regular drivers (note the lack of "a" after the version numbers):
# sudo dpkg -i --force-all hl2270dwlpr-2.1.0-1.i386.deb
# sudo dpkg -i --force-all cupswrapperHL2270DW-2.0.4-2.i386.deb

(32/64 bit) Configure CUPS for your printer connection (it's pre-set to USB but you might want to change it to Networked, so that's what I'll describe here):
* Go to http://localhost:631/ in a browser and go to the Printers tab and select the HL2270DW.
* It defaults to "Connection: usb:/dev/usb/lp0", so if you've connected it over USB, you can proceed to printing a test page right away, otherwise read on to switch it to a networked connection.
* From the Administration submenu, select "Modify Printer" and log in with your linux administrator account, then wait a while for it to discover networked printers via Bonjour/mDNS.
* You should see four duplicates of the HL-2270DW under "Discovered Network Printers", and you won't know what protocol each is without selecting it. Just select a random one and hit Continue. (Would have been nice if CUPS' web interface showed the protocol in parenthesis after each one to make this step easier)
* If the "Connection" path says "dnssd://Brother%20HL-2270DW%20series._pdl-datastream._tcp.local/" then you've got the right one; if not, hit Back and try another until you find this one (the key part is the "pdl-datastream" protocol, which is REQUIRED for networking printing; IPP will NOT work).
* If you want others on the network to be able to print to this printer via your machine, check the "Share This Printer" box and then hit Continue.
* It now asks you to choose a model/PPD, etc. Since you're modifying the properly installed printer driver, you should simply leave these values as they are and confirm by clicking "Modify Printer". (However, if you're re-adding the printer after having deleted it and need to re-configure the printer from the ground up, you might appreciate knowing that the necessary PPD is located at "/usr/share/cups/model/HL2270DW.ppd")
* Now click "Print Test Page" under the Maintenance menu and verify that it prints properly.

Enabling network sharing (if you wanted it):
* Simply having checked the "Share This Printer" checkbox is not enough; doing so just enables that printer for sharing, but it doesn't turn on actual printer sharing itself in CUPS. So, you'll want to go to the "Administration" tab of the web interface and ensure that "Share printers connected to this system" is enabled.
* Click "Change Settings" to confirm. What this does is that it tells CUPS to start broadcasting a list of printers over the network using Bonjour/mDNS, allowing other Mac/Unix/Linux machines to detect them.
* Note that this does NOT broadcast over Samba/NetBIOS (Windows technology for sharing printers); you'll want to look up "CUPS over Samba" on Google for setting that up, if you want Windows clients to be able to print to it.

Bonus: AirPrint!? The holy grail?!
* The Bonjour/mDNS network sharing technology in CUPS actually broadcasts the capability information for your CUPS server running on the Linux machine, and NOT for the printer itself. Any jobs sent over the network therefore go to your Linux CUPS server, which translates them to a format the printer understands and forwards the job. This means that your Linux machine MUST always be running when you want to print to the CUPS server.
* The upside of course is that the CUPS server supports a heck of a lot more features than a direct connection to a printer would; to be precise, the CUPS server has no problem accepting PDF or PNG/JPG input, rather than just plain PostScript (which is the only format that most printers understand natively).
* You see, the requirements for AirPrint capability is that the receiving printer/machine can accept PDF and PNG/JPG, and that the printer/machine broadcasts a normal "_ipp._tcp" service over mDNS, BUT with a few special fields. To be precise, it also needs a subtype of "_universal._sub._ipp._tcp", and its list of pdl's must include application/pdf and image/jpg and image/png (if it does not include support for PDF or image formats, then AirPrint on your iOS device will still see the printer but will not be able to print to it), and finally it must have a text-record called "URF=none" (not used by AirPrint but must be there or the printer won't show up).
* Luckily, CUPS supports ALL of the required formats, AND has supported those extra mDNS fields since CUPS 1.4.6, SO if you are on that version or higher (update CUPS if you're on an older version), your printer sharing will actually AUTOMATICALLY be AirPrint-compatible. Go ahead, pick up your iOS device, go to Safari, go to Print Page and it will find your CUPS daemon running on the Linux machine.
* You can now print from iOS devices as long as both your printer and Linux machine are running! Give it a test print!
* Note for curious experts that want to know more: If your printer had native support for rasterizing PDF, PNG and JPG (which the Brother printers do not), then it would actually have been possible to simply do service-announcement via AVAHI (or mDNSResponder), filling in the capabilities and the proper fields, and AirPrint devices would find the printer and be able to send PDF/JPG/PNG data directly to it without the need for a CUPS server in-between. However, I don't know of ANY printers that supports those formats that isn't *ALSO* natively AirPrint-enabled, since there is NO reason for a printer to natively understand those formats unless it needs to support AirPrint.

Bonus: Removing printers you don't want to share.
* You can do that via the web interface and the "Modify Printer" option, going through the configuration steps (without changing anything) and unchecking "Share This Printer" for each printer you don't want to share.
* However, that method doesn't work for the "Print to PDF" virtual printer, as it cannot be configured via the web interface (the final model/ppd step cannot be completed).
* So, for that one, you should either directly edit /etc/cups/printers.conf and set "Shared No" for that printer and re-start the CUPS daemon, OR you can use the Printer control panel GUI to view printer properties and disable sharing without manually touching any config files. In fact, you could have done all of the web interface steps above using the control panel instead, but I wrote the web steps because they're more universal.

Bonus: What exactly is contained in the Brother drivers?
* The mystery packages actually perform three things:
* 1) They install a PPD to /usr/share/cups/model/HL2270DW.ppd, which is a file that describes the capabilities of the printer, such as onboard fonts, paper dimensions, features, you name it.
* 2) They install a CUPS filter program; this filter is used by the PPD (via the cupsFilter line), and what it does is that it takes any print jobs you send to CUPS, and converts them to the vendor-specific language that the Brother printer speaks, before transmitting them over the wire to the actual printer. Without this program filtering the output, your printer would receive troublesome data and will hate you (for instance, it might print the job and then print blank pages until it runs out of paper). In other words: You NEED the filter. The reason I elaborated on what the filter does is that some people have pondered *why* you even need anything more than a PPD file. Now you know why! Your printer will not work properly AT ALL without the filter program!
* 3) Finally, they install a default USB configuration for your printer and then re-starts the CUPS server.
* You need all three things in order for your printer to work.


I place this material in the public domain and anyone is free to re-mix the instructions for other distros / post the instructions as-is or modified on their own blogs / or anything else you might want to do with them. No attribution is needed!

Enjoy!
axe.gs1

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by axe.gs1 »

For printers other than the Brother, (mine is a networked HP2025c laser), I followed this link, and ran the printer-sharing generation script for Airprint. The last mile though was the golden nugget here about allowing Sharing in the CUPS web menu. As soon as I did that, my son's iPOD started streaming jobs I'd queued up trying to make it work..
http://blog.mornati.net/2011/09/28/linu ... nt-server/

Enjoy!
bugmenotprettyplz

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by bugmenotprettyplz »

@axe.gs1: Good to see that the guide helped you and that your son can finally print wirelessly, that's awesome! However, I gotta warn you about those instructions at the link you posted. (To anyone reading this: Do not follow the bad instructions at his link).

The "airprint-generate.py" (AirPrint .service generator for AVAHI) is beyond worthless these days. It's actually harmful now. It served a purpose before CUPS 1.4.6 (January 6, 2011), but it hasn't been needed for a year and a half! (Or more depending on what kind of time-traveller reads this in the future.)

When CUPS 1.4.6 came out, they natively added support for what airprint-generate.py does.

Basically, CUPS shares its printers over mDNS. AirPrint also uses mDNS. However, prior to CUPS 1.4.6, the mDNS printer sharing service message sent out by CUPS did not have the extra fields required for AirPrint to detect it. That's where Airprint-generate.py came in and looked at your CUPS printer, generated a mDNS .service file exposing that printer with all the fields required for AirPrint, which then allowed AirPrint to see your CUPS "AirPrint" server.

Well, as mentioned, CUPS 1.4.6 added native support for those extra AirPrint fields, and I absolutely recommend you to delete the files you made when you followed that outdated guide. The extra file only does harm as it means you're announcing the AirPrint service twice.

As long as CUPS 1.4.6 or higher is enabled for printer sharing, it will automatically have the required extra fields to be seen by AirPrint, with no extra manual work.

AirPrint is literally as simple as: Add printer (any brand) to CUPS, set printer to shared, enable CUPS network sharing.

That's it.

PS: It's a bit sad that the airprint-generate.py author has not taken down his code; sure, I can understand him being proud of what he did and the work he put into it, but these days it is just harmful and totally worthless to be using it.

PPS: Old misinformation dies hard, and CUPS didn't exactly have a big fanfare when they added AirPrint natively, but it's still sad that bad guides (like the one you posted) are still being created; it was written in late 2011, and yet CUPS has had AirPrint capability built in since January of 2011.
jobrimal

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by jobrimal »

Thank you for a very informative How TOhttp://forums.linuxmint.com/posting.php?mode=reply&f=42&t=103900# However as a very old(77) newbe, I am using a 64bit LMD20124, trying to install my Brother DCP-110C
Printer. Now to my HOW DO I DO's (1) How do i make the brdpkgdeldep.sh file excutable??
(2) How do I navigate in my terminal to the folder that contains my two packages
(lpr and cupswrapper)?? :? :?
axe.gs1

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by axe.gs1 »

Hi jobrimal

To make the file executable, you can either right click on it in the GUI, choose Properties, and check the box that says 'executable' in the PERMISSIONS tab, or at a command line type "chmod +x brdpkgdeldep.sh" and hit enter.

To navigate to the folder, if you used Firefox to download the file(s), open the terminal, via the Mint Menu, or right click on the desktop, and choose "open in terminal". Then type "cd ~/Downloads" (not 100% it is 's' or not, sorry - no pc in front of me), hit enter, then at the Downloads directory, run the noted commands.
One other thing, if you cannot find the files in the Download(s) dir, then you may need to find them..

Type: "find / -name hl2270dwlpr-2.1.0-1.i386.deb 2> /dev/null"
Do the same for the cups file.
(there is no space between the '2' and '>', and the redirect just gets rid of locations you can't see without root access.)

Then 'cd' into the directory and run the lines.

Hope this helps.
jobrimal

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by jobrimal »

[Thank you axe for your most helpful assistance.I had no problems in
navigating to the folder but no joy in making the said file EXECUTABLE!! I am thinking that possibly my six year old
might not like 64 bit and so I will try the 32bit version, once again Thank you. :wink:

Have fun Brian W. jobrimal@hotmail.com
jzsmart3

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by jzsmart3 »

I have Brother MFC-7340 and Mint 11. Did the following fairly easy steps to get AirPrint up and running:
(0) MFC-7340 drivers installed (previously, months ago)
(1) Update system (via Update Manager), to make sure my Mint 11 install had proper AirPrint-enabled CUPS files
(2) From CUPS web page ( http://localhost:631 ), at Administration | Server | Service Settings, made sure "Share printers connected to this system" was ticked. Also ticked "Allow printing from the Internet" and made printer the Server Default (under Printers | Set as Server Default). Last two items not tested whether they are actually required, but just leaving as is, 'cause my firewall blocks port 631 from the Internet and I only have one real physical printer installed in my setup.
(3) Open Port 631 in my firewall, for local network clients (only)
Now, my MFC-7340 shows up in my iOS devices and (importantly) prints fine.

The reason I posted this message is because I couldn't find anything corresponding to the instructions about "Connection path saying dnssd:// [...]" on my CUPS Web page. Nothing like that is there, just "ipp", "http", "serial", "usb", etc. Wasn't clear to me whether that was a mandatory step, but at any rate I skipped that part (as I have no choice) and left my MFC-7340 at its default USB connection.

My AirPrint set-up works fine. So sorting out "dnssd:// [...]" Connection path was not a significant issue in my case.
aitte

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by aitte »

jzsmart3: Hehe, I am just posting here to let people know that the reason you were confused by the guide was that you didn't read carefully enough, and you were reading the optional Network-printer setup steps for your printer that was actually connected over USB. In other words, human error, and your post didn't add anything to the topic. Just fyi. But hey at least we have clarified this in case someone else is confused/missed the references to Network in the original guide:
(32/64 bit) Configure CUPS for your printer connection (it's pre-set to USB but you might want to change it to Networked, so that's what I'll describe here):
* Go to http://localhost:631/ in a browser and go to the Printers tab and select the HL2270DW.
* It defaults to "Connection: usb:/dev/usb/lp0", so if you've connected it over USB, you can proceed to printing a test page right away, otherwise read on to switch it to a networked connection.
* From the Administration submenu, select "Modify Printer" and log in with your linux administrator account, then wait a while for it to discover networked printers via Bonjour/mDNS.
And to the author of this guide: A big THANK YOU! It made it really easy to set up my networked wireless Brother printer! :D
berniebee

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by berniebee »

Amen, it works!
I was trying to install my HL2270DW. It's plugged into a TP-Link WDR3600 wireless router. I spent many hours today reading advice on the Brother website and on various forums. I downloaded an alternate installer, I attempted to edit the pacprint file, I even reloaded Mint 14, to no avail. And then I discovered your post. 15 minutes later, I was printing successfully.
Thank you!
MichielO

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by MichielO »

Thanks for sharnig this,

I've tried to install my HL-2270DW, it worked untill I'm in the administrator submenu.
When I click on Modify Printer, the system only finds 1 version of HL2270DW, with connection: lpd://BRW0022589C575F/BINARY_P1

Do you have any idea how can I find more duplicates of this printer?

thanks!
maukka

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by maukka »

Hello,

I have successfully installed the printer drivers my DCP-7070DW needs but it still does not print properly. Everything is legible and quality is fine yet document's right edge gets cut off for about 5mm or more. It seems like the document has been shifted right in relation to the paper (A4).

Has anyone experienced similar problems or does someone know how to solve this? Network scanning works perfectly.

I am running 64bit Linut Mint 14.
dashiell

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by dashiell »

Thanks so much for your post.

I'm having the same problem as MichielO. How can I remedy this?
HangFire

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by HangFire »

dashiell wrote:Thanks so much for your post.

I'm having the same problem as MichielO. How can I remedy this?
That lpd connection may work fine, or you can go into CUPS http://localhost:631 , Printers Tab, pick your printer. and dropdown Modify Printer.

This procedure worked great for me and my HL2270DW on Mint 14 64bit.

I read through Brother's inexerable documentation and totally missed the brdpkgdeldep script which was my "missing link". I've been installing Brother's semi-broken deb's and rpm's for over a decade and every time on a new platform is a new adventure, and my previous notes are obsolete. The only thing that keeps my coming back is the low cost of consumables and the hardware that refuses to die.

HF
Picaflor_Azul

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by Picaflor_Azul »

Thank you, thank you, thank you!!!!!!! I was about to kill myself by beating my printer to death with my head.
PartlyCloudy

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by PartlyCloudy »

sudo apt-get install ia32-libs
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package ia32-libs is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
lib32asound2

E: Package 'ia32-libs' has no installation candidate


If this is not available, what do I do?

Thank you
palerail
Level 1
Level 1
Posts: 2
Joined: Thu Oct 17, 2013 11:20 pm

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by palerail »

Muchos gracias! After trying other ways including bad instructions from Brother and a few test prints saying "If you can read this, you are using the wrong driver for your printer"; (good-humored author unknown) - I can print wirelessly on the first day of my Mint Olivia install on an old laptop after a 15 year hiatus from any Linux involvement....
hifihospital

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by hifihospital »

Thank you, thank you, thank you!!!!
I'm a Nube and just installed Mint 16 on a Dell D620. I used your guide to successfully connect to my wireless Brother HL2280DW.

I had a little hiccup trying to log into Cups to Modify the printer but searched and found out how to create a root password.

Thanks again!!!!!!!!
parann0yed

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by parann0yed »

MichielO wrote:Thanks for sharnig this,

I've tried to install my HL-2270DW, it worked untill I'm in the administrator submenu.
When I click on Modify Printer, the system only finds 1 version of HL2270DW, with connection: lpd://BRW0022589C575F/BINARY_P1

Do you have any idea how can I find more duplicates of this printer?

thanks!
It's a year later but I get the same thing as this person. I also get an error when running the patch as instructed on both .deb files. Did any one else get these errors? I'm running 64bit Debian Wheezy. Thanks.
parann0yed

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by parann0yed »

Here is why it didn't help me and I voted "No"

./brdpkgdeldep.sh hl2270dwlpr-2.1.0-1.i386.deb
-su: ./brdpkgdeldep.sh: cannot execute binary file

I get that with the cups package as well.
DataMan

Re: HOW TO: Brother 32/64-bit Printer Drivers (and AirPrint!

Post by DataMan »

Works with a Brother DCP-7040.

Thanks,

-DataMan
Last edited by DataMan on Sun Feb 09, 2014 8:41 am, edited 1 time in total.
Post Reply

Return to “Tutorials”