Брат WLAN-сканер DCP-7055W не работает (“недопустимый аргумент”)

Вопрос или проблема

У меня возникли проблемы с работой сканера Brother DCP-7055W по WLAN. Я уже установил официальные драйвера от Brother, и принтер работает нормально.

Я настроил сканер на использование статического IP-адреса (192.168.002.150). С помощью brsaneconfig4 я добавил сканер следующим образом (используя 002 вместо 2 после этого совета):

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

Пингование сканера работает отлично:

$ 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

Я также убедился, что проблема с 64-битными драйверами устранена:

$ 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

Я также исправил правила UDEV в соответствии с этим ответом:

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

Однако я не могу сканировать: какой бы инструмент я ни пробовал, я получаю следующую ошибку:

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

Это происходит как для обычного пользователя, так и при использовании sudo, поэтому это не должно быть проблемой с разрешениями.

Что я упустил?

ОБНОВЛЕНИЕ 1: Теперь с более подробным выводом отладки:

# SANE_DEBUG_BROTHER4=255 scanimage
[sanei_debug] Установка уровня отладки для brother4 на 255.
[brother4] инициализация brother
[brother4] версия brother: 1000001
[brother4] начало сканирования шины
[brother4] сканирование шины 005
[brother4] найдено устройство 0483/2016
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 004
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 003
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 002
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 001
[brother4] найдено устройство 18A5/0302
[brother4] найдено устройство 1D6B/0002
scanimage: open of device brother4:net1;dev0 failed: Invalid argument

ОБНОВЛЕНИЕ 2: Я также попробовал использовать сканер через USB. Я получаю ту же ошибку (“Invalid argument”), но на более позднем этапе процесса сканирования:

# SANE_DEBUG_BROTHER4=255 scanimage -T
[sanei_debug] Установка уровня отладки для brother4 на 255.
[brother4] инициализация brother
[brother4] версия brother: 1000001
[brother4] начало сканирования шины
[brother4] сканирование шины 005
[brother4] найдено устройство 0483/2016
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 004
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 003
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 002
[brother4] найдено устройство 1D6B/0001
[brother4] сканирование шины 001
[brother4] найдено устройство 04F9/02CE
[brother4] найдено устройство 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] отмена вызвана...

Часто задаваемые вопросы по сканерам Brother упоминают, что это может быть связано с тем, что область сканирования слишком мала, но передача -x 100 -y 100 в scanimage ничем не меняет. Я также попробовал явно передать все другие аргументы, которые scanimage -h вернул для сканера, но без успеха.

Установка libsane-extras, как предложено здесь, ничего не изменила.

Следуя поиску решения аналогичной проблемы, я выполнил

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

В конце вывода есть следующее:

4019  ioctl(151, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xbfbfe0a8) = -1 ENOENT (Нет такого файла или директории)
4019  gettimeofday({1387487538, 170759}, NULL) = 0
4019  ioctl(151, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xbfbfe0a8) = -1 ENOENT (Нет такого файла или директории)
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 (Нет такого файла или директории)
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)                     = ?

Весь лог полон вызовов ioctl, относящихся к USBDEFVS_SUBMITURB и получению Нет такого файла или директории. Однако я не знаю достаточно о внутреннем устройстве USB в Linux, чтобы понять это.

ОБНОВЛЕНИЕ 3: Мой ядро:

# uname -r
3.2.0-57-generic-pae

Соответствующий вывод dmesg:

[10210.399432] usb 1-1: usbfs: интерфейс 0 занят usblp пока 'scanimage' устанавливает конфигурацию #1
[10210.399446] usb 1-1: usbfs: процесс 5347 (scanimage) не занял интерфейс 1 до использования
[10211.428906] usb 1-1: usbfs: интерфейс 0 занят usblp пока 'scanimage' устанавливает конфигурацию #1
[10213.519554] usb 1-1: usbfs: интерфейс 0 занят usblp пока 'scanimage' устанавливает конфигурацию #1
[10213.519567] usb 1-1: usbfs: процесс 5352 (scanimage) не занял интерфейс 1 до использования
[10214.549025] usb 1-1: usbfs: интерфейс 0 занят usblp пока 'scanimage' устанавливает конфигурацию #1

