I recently upgraded Ubuntu 13.10 (Saucy).

Scanning via my MFC-420CN had been working in Ubuntu and Linux Mint installs up though Olivia and Oneric. However once I upgraded from these, scanning broke. I installed a fresh copy of saucy to verify that it wasn't just something to do with the upgrade.

Brother's website has a notice that all brscan1 models no longer support usb scanning as of Ubuntu 11.10, but it doesn't seem to apply for brscan2 and brscan3 models. Moreover I found several other posts that seem to indicate at least brscan4 models are currently working. However I have been unable to verify scanners using brscan2 (or other divers other than brscan4) and ubuntu 13.10 (actually 12.10 and greater) are currently functioning.

For cross-referencing / to help others with the problem the complete list of brscan2 scanners is as follows:

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

Similar previously asked questions / problems (but for brscan3 driver hardware):

So far I've tried:

  • Installing sane-utils

  • irections at brother's website regarding the brscan2 install, including using the dpkg -f flag

  • editing /lib/udev/rules.d/40-libsane.rules to include


# Brother scanners

ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"
  • copying files form lib to lib64:


cd /usr/lib
ln -s ../lib64/libbrscandec2.so.1.0.0 .
ln -s ../lib64/libbrcolm2.so.1.0.1 .
ln -s ../lib64/libbrcolm2.so .
ln -s ../lib64/libbrscandec2.so.1 .
ln -s ../lib64/libbrscandec2.so .
ln -s ../lib64/libbrcolm2.so.1
cd sane
ln -s ../../lib64/sane/libsane-brother2.so.1.0.7 .
ln -s ../../lib64/sane/libsane-brother2.so.1 .
ln -s ../../lib64/sane/libsane-brother2.so .
  • installing ia32-libs and repeating the sane-utils install
  • removing the 64 bit brscan2 driver and replacing it with the 32 bit one, but results of scanimage with the 32 bit driver set-up for usb or network mode were less than promising:


# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
  • of the 32 bit windows drivers with WINE eumlating Win2000 or XP -- it almost completes in 2000.

Debugging 64 bit drivers:

With brscan2 installed I can open up simple-scan and find the scanner; moreover scanimage output indicates that everything is okay:

# scanimage -L
device `brother2:bus5;dev2' is a Brother DCP-350C USB scanner

But scanning (even as a root user) still doesn't work.

> sudo scanimage >image.pnm
scanimage: open of device brother2:bus2;dev4 failed: Invalid argument

xsane produces a similar error:

 Failed to start scanner: Invalid argument

sane-find-scanner produces a pipe error shown here: http://pastebin.com/tTNMyD1m but that seems to related to the fact that brother is providing the driver, not sane.

I'm pretty stuck at this point, any help would be appreciated.

  • Just found this link that seems the indicate the results of sane-find-scanner can be ignored, and I should just focus on the invalid argument error: linuxquestions.org/questions/slackware-14/…
    – virtualxtc
    Commented Dec 12, 2013 at 17:57
  • See this. additionaly you can add brother-lpr-drivers-mfc9420cn and brother-cups-wrapper-mfc9420cn
    – user224082
    Commented Dec 31, 2013 at 3:51
  • @DuminduMahawela aside from the *-dev packages I had all those "scanner drivers" installed.
    – virtualxtc
    Commented Jan 30, 2014 at 4:35
  • I've emailed brother for help, and referenced this question in-case there are any updates. Brother acknowledged my ticket, but aside from that all I've gotten is dead air. I bought another printer-scanner based on the sane compatibility list.
    – virtualxtc
    Commented Feb 4, 2014 at 6:34
  • The "SOLUTION" section of this page may help? bugs.launchpad.net/ubuntu/+source/xsane/+bug/478761 Commented Feb 26, 2014 at 0:24

5 Answers 5


After I update to 13.10 I got the same error when scanning. There are two problems here.

  1. The error Invalid argument is not a argument problem, but is a write access problem.
  2. The other problem is that the bus and dev number are wrong from the scanimage error.

How to find and fix the problem?

Install the brscan4 drivers from the brother website

sudo dpkg -i brscan4-0.4.2-1.amd64.deb

Check to see if it works

sudo brsaneconfig4 -d

Test to see if the scanner is installed (scanner need to be powered on). And run as a user NOT root

$ scanimage -L
device `brother4:bus5;dev1' is a Brother ADS-2000 USB scanner
$ scanimage --test
scanimage: open of device brother4:bus5;dev1 failed:
Invalid argument


