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.

mfcj220_all

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: http://support.brother.com/g/b/downloadtop.aspx?c=eu_ot&lang=en&prod=mfcj220_all
  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.
       mfcj220lpr-1.1.3-1.i386.deb
       mfcj220cupswrapper-1.1.3-1.i386.deb
       brscan3-0.2.13-1.amd64.deb
       brscan-skey-0.2.4-1.amd64.deb
    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
    brscan3-0.2.13-1.amd64.deb
    brscan-skey-0.2.4-1.amd64.deb
    linux-brprinter-installer-2.1.1-1
    mfcj220cupswrapper-1.1.3-1a.i386.deb
    mfcj220cupswrapper-1.1.3-1.i386.deb
    mfcj220lpr-1.1.3-1a.i386.deb
    mfcj220lpr-1.1.3-1.i386.deb
    uninstaller_brscan3
    uninstaller_brscan-skey
    uninstaller_MFCJ220
    

    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: http://support.brother.com/g/s/id/linux/en/instruction_scn1c.html?c=eu_ot&lang=en&prod=mfcj220_all&redirect=on (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:

MODE="0666"
GROUP="scanner"
ENV{libsane_matched}="yes"
SYMLINK+="scanner-%k"

Setting the above makes the scanner available to normal system users (I think)

$ 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/libsane-brother3.so /usr/lib/sane/libsane-brother3.so
$ sudo ln -s /usr/lib64/sane/libsane-brother3.so.1 /usr/lib/sane/libsane-brother3.so.1
$ sudo ln -s /usr/lib64/sane/libsane-brother3.so.1.0.7 /usr/lib/sane/libsane-brother3.so.1.0.7

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.

Advertisements

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

  1. Thank you for the instructions. They helped me tremendously with my Brother MFC-J220 on Ubuntu 17.04. I had just one extra step to get scanning working:
    sudo apt install libusb-0.1-4
    I figured this out by looking at the output from:
    SANE_DEBUG_DLL=3 scanimage -L
    Which said:
    [dll] load: dlopen() failed (libusb-0.1.so.4: cannot open shared object file: No such file or directory)

    Liked by 1 person

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