HowTo install the Brother DCP-7065DN in a Linux network environment & Troubleshooting

Getting printers and multifunction devices to work in a Linux environment can be a challenge at times.
That’s why I narrowed my choice for a new MFP down to HP and Brother, since they do offer respectable support and drivers for Linux platforms.
I went with the Brother DCP-7065DN in the end.

My setup: MFP plugged in a router (Linksys WRT-54G) via Ethernet. 2.6.39-ARCH x86_64

Setting up the Scanner was relatively painless, while getting the printer to work reliably took some serious pain (which wasn’t the fault of Brother’s drivers in any way).

Printer

1. Check if other drivers available

  1. Check repositories with yaourt -Ss brother
  2. Check foomatic, if your device is supporter. These drivers usually work out of the box for supported devices.
  3. Check the Gutenprint database.

Result: none available for the DCP-7065DN.
So we’ve got to download the official Brother drivers.

2. Get the official drivers

I was a bit concerned as Brother only provides .rpm or .deb drivers for i368, not for x64.
However, I decided to give it a try, an I wasn’t disappointed.
In fact, Brother’s official FAQ states that the 32bit drivers can be used for 64bit systems, with some modifications. They do not describe how to do it in Arch, so I ‘m going to explain it step by step.

I downloaded the two rpm packages into a temporary folder and extracted them with rpmextract (which can be found in extra repository)

$  rpmextract.sh cupswrapperDCP7065DN-2.0.4-2.i386.rpm
$  rpmextract.sh dcp7065dnlpr-2.1.0-1.i386.rpm

Extraction will yield an usr and a var folder in your temporary directory.

3. Modifications

Modify files to make it work with Archlinux
Edit following file


$ emacs PathToTemporaryDir/usr/local/Brother/Printer/DCP7065DN/cupswrapper/cupswrapperDCP7065DN-2.0.4

Find and replace each instance of
/etc/init.d/cups with /etc/rc.d/cupsd
and the remaining
/etc/init.d/ with /etc/rc.d/

This is unfortunately described wrongly in other guides I have found!
Be careful. The current cups daemon in Arch is cupsd, not cups!

4. Copy the files

After having edited the file, you are ready to copy the files to the corresponding directories:

