Making Brother Scanner Drivers work with Ubuntu 16.10



I have a Brother HL-2280DW network printer which is also a scanner, as many printers are nowadays. Brother, to their benefit, has decent Linux drivers and the printers are great for their reliability. The problem people have recently had, from around the Ubuntu 16.04 release is that the scanner drivers no longer work for some people. Hopefully this article can help guide people to the right solution.

First, visit the Brother driver page and enter your printer’s model number.

Once you’ve selected your model, you will be presented with a page listing the OS type and the package type. Make sure Linux is selected and the “Linux (deb)” package type is selected.

Brother driver OS selection screen

The next screen will present you with your list of drivers. You will need the following:

  • Scanner Driver 64bit (deb package)
  • Scan-key-tool 64bit (deb package)
  • Scanner Setting file (deb package)

Brother driver selection screen

Download those files and install them using the instructions they provide. Alternatively, since they’re deb files you can simply click on the downloaded files and use the Ubuntu Software Center to install them.

Make sure to restart or run the brscan-skey tool, following the instructions on the download pages.

Next, configure brsane to use your network scanner

brsaneconfig4 -a name=[any name] model=[your scanner model] ip=[your scanner IP]
brsaneconfig4 -q | grep Brother

The second line above simply verifies that the first command worked.

Now you should test the configuration with simple-scan. If it doesn’t detect your scanner continue to the first step below.

Note: Some of these steps may not be necessary for all people, or might not be necessary at all. This is simply the process I took to get the scanner working.

Step 1) Check for missing files with scanimage.

Run the following commands in a terminal:

export SANE_DEBUG_DLL=128
scanimage -L

You will see an output similar to the following:

[dll] sane_get_devices
[dll] load: searching backend `brother4' in `/usr/lib/x86_64-linux-gnu/sane:/usr/lib/sane'
[dll] load: trying to load `/usr/lib/x86_64-linux-gnu/sane/libsane-brother4.so.1'
[dll] load: dlopen()ing `/usr/lib/x86_64-linux-gnu/sane/libsane-brother4.so.1'
[dll] load: dlopen() failed (libusb-0.1.so.4: cannot open shared object file: No such file or directory)
[dll] load: searching backend `brother' in `/usr/lib/x86_64-linux-gnu/sane:/usr/lib/sane'
[dll] load: trying to load `/usr/lib/x86_64-linux-gnu/sane/libsane-brother.so.1'
[dll] load: couldn't open `/usr/lib/x86_64-linux-gnu/sane/libsane-brother.so.1' (No such file or directory)
[dll] load: trying to load `/usr/lib/sane/libsane-brother.so.1'
[dll] load: dlopen()ing `/usr/lib/sane/libsane-brother.so.1'
[dll] load: dlopen() failed (libusb-0.1.so.4: cannot open shared object file: No such file or directory)
[dll] load: searching backend `xerox_mfp' in `/usr/lib/x86_64-linux-gnu/sane:/usr/lib/sane'
[dll] load: trying to load `/usr/lib/x86_64-linux-gnu/sane/libsane-xerox_mfp.so.1'
[dll] load: dlopen()ing `/usr/lib/x86_64-linux-gnu/sane/libsane-xerox_mfp.so.1'
Segmentation fault (core dumped)

Note that it’s complaining about a missing shared file: “[dll] load: dlopen() failed (libusb-0.1.so.4: cannot open shared object file: No such file or directory)”

We will install libusb-0.1 to fix this

sudo apt-get install sudo apt-get install libusb-0.1-4

Run scanimage -L again to see the new results.

If you see the message “[dll] load: couldn’t open `/usr/lib/x86_64-linux-gnu/sane/libsane-brother.so.1′ (No such file or directory)” then you just need to add a symlink to the file in /usr/lib64/sane.

sudo ln -s /usr/lib64/sane/libsane-brother.so.1 /usr/lib/x86_64-linux-gnu/sane/libsane-brother.so.1

Run scanimage -L once more.

If there are no more segmentation faults and the application lists out the various scanners then your installation is fine. You can now run simple-scan or xsane and see if those applications detect your scanner.

If simple-scan still doesn’t detect your scanner please continue to the next step.

Step 3) Copy /usr/lib64/sane to /usr/lib/sane (you may either copy or symlink. I’ll post both methods, but the symlink option is the best.

#symlink (best choice)
sudo ln -s /usr/lib64/sane /usr/lib/sane

#copy (only if symlink doesn't work)
sudo cp -r /usr/lib64/sane /usr/lib/

Once again, test your scanner with simple-scan. If it still doesn’t detect your scanner then continue to the next step.

Step 4) Edit your udev rules (may not be necessary!)

sudo gedit /lib/udev/rules.d/40-libsane.rules

Add the following at the end of the file:

# Brother scanners
ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"

Reload the rules:

sudo udevadm control --reload-rules

Leave a Reply

Your email address will not be published. Required fields are marked *