Вопрос или проблема
в течение нескольких дней я пытаюсь подключиться к Brother DCP-J315W через SANE, который хорошо работает с Win10, но я не могу запустить его на Ubuntu 24.04.
После прочтения множества форумных статей и проверки команд, таких как
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ brsaneconfig3 -q
0 "DCP-195C"
...
26 "DCP-J315W"
...
97 "MFC-8890DW"
Устройства в сети
0 DCPJ315W "DCP-J315W" I:192.168.178.23
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ ping 192.168.178.23
PING 192.168.178.23 (192.168.178.23) 56(84) байт данных.
64 байта от 192.168.178.23: icmp_seq=1 ttl=255 время=4.07 мс
64 байта от 192.168.178.23: icmp_seq=2 ttl=255 время=2.56 мс
64 байта от 192.168.178.23: icmp_seq=3 ttl=255 время=2.72 мс
64 байта от 192.168.178.23: icmp_seq=4 ttl=255 время=3.00 мс
64 байта от 192.168.178.23: icmp_seq=5 ttl=255 время=2.80 мс
64 байта от 192.168.178.23: icmp_seq=6 ttl=255 время=3.27 мс
^C
--- статистика ping для 192.168.178.23 ---
6 пакетов передано, 6 получено, 0% потеря пакетов, время 5008 мс
rtt мин/сред/макс/мдел = 2.557/3.069/4.065/0.498 мс
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ scanimage -L
Сканеры не найдены. Если вы ожидали увидеть что-то другое,
проверьте, что сканер подключен, включен и обнаружен
с помощью инструмента sane-find-scanner (если применимо). Пожалуйста, прочтите
документацию, которая поставляется с этим программным обеспечением (README, FAQ, manpages).
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$
и файлов конфигурации, я обнаружил, что saned.service не запускается. Другие действия (перезапуск, остановка) не имеют на него никакого влияния.
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl status saned.service
× saned.service - LSB: Сетевой сервер сканера SANE
Загружен: загружено (/etc/init.d/saned; сгенерировано)
Активно: неудача (Результат: код выхода) с Пт 2025-01-31 06:05:51 CET; прошло 44 мин
Документы: man:systemd-sysv-generator(8)
Процесс: 19072 ExecStart=/etc/init.d/saned start (код=завершен, статус=1/ОШИБКА)
CPU: 26ms
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19072]: * Запуск сетевого сервера сканера SANE saned
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19079]: saned (AF-indep+IPv6) от sane-backends 1.2.1-debian стартует
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19079]: do_bindings: [1] привязка не удалась: адрес уже используется
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19079]: do_bindings: [0] привязка не удалась: адрес уже используется
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19079]: do_bindings: не удалось привязать адрес. Выход.
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19079]: ФАТАЛЬНАЯ ОШИБКА; спасение, ожидание завершения дочерних процессов...
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx saned[19079]: bail_out: все дочерние завершены
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: saned.service: контр. процесс завершился с кодом, статус=1/ОШИБКА
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: saned.service: ошибка с результатом 'код выхода'.
31 янв 06:05:51 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: Не удалось запустить saned.service - LSB: сетевой сервер сканера SANE.
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl status saned.socket
● saned.socket - входящий сокет saned
Загружен: загружено (/etc/systemd/system/saned.socket; включено; пресет: включено)
Активно: активно (прослушивание) с Пт 2025-01-31 04:38:59 CET; прошло 2ч 11мин
Слушаю: [::]:6566 (Stream)
Принято: 6; Подключено: 0;
Задачи: 0 (ограничение: 18842)
Память: 8.0K (пик: 268.0K)
CPU: 3ms
CGroup: /system.slice/saned.socket
31 янв 04:38:59 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: Прослушивание saned.socket - входящий сокет saned.
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl restart saned.service
Работа для saned.service завершилась неудачно, поскольку управляющий процесс завершился с ошибкой.
См. "systemctl status saned.service" и "journalctl -xeu saned.service" для подробностей.
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl stop saned.service
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl restart saned.service
Работа для saned.service завершилась неудачно, поскольку управляющий процесс завершился с ошибкой.
См. "systemctl status saned.service" и "journalctl -xeu saned.service" для подробностей.
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl stop saned.service
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$ sudo systemctl status saned.service
× saned.service - LSB: Сетевой сервер сканера SANE
Загружен: загружено (/etc/init.d/saned; сгенерировано)
Активно: неудача (Результат: код выхода) с Пт 2025-01-31 06:54:07 CET; прошло 15с
Документы: man:systemd-sysv-generator(8)
Процесс: 27668 ExecStart=/etc/init.d/saned start (код=завершен, статус=1/ОШИБКА)
CPU: 29ms
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27668]: * Запуск сетевого сервера сканера SANE saned
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27675]: saned (AF-indep+IPv6) от sane-backends 1.2.1-debian стартует
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27675]: do_bindings: [1] привязка не удалась: адрес уже используется
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27675]: do_bindings: [0] привязка не удалась: адрес уже используется
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27675]: do_bindings: не удалось привязать адрес. Выход.
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27675]: ФАТАЛЬНАЯ ОШИБКА; спасение, ожидание завершения дочерних процессов...
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx saned[27675]: bail_out: все дочерние завершены
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: saned.service: контр. процесс завершился с кодом, статус=1/ОШИБКА
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: saned.service: ошибка с результатом 'код выхода'.
31 янв 06:54:07 friedrich-xyz-Laptop-15-cs3xxx systemd[1]: Не удалось запустить saned.service - LSB: сетевой сервер сканера SANE.
friedrich@friedrich-xyz-Laptop-15-cs3xxx:~$
В процессе этого обучения я понял, что порт 6566 удерживается процессом инициализации, пока нет “работы” для saned.service.
Несмотря на знание, что сервис ожидает активации входящим пакетом через saned.socket, он не должен “зависать” в этом состоянии. Возможно, я ошибаюсь и не понимаю, как приложение, systemd и saned.service взаимодействуют.
Что может быть коренной причиной или даже решением?
С наилучшими пожеланиями,
FrSch
Ответ или решение
Уважаемый FrSch,
Приветствую вас и спасибо за предоставленную информацию о вашей проблеме с доступом к сетевому сканеру Brother DCP-J315W через SANE в Ubuntu 24.04. Проблема взаимодействия между сервисами и сетью требует тщательного анализа, чтобы выявить и устранить её корень.
Теоретическая часть
SANE (Scanner Access Now Easy) — это система, предоставляющая программное обеспечение для работы с различными сканерами в Unix-подобных системах. В неё входит демон saned
, который позволяет другим устройствам в сети использовать функции сканера. saned.service
отвечает за сетевые запросы сканирования, а saned.socket
управляет прослушиваемым портом для этих запросов.
Из вашей информации видно, что saned.service
не способен запуститься из-за ошибки с привязкой к порту (bind error), что обычно говорит о конфликте портов. В данном случае, ошибка «Address already in use» указывает, что порт 6566 уже используется другим процессом либо самим saned.socket
.
Пример
Исходя из вывода команды systemctl
, можно видеть, что saned.socket
работает и активно прослушивает порт 6566. Однако, когда saned.service
пытается запуститься, он не может привязаться к тому же порту, что и приводит к его сбою. Это типичный сценарий, когда два процесса пытаются использовать один и тот же порт: первый, который успел занять порт, занимает его эксклюзивно, не оставляя доступа второму.
Приложение
Для решения вашей проблемы предлагаю следующие шаги:
-
Проверка конфигурации сокетов и сервисов:
- Проверьте
/etc/sane.d/saned.conf
и убедитесь, что в нём установлены правильные настройки для сетевого адреса, с которого возможен доступ к сканеру. - Убедитесь, что конфигурация
saned
соответствует используемым IP-адресам и портам.
- Проверьте
-
Отключение
saned.service
:- Поскольку
saned.socket
активен, нет необходимости в запускеsaned.service
вручную.saned.socket
автоматически запускает сервис при получении пакетов. Поэтому отключите автозапускsaned.service
:sudo systemctl disable saned.service sudo systemctl stop saned.service
- Поскольку
-
Диагностика активных соединений:
- Используйте
ss
илиnetstat
для проверки активных подключений на порту 6566:sudo ss -tuln | grep 6566
- Используйте
-
Проверка конфликтующих процессов:
- Убедитесь, что нет других процессов, использующих порт 6566. Если это процесс системы, убедитесь в отсутствии параллельных процессов, которые могли бы влиять на работу сервиса.
-
Обновление и проверка драйверов и библиотек SANE:
- Убедитесь, что все пакеты SANE актуальны, особенно
sane-backends
, который предоставляет функционал для вашего сканера:sudo apt update sudo apt upgrade
- Убедитесь, что все пакеты SANE актуальны, особенно
-
Создание и проверка udev-правил (если необходимо):
- Иногда требуется дополнительная настройка прав доступа к устройству, если сканер видится, но недоступен. Вы можете создать файл правил в
/etc/udev/rules.d/
.
- Иногда требуется дополнительная настройка прав доступа к устройству, если сканер видится, но недоступен. Вы можете создать файл правил в
-
Журналы и Отладка:
- Используйте
journalctl
для более детализированной диагностики ошибокsaned.service
:journalctl -xeu saned.service
- Используйте
Надеюсь, данные шаги помогут вам устранить проблемы с saned.service
и обеспечат стабильное подключение вашего сканера. Не стесняйтесь задавать дополнительные вопросы, если что-то останется неясным.
С уважением,
Ваш IT-эксперт.