Brother MFC-J220 (and other brscan3 printers) on Linux

Preface: This is for Linux Mint 18.1 which is based on Ubuntu 16.04, other distributions will be similar.

Update: Check the comments section for information on other Brother printer models and distributions.


Brother offers the packages by themselves and an automated driver install tool. We’re going to use the automated tool. It uses dpkg and apt-get to install prerequisites, so make sure the apt/dpkg lock is available – Quit / Wait for any apt-get installs in other shells, and quit software update programs to be sure.

  1. Download the .deb ‘Driver Install Tool’ package from:
  2. Unzip the package and make the installer executable. Note: gunzip removes the original archive when unzipping
    $ gunzip ./linux-brprinter-installer-2.1.1-1.gz
    $ chmod +x linux-brprinter-installer-2.1.1-1
  3. Run the installer. Superuser permission is required. Put in your model number when requested.
    $ sudo ./linux-brprinter-installer-2.1.1-1 
    Input model name ->MFC-J220
    You are going to install following packages.
    OK? [y/N] ->y
  4. The installer will download the relevant package from Brother, install the prerequisites and the package. During this process you will have to agree to Brother and GPL licensing agreements.
  5. At the end of installing mfcj220cupswrapper you will be asked the location of the printer. If you are using USB then selecting no is fine.
    Preparing to unpack mfcj220cupswrapper-1.1.3-1a.i386.deb ...
    Unpacking mfcj220cupswrapper:i386 (1.1.3-1) ...
    Setting up mfcj220cupswrapper:i386 (1.1.3-1) ...
    Restarting cups (via systemctl): cups.service.
    Will you specify the Device URI? [Y/n] ->n
    Test Print? [y/N] ->y
    wait 5s.
    lpr -P MFCJ220 /usr/share/cups/data/testprint

    If you choose to manually specify, you’re presented an option list like this:

    0: ipp
    1: beh
    2: ippsbrscan3-0.2.13-1.amd64.deb
    3: socket
    4: ipp14
    5: lpd
    6: http
    7: https
    8: usb://Brother/MFC-J220?serial=XXXXXXXXXXXX
    9: hp
    10: smb
    11: hpfax
    12 (I): Specify IP address.
    13 (A): Auto. (usb://Brother/MFC-J220?serial=XXXXXXXXXXXX)
    select the number of destination Device URI. ->

    Hopefully you took the opportunity to print a test page and it all went well.

  6. Continue installing packages until complete.
  7. Note the installer downloaded the Brother packages into the current directory:
    $ ls

    Delete these or keep them around in an archive folder if you need the uninstallers.

OK, assuming that all went smoothly you should now have a working printer. However the scanner doesn’t work yet.

The installer package installed the brscan packages which drive the scanner. There’s one remaining file to download from the Brother driver page – the Scanner setting file. The driver page has the latest version.

If you need more information, the download page links you to: (This page has outdated versions and information for other distros)

Download the file from the main page and install it with:

$ sudo dpkg -i brother-udev-rule-type1-1.0.2-0.all.deb
Selecting previously unselected package brother-udev-rule-type1.
(Reading database ... 224361 files and directories currently installed.)
Preparing to unpack brother-udev-rule-type1-1.0.2-0.all.deb ...
Unpacking brother-udev-rule-type1 (1.0.2) ...
Setting up brother-udev-rule-type1 (1.0.2) ...
ls: cannot access '/etc/udev/rules.d/*.rules': No such file or directory

The error when installing the scanner config package is nothing to worry about. The following is what happens when removing the udev rule and reinstalling (you don’t have to do this step, it’s just a demo):

$ cd /opt/brother/scanner/udev-rules/type1
$ sudo ./install -e
$ sudo ./install
ls: cannot access '/etc/udev/rules.d/*.rules': No such file or directory

The udev rule gets installed fine though. Investigating the udev rule I discovered a second error:

$ sudo service udev status
Mar 18 23:58:11 xxxxxxx systemd-udevd[355]: unknown key 'SYSFS{idVendor}' in /etc/udev/rules.d/40-brother-libsane-type1.rules:17
Mar 18 23:58:11 xxxxxxx systemd-udevd[355]: invalid rule '/etc/udev/rules.d/40-brother-libsane-type1.rules:17'

It’s referring to an error in the file at /etc/udev/rules.d/40-brother-libsane-type1.rules

In newer versions of udev the SYSFS field has changed to ATTR. It looks like they tried to update it, repeating line 17 with both SYSFS on 17 and ATTR on 18. Go in and delete the SYSFS version on line 17.

While you’re in there remove any comments (#’s at the start) on the lower lines:


Setting the above makes the scanner available to normal system users

$ sudo nano /etc/udev/rules.d/40-brother-libsane-type1.rules
# delete the SYSFS line and uncomment the other lines
$ sudo service udev restart

We still need to make our Brother libraries available before we can use the scanner.

Confirm scanimage -L doesn’t work yet:

$ scanimage -L

No scanners were identified. ...

Make missing symbolic links (probably because we used 64 bit driver):

$ sudo mkdir /usr/lib/sane
$ sudo ln -s /usr/lib64/sane/ /usr/lib/sane/
$ sudo ln -s /usr/lib64/sane/ /usr/lib/sane/
$ sudo ln -s /usr/lib64/sane/ /usr/lib/sane/

Confrim scanimage -L now works:

$ scanimage -L
device `brother3:bus7;dev1' is a Brother MFC-J220 USB scanner

You should now try scanning. I use simple-scan. If your scanning program doesn’t work, try running as superuser in case there’s a permissions problem.

The brscan-skey package handles scanner buttons, info on setting it up is available eslewhere.

Hope that helps, it’s been a long one.

Postscript: If you encounter other problems not mentioned, please comment the solution. Thanks everyone