Попробуйте ссылку ниже;

Проблема :

-name=Scanner---добавление типа brother
-name=SCANNER_DCP770CW

Мой Brother тип MFC-J430W.

Похоже, что пакет драйвера Brother .deb устанавливает драйвер sane в неправильную директорию для Ubuntu 16.04. Попробуйте следующее:

  1. Скопируйте все файлы из /usr/lib64 в /usr/lib

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

  2. Скопируйте все файлы из /usr/lib64/sane в /usr/lib/x86_64-linux-gnu/sane или /usr/lib/sane

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

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

Ответ или решение

Проблема с недоступностью сканера Brother DCP-7055W по WLAN, сопровождаемая ошибкой "Invalid argument", является распространённой при неправильной настройке или конфликте драйверов. Ниже представлены шаги, которые помогут вам решить данную проблему:

1. Проверка сетевых настроек

Вы уже указали, что задали статический IP-адрес для сканера (192.168.002.150). Убедитесь, что:

  • IP-адрес не конфликтует с другими устройствами в сети.
  • Подсеть на вашем маршрутизаторе соответствует выделенному IP-адресу.
  • Сканер действительно подключён к сети, используя этот IP-адрес.

Проверьте также параметры подключения WLAN на самом сканере, убедившись, что он подключён к той же сети, к которой подключён ваш ПК, выполняя команду ping и получая ответ.

2. Верные настройки SANE

При добавлении сканера с помощью brsaneconfig4 убедитесь, что вы правильно указали параметры. Использование "002" вместо "2" в вашем случае указывает на правильный синтаксис. Попробуйте следующее:

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

Также проверьте, что драйверы SANE установлены и загружены корректно. Проверьте наличие следующих библиотек:

ls -l /usr/lib/sane/libsane-brother4*

Если они отсутствуют или имеют неправильные права доступа, это может привести к ошибке.

3. Проверка UDEV правил

Вы упомянули, что уже исправили UDEV правила, но убедитесь в их корректности. Проверьте файл /lib/udev/rules.d/40-libsane.rules на наличие строк, которые разрешают доступ к устройствам. Если изменения были внесены, перезагрузите систему или выполните команду sudo udevadm trigger для применения новых правил.

4. Устранение конфликта драйверов

Исходя из вывода dmesg, видно, что интерфейс USB-контроллера захвачен процессом usblp, что может произвести конфликт. Чтобы избежать такой ситуации, вам нужно отключить поддержку печати через USB для вашего устройства. Для этого:

  1. Отключите любую печать на устройстве Brother DCP-7055W.
  2. Добавьте в файл /etc/modprobe.d/usblp.conf строку:
    blacklist usblp
  3. Перезагрузите систему после внесения изменений.

5. Эксперимент с USB-подключением

Поскольку ошибка также возникает при подключении через USB, попробуйте следующее:

  • Убедитесь, что сканер подключен напрямую к ПК, а не через хаб USB.
  • Выполните команду с повышенными правами:
    sudo scanimage -L

    Это поможет вам увидеть, определяется ли сканер системой правильно.

6. Регулировка параметров сканирования

Ошибка "Invalid argument" может возникать из-за неправильных параметров сканирования. Попробуйте указать параметры напрямую:

scanimage --format=png --resolution=300 --mode=color -x 100 -y 100 > test.png

Задайте минимальные размеры для ширины и высоты, чтобы исключить возможные проблемы с областями сканирования.

Заключение

Если указанные шаги не решили проблему, стоит задуматься о том, чтобы обратиться в техническую поддержку Brother, так как они могут предоставить более точные рекомендации в зависимости от моделей и версий программного обеспечения. Также проверьте, имеются ли обновления для драйвера или прошивки устройства.

Оцените материал
Добавить комментарий

Капча загружается...