$ scanimage
scanimage: open of device brother4:bus5;dev1 failed:
Invalid argument

You can use the following script to update the permissions for the scanner.

lsusb | grep -i brother | sed 's/://' | awk '{printf "/dev/bus/usb/%s/%s", $2,$4}' | xargs -i -t sudo chmod 666 "{}"

lsusb lists usb devices

grep -i brother will find the brother device (assumption I made is you have only one brother device connected to the USBs at a time)

sed 's/://' | awk '{printf "/dev/bus/usb/%s/%s", $2,$4}' will find the bus & device numbers

xargs -i -t sudo chmod 666 "{}" will add write permission to scanner

Here is more detailed information on why we did what we did above

To find out where the brother scanner is on the bus use lsusb. This is one of the problems in the scanimage. The bus is 003 and the device is 002 and not bus 5, dev 1 as per scanimage

$ lsusb
Bus 003 Device 002: ID 04f9:60a0 Brother Industries, Ltd**  
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

To fix the problem, you will need to use the path based on the location of the brother scanner in the lsusb command. In my case it was bus 003 and device 002. Note that if you unplug the USB cable to the scanner and plug it back in the device, you will get a new number and/or bus. (The number return back to 2 when you reboot the PC)


sudo cd /dev/bus/usb/003
sudo chmod 666 002

or just:

sudo chmod 666 /dev/bus/usb/003/002

Scanimage need to fix the message when it can not access the scanner to have the right bus and dev number and also tell the user that the problem is a write access problem.

Brother needs to update the driver code so that global user can write to the scanner i.e. chmod 666 to the scanner driver location

  • Can anyone confirm this fix? Fortunately, I knocked this scanner off my desk a month after I posted the question and had to purchase a new (SANE compliant) scanner. Mark / Dan the answer is still a bit unclear due to various grammar issues, please fix them so I can feel comfortable up voting.
    – virtualxtc
    Commented Jul 31, 2014 at 7:14
  • 1
    This answer looks really promising as the output from lsusb and scanimage -L show different dev/bus numbers. I tried changing the permissions on the /dev/bus/usb/... file to no avail. Is there another way to get the OS to look at the correct USB bus/dev number for the scanner? Commented Aug 9, 2014 at 11:50
  • This worked. After making the changes in the answer and booting up xsane, the first time I tried to acquire a preview it would give me a "scanner failed to start" error. But retrying it would work. Now I can scan! :)
    – jja
    Commented Oct 25, 2014 at 3:07
  • 2
    It didn't fixed it for me
    – Natim
    Commented Apr 7, 2015 at 11:46
  • 2
    This solution worked for me with Lubuntu 16.04 and Brother DCP-7030. However after reboot all permissions are reset. Looks like a udev rule is needed?
    – Xavier13
    Commented May 21, 2016 at 13:56

Just add your user to the lp group:

usermod -a -G lp username

After this you will have write permissions for your scanner.

Tested with:

  • 14.04 LTS 64 bit up-to-date
  • Brother DCP-J315W
  • linux-brprinter-installer-2.0.0-1 downloaded from Brother Support Center

The permissions for the printer/scanner at /dev/bus/usb/001 are:

crw-rw-r-- 1 root lp