$ sudo cp -r PathToTemporaryDirectory/usr/* /usr
$ sudo cp -r PathToTemporaryDirectory/var/* /var

4. Installing drivers and printer

Now go to the following directory and execute the cupswrapper scrpit:

$ cd /usr/local/Brother/Printer/DCP7065DN/cupswrapper

$ sudo ./cupswrapperDCP7065DN-2.0.4
:: Stopping cupsd daemon                                                [DONE]
:: Starting cupsd daemon                                                [DONE] 

5. Finishing CUPS configuration

If you now return to http://localhost:631/
you will find the appropriate driver for your MFP when adding a device!

Add printer in Cups webinterface

Add a new printer in Cups webinterface

Congratulations!
Althoughit is a 32bit driver, I have found no problems so far. It works like a charm.
The official FAQ says the same.

6. Message “Receiving Data” on LCD, but no printing

Downgrade the file package to 5.04.

Edit: “file” works for me from version 5.08 on. No downgrade needed anymore!

This was the key to solving my printer related problem!
If you can’t find it anymore in your /var/cache/ you can get it from http://schlunix.org/archlinux/
Install the older package by:

 pacman -U /var/cache/pacman/pkg/pkgname-olderpkgver.pkg.tar.gz

It might be helpful to restart cups now:

sudo /etc/rc.d/cupsd restart

Scanner

1. Install sane

You may also want to install xsane (graphical frontend) along with it.

2. Get the right drivers

Find out which version of brscan your device needs on the Brother website. In the case of the DPC-7065DN, it is brscan4. A quick

$ yaourt -Ss brscan

tells me, that at this time there are only brscan 1 to 3 availabe on AUR.

So we need to download the drivers from the Brother website and install them manually.

In my case, I download  the 64bit rpm’s in a temporary directory:

brscan4-0.3.0-2.x86_64.rpm
brscan-skey-0.2.1-3.x86_64.rpm

3. Convert the rpm’s

Unfortunately, Brother only provides .rpm and .deb files.
Since we cannot use these directly, we need to extract them using rpmextract (from extra repository):

$ rpmextract.sh brscan4-0.3.0-2.x86_64.rpm brscan-skey-0.2.1-3.x86_64.rpm

This will create a usr directory in the extraction directory.

4. Copy the driver

Copy the extracted directory to its destination on the system:

$ sudo cp -r PathToTemporaryDir/usr/* /usr

Now you need to add “brother4” to the end of /etc/sane.d/dll.conf
Or you can run the included script that does just that:

$ sudo ./usr/local/Brother/sane/setupSaneScan4 -i

4.1 For 64bit systems: link files

In your extracted files, you’ll find the libsane executable and two symbolic links to it in a directory called lib64:

$ ls -l PathToTemporaryDir/usr/lib64/sane/
lrwxrwxrwx  libsane-brother4.so -> /usr/lib64/sane/libsane-brother4.so.1
lrwxrwxrwx  libsane-brother4.so.1 -> /usr/lib64/sane/libsane-brother4.so.1.0.7
-rwxr-xr-x  libsane-brother4.so.1.0.7

However, in Arch64, a directory /usr/lib64 did not exist until you copied this driver into your system (Step 4).
So your System might be looking for the driver files in the usual /usr/lib.
Link the files in the following way:

$ ln -s /usr/lib64/sane/libsane-brother4.so.1.0.7 /usr/lib/sane/
$ ln -s /usr/lib64/sane/libsane-brother4.so.1 /usr/lib/sane/
$ ln -s /usr/lib64/sane/libsane-brother4.so /usr/lib/sane/

So that the final result looks like this:

$ ls -l /usr/lib/sane/libsane-br*
/usr/lib/sane/libsane-brother4.so -> /usr/lib64/sane/libsane-brother4.so
/usr/lib/sane/libsane-brother4.so.1 -> /usr/lib64/sane/libsane-brother4.so.1
/usr/lib/sane/libsane-brother4.so.1.0.7 -> /usr/lib64/sane/libsane-brother4.so.1.0.7

5. Install the driver

Check the list of supported scanners:
brsaneconfig4 -q

Note the exact spelling of your model -> EXACT_MODEL

Find IP Adress of your device:

In my case, having it plugged in a WRT54G router, I easily find out the IP with the router’s admin interface (Tomato in my case).
I also made it static, since I want to make  sure applications can find the MFP always at the same location.
You could also find the IP that was assigned to the device in its Network menu on the LCD.

Run brsaneconfig

Syntax is
brsaneconfig4 -a name=[ANY_NAME] model=[EXACT_MODEL] ip=[IP_ADDR]

$ sudo brsaneconfig4 -a name=Scanner model=DCP-7065DN ip=192.168.1.117

$ brsaneconfig4 -q|grep Scanner
0 Scanner             "DCP-7065DN"        I:192.168.1.117

6. Sane rules

Add the following line to /lib/udev/rules.d/53-sane.rules

# Brother DCP-7065DN
ATTRS{idVendor}=="04f9", ATTRS{idProduct}=="024a", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"

I got the Product ID from lsusb when plugged in via USB. I didn’t work this out via networking, unfortunately.

7. Test if scanner works

$ scanimage -T

Now you should be able to run xsane and scan!

Advertisements

17 Comments

  1. Just wanted to say thanks! This worked for the Brother MFC-7360N, too!

  2. CPU Gastronomy

    Thank you very much for this useful guide !
    Maybe I’ll do something on the Archwiki on this.

    Just a little correction too at step 3 :
    it reads “$ emacs PathToTemporaryDir/usr/local/Brother/Printer/DPC7065DN/cupswrapper/cupswrapperDCP7065DN-2.0.4”
    but should be :
    “$ emacs PathToTemporaryDir/usr/local/Brother/Printer/DCP7065DN/cupswrapper/cupswrapperDCP7065DN-2.0.4”

    It’s just a little typo error :p

    • Thanks for your comment!
      However, I do not see what you mean is a typo. I think both of your lines are the same. To me it seems to be correct.
      Best regards

      • Cpu Gastronomy

        You just misplaced the D and the P . You wrote […]Printer/DPC7065DN[…] and it should be […]Printer/DCP7065[…]

        Also, there’s a PKGBUILD now in the AUR for that (not done by me).

        I also got a problem with the printer now. Since I wiped my disk to reinstall a fresh Arch on encrypted partitions, I cannot print to the printer; the printer doesn’t react even if cups is saying that it sent the file successfully.
        More info here : https://bbs.archlinux.org/viewtopic.php?pid=992382#p992382

      • Oh dear, I see. I corrected the article. Thanks for pointing out!

  3. Cpu Gastronomy

    Oups, I forgot the DN after the number :P

  4. Cpu Gastronomy

    I found the solution to my problem : it seems that with this printer on a x86_64 arch, I need to install “cupslib” from the multilib repository.

  5. Fashion

    Thank you for install the driver guide on my linux.

  6. Thank you very much for this document.
    It saved me!

    One day, I’ll translate in to french.

  7. Hi, I made almost everything described here. The only difference is that I installed the brsane4 and brsane-skey for 64bits, available at brother’s website.

    I have already installed on ubuntu 10.04, and everything went good. But on my lubuntu 11.10 the scanner is not being recognizes by xsane or simple-sacan.

    ps: I had to create the /lib/udev/rules.d/53-sane.rules file, case there wasn’t on my system…

    Any ideas?

  8. Hi, we have this printer connected to winxp and shared in the network all Windows Unit can print from network through shared printer in the said winxp. but the Linux (mint) in particular can find and install the printer but was unable to print through network by the shared printer in WinXP?

    do you have any suggestion?

    • Mark

      Three years old or not, this post saved me from a very frustrating two-day battle with what I had assumed would be a straightforward setup of a new Brother HL-2280DW. The printer seemed to setup ok, jobs were listed in the cups admin page as submitted and having printed correctly, but… no actual printing. The problem? The cups/cupsd goof. Corrected and reran the script, restarted and watched the display light on my printer kick on after submitted a new job. Anyways, just wanted to say thanks!

  9. locksmiths

    Very good article! We are linking to this great post on our site.
    Keep up the good writing.

  10. Naman

    I am trying to setup 7065DN printer in my raspberry Pi, but facing similar problem. I dont see drivers for ARM architecture. Please let me know if you have any idea how I can make it work or any pointers.

  11. Chris

    Hey,

    I tried following your tutorial for my Brother MFC-J245, sadly I’m encountering two problems:

    1) trying to start brsaneconfig4 gives me this error: brsaneconfig4: line 1: syntax error: unexpected “(”

    2) trying to scanimage gives me the following error: scanimage: ‘/usr/lib/sane/libsane-brother4.so.1’ is not an ELF file

    Any idea?

  12. Cdr Jameson

    I’ve used this page so many times to get my printer installed. Thank you. Would you consider updating it to reflect the new org.cups.cupsd daemon and systemctl scripts?

Trackbacks

  1. Setting up Brother MFC-7360N printer « My Linux Fixes

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: