0

I'm having trouble getting the scanner of my Brother DCP-7055W working over WLAN. I've already installed the official drivers from Brother, and the printer itself is working fine.

I've set up the scanner to use a static IP address (192.168.002.150). Using Brother's brsaneconfig4 I've added the scanner as follows (using 002 instead of 2 following this tip):

brsaneconfig4 -a name=DCP-7055W model=DCP-7055W ip=192.168.002.150

Pinging the scanner works fine:

$ brsaneconfig4 -p
test DCP-7055W
ping 192.168.002.150 -w 10

PING 192.168.002.150 (192.168.2.150) 56(84) bytes of data.
64 bytes from 192.168.2.150: icmp_req=1 ttl=255 time=9.21 ms
64 bytes from 192.168.2.150: icmp_req=2 ttl=255 time=5.67 ms
64 bytes from 192.168.2.150: icmp_req=3 ttl=255 time=6.01 ms
64 bytes from 192.168.2.150: icmp_req=4 ttl=255 time=3.33 ms

I've also made sure that the issue with 64bit drivers is fixed:

$ ls -l /usr/lib/sane/libsane-brother4*
lrwxrwxrwx 1 root root     35 Sep 25 07:18 /usr/lib/sane/libsane-brother4.so -> /usr/lib/sane/libsane-brother4.so.1
lrwxrwxrwx 1 root root     39 Sep 25 07:18 /usr/lib/sane/libsane-brother4.so.1 -> /usr/lib/sane/libsane-brother4.so.1.0.7
-rwxr-xr-x 1 root root 129376 Sep 25 07:18 /usr/lib/sane/libsane-brother4.so.1.0.7

I've also fixed the UDEV rules according to this answer:

$ grep saned /lib/udev/rules.d/40-libsane.rules 
ENV{DEVTYPE}=="usb_device", MODE="0664", OWNER="root", GROUP="saned"

However, I cannot actually scan: Whatever tool I try, I get the following error:

$ scanimage -T
scanimage: open of device brother4:net1;dev0 failed: Invalid argument

This happens both as normal user and when using sudo, so it shouldn't be a permission problem.

What am I missing?

UPDATE 1: Now with some more verbose debug output:

# SANE_DEBUG_BROTHER4=255 scanimage
[sanei_debug] Setting debug level of brother4 to 255.
[brother4] brother init
[brother4] brother version: 1000001
[brother4] starting bus scan
[brother4] scanning bus 005
[brother4] found dev 0483/2016
[brother4] found dev 1D6B/0001
[brother4] scanning bus 004
[brother4] found dev 1D6B/0001
[brother4] scanning bus 003
[brother4] found dev 1D6B/0001
[brother4] scanning bus 002
[brother4] found dev 1D6B/0001
[brother4] scanning bus 001
[brother4] found dev 18A5/0302
[brother4] found dev 1D6B/0002
scanimage: open of device brother4:net1;dev0 failed: Invalid argument

UPDATE 2: I now also tried using the scanner via USB. I get the same error ("Invalid argument"), but at a later point in the scanning process:

# SANE_DEBUG_BROTHER4=255 scanimage -T
[sanei_debug] Setting debug level of brother4 to 255.
[brother4] brother init
[brother4] brother version: 1000001
[brother4] starting bus scan
[brother4] scanning bus 005
[brother4] found dev 0483/2016
[brother4] found dev 1D6B/0001
[brother4] scanning bus 004
[brother4] found dev 1D6B/0001
[brother4] scanning bus 003
[brother4] found dev 1D6B/0001
[brother4] scanning bus 002
[brother4] found dev 1D6B/0001
[brother4] scanning bus 001
[brother4] found dev 04F9/02CE
[brother4] found dev 1D6B/0002
scanimage: rounded value of br-x from 215.9 to 215.88
scanimage: rounded value of br-y from 355.6 to 355.567
scanimage: sane_start: Invalid argument
[brother4] cancel called...

A Brother scanner FAQ mentions that this could be due to the scanning area being to small, but passing -x 100 -y 100 to scanimage doesn't change anything. I also tried to explicitly pass all other arguments that scanimage -h returned for the scanner, but without success.

Installing libsane-extras, as suggested here did not change anything.

Following the troubleshooting of a similar problem, I've run

# strace -o strace.out -f scanimage -T

At the end of the output, there's the following:

4019  ioctl(151, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xbfbfe0a8) = -1 ENOENT (No such file or directory)
4019  gettimeofday({1387487538, 170759}, NULL) = 0
4019  ioctl(151, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xbfbfe0a8) = -1 ENOENT (No such file or directory)
4019  gettimeofday({1387487538, 170926}, {4294967236, 0}) = 0
4019  gettimeofday({1387487538, 171013}, {4294967236, 0}) = 0
4019  gettimeofday({1387487538, 171104}, NULL) = 0
4019  ioctl(151, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xbfbfe068) = -1 ENOENT (No such file or directory)
4019  write(2, "scanimage: sane_start: Invalid a"..., 40) = 40
4019  ioctl(151, USBDEVFS_CONTROL or USBDEVFS_CONTROL32, 0xbfbfe2e0) = 5
4019  ioctl(151, USBDEVFS_RELEASEINTERFACE, 0xbfbfe304) = 0
4019  semop(1245186, {{0, 1, SEM_UNDO}}, 1) = 0
4019  semctl(1245186, 0, IPC_64|IPC_RMID, 0xbfbfe2b8) = 0
4019  close(151)                        = 0
4019  munmap(0xb755a000, 134532)        = 0
4019  munmap(0xb7525000, 104424)        = 0
4019  munmap(0xb751b000, 38084)         = 0
4019  munmap(0xb74ef000, 176256)        = 0
4019  exit_group(4)                     = ?

The whole log is full of ioctl calls referring to USBDEFVS_SUBMITURB and getting a No such file or directory. However I don't know enough about the Linux USB internals to make sense of that.

UPDATE 3: My kernel:

# uname -r
3.2.0-57-generic-pae

Relevant output from dmesg:

[10210.399432] usb 1-1: usbfs: interface 0 claimed by usblp while 'scanimage' sets config #1
[10210.399446] usb 1-1: usbfs: process 5347 (scanimage) did not claim interface 1 before use
[10211.428906] usb 1-1: usbfs: interface 0 claimed by usblp while 'scanimage' sets config #1
[10213.519554] usb 1-1: usbfs: interface 0 claimed by usblp while 'scanimage' sets config #1
[10213.519567] usb 1-1: usbfs: process 5352 (scanimage) did not claim interface 1 before use
[10214.549025] usb 1-1: usbfs: interface 0 claimed by usblp while 'scanimage' sets config #1
0

Try the link below;

Problem :

-name=Scanner---adding type brother
-name=SCANNER_DCP770CW

My Brother type MFC-J430W.

0

It Seems that the Brother driver .deb package installs the sane driver in the wrong directory for Ubuntu 16.04. Try the following:

  1. Copy all files from /usr/lib64 to /usr/lib

    sudo cp /usr/lib64/* /usr/lib

  2. Copy all files from /usr/lib64/sane to /usr/lib/x86_64-linux-gnu/sane or /usr/lib/sane

    sudo cp /usr/lib64/sane/* /usr/lib/sane

    sudo cp /usr/lib64/sane/* /usr/lib/x86_64-linux-gnu/sane

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.