Вопрос или проблема
У меня возникли проблемы с работой сканера 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. Попробуйте следующее:
-
Скопируйте все файлы из /usr/lib64 в /usr/lib
sudo cp /usr/lib64/* /usr/lib
-
Скопируйте все файлы из /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 для вашего устройства. Для этого:
- Отключите любую печать на устройстве
Brother DCP-7055W
. - Добавьте в файл
/etc/modprobe.d/usblp.conf
строку:blacklist usblp
- Перезагрузите систему после внесения изменений.
5. Эксперимент с USB-подключением
Поскольку ошибка также возникает при подключении через USB, попробуйте следующее:
- Убедитесь, что сканер подключен напрямую к ПК, а не через хаб USB.
- Выполните команду с повышенными правами:
sudo scanimage -L
Это поможет вам увидеть, определяется ли сканер системой правильно.
6. Регулировка параметров сканирования
Ошибка "Invalid argument" может возникать из-за неправильных параметров сканирования. Попробуйте указать параметры напрямую:
scanimage --format=png --resolution=300 --mode=color -x 100 -y 100 > test.png
Задайте минимальные размеры для ширины и высоты, чтобы исключить возможные проблемы с областями сканирования.
Заключение
Если указанные шаги не решили проблему, стоит задуматься о том, чтобы обратиться в техническую поддержку Brother, так как они могут предоставить более точные рекомендации в зависимости от моделей и версий программного обеспечения. Также проверьте, имеются ли обновления для драйвера или прошивки устройства.