It's because of this that adding your user to the lp group is a solution.

  • As indicated by the '#', I was running the command as root and still getting the error, so this was definitely not the solution to the error above.
    – virtualxtc
    Commented Jun 30, 2015 at 21:35
  • 1
    Did you copy (or linked with ln -s) the libraries from /usr/lib64 to /usr/lib as suggested at support.brother.com/g/s/id/linux/en/… ?
    – Bellera
    Commented Jul 2, 2015 at 20:30
  • Welcome to AskUbuntu - please be aware that I'd normally doc you -1 for this: If you had taken read my question, particularly what's written under the part "so far I've tried", you'd know the answer is 'yes'. In the future, please read the entire question before answering.
    – virtualxtc
    Commented Jul 11, 2015 at 0:20
  • Update for this old answer - this is all I needed to do now with Kubuntu 18.04 and a Brother MFC-L3770CDW. I thought I also needed the udev change and the symlinks, but I undid that and it still works, adding myself to the lp group solved it all. Commented Aug 23, 2020 at 0:32

Try this program called VueScan, I was searching for mfc-420cn driver and i ran into this website: "http://www.hamrick.com/" I haven't been able to test this though (because I still have yet to find the power cable to my old printer that's been collecting dust.), but it did say it would support a vast variety of printers, so I thought I should post it. Anyways, hope this helps.

  • Thanks, but for the price of that software I can buy a SANE compliant scanner! Since this answer is unverified and only slightly better than "buy a better scanner" I'm going to leave the question open.
    – virtualxtc
    Commented Mar 12, 2014 at 8:40
  • 1
    In my (long-ago) experience, VueScan is excellent; probably far superior to most scanner drivers. Its advantages are most apparent for scanning photographs and/or for fine control over the scan quality. I believe you can download and try it for free. The advantage is you never again have to suffer with the limitations of the manufacturer's nasty proprietary driver. Unfortunately you have to pay a third party to continue using the scanner you already paid for. Lots of folks have decided the cost is worthwhile, because VueScan works well on old AND new scanners. Commented Dec 3, 2014 at 17:05
  • I've spent several hours trying every fix for this issue (that can be found on the first few pages of Google), and VueScan is the only solution that has worked so far. I wouldn't buy a Brother scanner with Linux.
    – MRule
    Commented May 15, 2019 at 10:53

I ran into the same issue, and according to https://wiki.debianforum.de/Brother_Scanner the "Invalid Argument" error can be caused if the printer is connected to an USB 3 port (controlled by xhci_hcd). It started working for me as soon as I switched to an USB 2 port (controlled by ehci_hcd).

  • 2
    I had no usb 3 ports on the computer I was getting this error on.
    – virtualxtc
    Commented Jun 30, 2015 at 21:36
  • The same error seems to come up when ANYTHING goes wrong with the libsane-brother2.so.1 library. For example, I installed the brscan2 .deb package without running brother's horrible install script, and I was getting this same error. It turned out that it was because the driver incorrectly looks for libbrcolm2.so.1 in /usr/lib instead where it is, /usr/lib64.
    – istepaniuk
    Commented Apr 5, 2021 at 18:18

I'm using Ubuntu 13.10 32bit

I use MFC-7820N and everytime I upgrade the kernel I have to reinstall all the brother drivers. The ones I have are: brmfc7840nlpr-2.0.2-1.i386, brscan2-0.2.5-1.i386, cupswrapperMFC7840N-2.0.2-1.i386

I then double check that the rule "ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"" has not been modified or deleted in /lib/udev/rules.d/40-libsane.rules

After all that I reboot.

Lastly, I will give the brother printer it's own USB host controller, just as a extra measure for testing.

  • brmfc7840nlpr-2.0.2-1.i386 and upswrapperMFC7840N-2.0.2-1.i386 are printer drivers and irrelevant to this question.
    – virtualxtc
    Commented Apr 7, 2014 at 8:08
  • Might be a 64 bit vs 32 bit thing, however, I never had problems with 64 bit before. What kernel are you running? Can anyone else verify that they have this working?
    – virtualxtc
    Commented Apr 7, 2014 at 8:09
  • 1
    I also recently upgraded to 13.10 on a 64bit machine. Before my Brother DCP-135C scanner/printer worked, now it doesn't. Also I can't install the old drivers provided by Brother because they conflict with brother-lpr-drivers-extra. If I uninstall brother-lpr-drivers-extra and install the drivers provided by brother, it still doesn't work.
    – ramiro
    Commented Apr 10, 2014 at 7:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .