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.


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 (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/ /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.


6 thoughts 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 ( cannot open shared object file: No such file or directory)

    Liked by 1 person

  2. From here is the current list of brscan printers:

    brscan models
    DCP-1000 DCP-1400 DCP-8020 DCP-8025D DCP-8040 DCP-8045D FAX-4750e FAX-5750e MFC-3220C MFC-3320CN MFC-3420C MFC-3820CN MFC-4800 MFC-6800 MFC-8220 MFC-8420 MFC-8440 MFC-8500 MFC-8820D MFC-8840D MFC-9030 MFC-9070 MFC-9160 MFC-9180 MFC-9660 MFC-9700 MFC-9760 MFC-9800 MFC-9860 MFC-9880

    brscan2 models
    DCP-110C DCP-115C DCP-117C DCP-120C DCP-130C DCP-135C DCP-150C DCP-153C DCP-155C DCP-310CN DCP-315CN DCP-330C DCP-340CW DCP-350C DCP-353C DCP-357C DCP-540CN DCP-560CN DCP-7010 DCP-7020 DCP-7025 DCP-750CW DCP-770CW DCP-8060 DCP-8065DN MFC-210C MFC-215C MFC-230C MFC-235C MFC-240C MFC-260C MFC-3240C MFC-3340CN MFC-3360C MFC-410CN MFC-420CN MFC-425CN MFC-440CN MFC-465CN MFC-5440CN MFC-5460CN MFC-5840CN MFC-5860CN MFC-620CN MFC-640CW MFC-660CN MFC-665CW MFC-680CN MFC-685CW MFC-7220 MFC-7225N MFC-7420 MFC-7820N MFC-820CW MFC-845CW MFC-8460N MFC-8660DN MFC-8670DN MFC-885CW MFC-8860DN MFC-8870DW MFC-9420CN

    brscan3 models
    DCP-145C DCP-163C DCP-165C DCP-167C DCP-185C DCP-195C DCP-197C DCP-365CN DCP-373CW DCP-375CW DCP-377CW DCP-383C DCP-385C DCP-387C DCP-395CN DCP-585CW DCP-6690CW DCP-7030 DCP-7040 DCP-7045N DCP-8070D DCP-8080DN DCP-8085DN DCP-9010CN DCP-9040CN DCP-9042CDN DCP-9045CDN DCP-J125 DCP-J315W DCP-J515W DCP-J715W MFC-250C MFC-255CW MFC-257CW MFC-290C MFC-295CN MFC-297C MFC-490CW MFC-495CW MFC-5490CN MFC-5890CN MFC-5895CW MFC-6490CW MFC-6890CDW MFC-7320 MFC-7340 MFC-7345N MFC-7440N MFC-7450 MFC-7840N MFC-7840W MFC-790CW MFC-795CW MFC-8370DN MFC-8380DN MFC-8480DN MFC-8680DN MFC-8880DN MFC-8890DW MFC-9010CN MFC-9120CN MFC-9320CW MFC-9440CN MFC-9450CDN MFC-9840CDW MFC-990CW MFC-J220 MFC-J265W MFC-J270W MFC-J410 MFC-J410W MFC-J415W MFC-J615W MFC-J630W

    brscan4 models
    DCP-1510 DCP-1510R DCP-1511 DCP-1512 DCP-1512R DCP-1518 DCP-7055 DCP-7055W DCP-7057 DCP-7057WR DCP-7060D DCP-7065DN DCP-7070DW DCP-8110D DCP-8110DN DCP-8112DN DCP-8150DN DCP-8152DN DCP-8155DN DCP-8157DN DCP-8250DN DCP-9020CDW DCP-9055CDN DCP-9270CDN DCP-J132W DCP-J140W DCP-J152W DCP-J172W DCP-J4110DW DCP-J525W DCP-J552DW DCP-J725DW DCP-J752DW DCP-J925DW FAX-2950 FAX-2990 HL-2280DW MFC-1810 MFC-1810R MFC-1811 MFC-1813 MFC-1815 MFC-1815R MFC-1818 MFC-7240 MFC-7290 MFC-7360 MFC-7360N MFC-7362N MFC-7365DN MFC-7460DN MFC-7470D MFC-7860DN MFC-7860DW MFC-8510DN MFC-8512DN MFC-8515DN MFC-8520DN MFC-8690DW MFC-8710DW MFC-8712DW MFC-8810DW MFC-8910DW MFC-8912DW MFC-8950DW / MFC-8950DWT MFC-8952DW MFC-9125CN MFC-9130CW MFC-9140CDN MFC-9325CW MFC-9330CDW MFC-9340CDW MFC-9460CDN MFC-9465CDN MFC-9560CDW MFC-9970CDW MFC-J2310 MFC-J245 MFC-J2510 MFC-J280W MFC-J285DW MFC-J425W MFC-J430W MFC-J4310DW MFC-J432W MFC-J435W MFC-J4410DW MFC-J450DW MFC-J4510DW MFC-J4610DW MFC-J470DW MFC-J4710DW MFC-J475DW MFC-J5910DW MFC-J625DW MFC-J650DW MFC-J6510DW MFC-J6710DW MFC-J6910DW MFC-J825DW MFC-J835DW MFC-J870DW MFC-J875DW

    ADS models
    ADS-1000W ADS-1100W ADS-1500W ADS-1600W ADS-2000 ADS-2100 ADS-2500W ADS-2600W


  3. Thanks, these are great instructions. A couple of amendments:

    As of today (29 Jan 2018) looks like brother has updated its download files for the MFC-7340 since you wrote this post – though I’m not sure what changed.

    The error you describe in the rules file (SYSFS vs. ATTRS) does not seem to cause an error for me (with ubuntu 16.04.3).

    To get the scanner to work without root privileges, you say to uncomment the line:
    in the rules file, along with some other lines. This is correct, but what you are missing is that, for this to work, the user needs to be in that group. So if do as you said, and then execute:

    $ sudo adduser putyourusernamehere scanner

    then all will work.

    Liked by 1 person

  4. I struggled with this for ages but the answer was really simple. There is a configuration command called brsaneconfigX where X depends on which of the brscan models it is. Here is the output from the help command:

    [~] $ brsaneconfig4 -h
    USAGE: brsaneconfig4 [-OPTION] OPTION:
    -a name=FRIENDLY-NAME model=MODEL-NAME ip=xx.xx.xx.xx
    -a name=FRIENDLY-NAME model=MODEL-NAME nodename=BRN_xxxxx
    : Add network scanner
    : Remove network scanner
    -d : Diagnosis
    -p : Ping (for network scanners)
    -s:[LABEL] : Save current configuration
    -l:[LABEL] : Load saved configuration

    I used the first option and suddenly my applications could see the scanner. There’s a good tutorial describing this at


Leave a Reply

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

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

Google+ photo

You are commenting using your Google+ 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 )


Connecting to %s