OpenWRT.su

Open.Wireless.Super and LEDE

Беспроводной сканер на OpenWRT на примере Samsung SCX-3400

Беспроводной сканер на OpenWRT на примере Samsung SCX-3400

Не успел я установить и протестировать OpenWRT принт-сервер p910nd на своем МФУ Samsung SCX-3400, как захотелось научить его также сканированию документов и изображений по сети. Для решения данной задачи вам не хватит дисковой памяти, если у вас на роутере всего 4 мб из которых после установки OpenWRT всего 300кб свободно, поэтому сначала расширьте ее путем подключения внешней overlay флешки. После чего можно приниматься за дело. Запускать беспроводной сканер будем на базе роутера TP-LINK MR3020 с Chaos Calmer 15.05.1 OpenWRT. 

Кроме дисковой памяти вам, конечно, не хватит usb порта. Лучше всего взять usb-хаб с внешним питанием, так как кто знает, какие еще энергопотребляющие устройства вы будете подключать к своему роутеру в будущем. Я взял себе 4-х портовый usb-хаб с внешним питанием GiNZZU GR-384UAB и пока полностью им доволен. 

Беспроводной сканер на OpenWRT на примере Samsung SCX-3400

1. Установка необходимых пакетов

opkg update

Возможность сканирования в Linux, да и в OpenWRT в частности осуществляется при помощи универсального интерфейса сканирования Sane. На его базе, скорее всего есть программы под любую ОС, которые в случае поддержки железа сканера в Sane, помогут вам его запустить. Для начала смотрим на странице Sane поддерживается ли наш сканер и к какому типу железа и встроенного в него ПО он относится. Мой МФУ Samsung SCX-3400 оказался в числе поддерживаемых устройств и был классифицирован как типовое мфу от Xerox. 

Беспроводной сканер на OpenWRT на примере Samsung SCX-3400 

Значит сначала ставим пакет поддержки МФУ нашего типа

opkg install sane-xerox_mfp

Он потянет за собой зависммости, это нормально

Installing libsane (1.0.25-1) to root... 
nstalling libusb-compat (0.1.4-1) to root...
Installing libusb-1.0 (1.0.19-1) to root... 
Installing libpthread (0.9.33.2-1) to root... 
Installing librt (0.9.33.2-1) to root... 

Далее ставим пакет самого sane, он потянет за собой поддержку библиотек изображений 

opkg install sane-frontends  

Installing libjpeg (9a-1) to root...
Installing libpng (1.2.56-1) to root...
Installing zlib (1.2.8-1) to root...

Ну и заодно поставим демона sane

opkg install sane-daemon

И перезагрузим наш роутер

reboot

2. Настройка среды Sane в OpenWRT

Попробуем найти наш сканер

sane-find-scanner

Если OpenWRT видит наш сканер, то мы увидим сообщение типа

found USB scanner (vendor=0x04e8, product=0x344f [SCX-3400 Series]) at libusb:00 1:003

Далее посмотрим виден ли наш драйвер в Sane

scanimage -L

Мое мфу было проснулось, но в ответ была получена фига

No scanners were identified...

Как оказалось, что именно моего уникального номера оборудования Vendor и Product в конфигах sane-xerox.mfp не оказалось. Тут я уже решил подправить ручками:

vi /etc/sane.d/xerox_mfp.conf

Переходим в режим редактировать при помощи клавиши

i

Самой первой свободной незакомментированной строкой пишем usb и и vendor и product номера нашего принтера из ответа чуть выше

usb 0x04e8 0x344f

Выходим из режима редактирования при помощи клавиши Esc, cимволом двоеточия указываем редактору что нужно сохранить изменения w и выйти q

:wq

Пробуем опять найти сканер в Sane

scanimage -L

И удовлетворяющий меня ответ на этот раз был

device `xerox_mfp:libusb:001:003' is a Samsung SCX-3400 Series multi-function peripheral

Уже веселее. Раз Sane увидел, можно попробовать посканировать пока без сети

scanimage --format=png --resolution=150 > scan.png

В результате в текущей папке у вас должен появиться отсканированный файл с разрешением 150 точек в формате png.

Далее немного оптимизируем загрузку Sane. Для начала отключим поддержку тех драйверов принтеров, которых у нас и так нет. Для этого открываем файл /etc/sane.d/dll.conf и комментируем все строчки кроме net и драйверов вашего мфу, у меня остались только net и мой xerox_mpf. Таким образом при запуске Sane не будет перебирать список, а сразу подцепит только нужные там файлы и начнет сканирование. 

На этом считаем оболочку рабочей. Далее нужно разобраться со сканированием по сети. В данном случае роутер будет своеобразным сервером, к которому будут подцепляться клиенты. Причем последние могут быть под управлением разных ОС. 

Во всех официальных руководствах и man страницах пакетов все в один голос трубят, что нужно организовывать раздачу через пакет xinetd, который позволяет подгружать демон sane при обращении к сканеру, и так же успешно его выгружать когда клиент заканчивает пользоваться сетевым сканером. Xinetd вместо Saned слушает порт 6566. Я честно не люблю посредников, какими бы они были полезными. Поэтому я в первую очередь настроил сетевое сканирование при помощи одного только демона saned. 

3. Настройка для сканирование по сети через демона Saned в OpenWRT

Указываем IP адреса клиентов, которые будут иметь доступ к демону saned через сеть:

vi /etc/sane.d/saned.conf

В виду того, что всем домашним устройствам в моей сети присвоены постоянные ip адреса, я просто их перечислил

192.168.0.101
192.168.0.102
192.168.0.103
192.168.0.104

Можете указать сразу всю свою подсеть чтобы не парится

192.168.0.1/24

Примеры использования есть в самом файле. 

Далее нужно открыть порт 6566 в firewall. Но Sane также нужен еще диапазон портов для обмена информацией с клиентом. Если вы откроете только один порт 6566, то на начале сканирования постоянно будите терять связь с "сервером". Сначала укажем sane какие порты ему по доброте душевной мы выдаем для его дел, для этого в этом же конфиг файле saned.d задаем диапазон из 100 портов:

data_portrange = 30000 - 30100 

Сохраняем конфиг и выходим. 

Открывать сто портов абы кому не очень хорошая идея, поэтому надо позаботиться, чтобы в межсетевом экране доступ к ним имели только клиенты-члены нашей подсети. У меня доступ к моему роутеру к определенным портам имею все айпи из диапазона 192.168.0.1-192.168.0.255

Далее проверяем обозначенность порта 6566 как порта для saned. 

cat /etc/services | grep sane

sane-port 6566/udp
sane-port 6566/tcp sane saned

Если какой то из строк нет - добавляем вручную через редактор нужную строчку в /etc/services

Так как разработчики изначально подточили демона saned под xinetd у него нет своей отдельной службы запуска, как например, у принт-свервера p910nd. Запустим его вручную в фоновом режиме

saned -a

Далее проверяем случает ли порт наш помощник

netstat -l | grep sane
tcp 0 0 :::sane-port :::* LISTEN

Это значит, что порт на прослушке и ждет команду. Таким образом можно попробовать с клиентской машины из сети произвести сканирования. Разнообразие клиентов зашкаливает, выбрать тут так-то есть из чего из списка на официальном сайте Sane

Я же решил попробовать посканировать прямо на Android смартфон при помощи приложения для сканирования по сети SANEDroid, о том как это работает можно глянуть ниже:

 

Под Windows достаточно неплохо справляется SaneTwain, хотя и давно не обновлялся. Каждый найдет себе приложение по душе, есть даже порт XSane под Windows. В любом случае обзор клиентов - это тема отдельной статьи.

4. Добавляем демона saned в автозагрузку

Так как своей службы у него нет - запихаем его в пользовательский раздел автозагрузки. Для этого в файл /etc/rc.local перед exit 0 добавляем строчку

saned -a

Либо в LuCI в меню Система - Загрузка, листаем вниз, в форму Локальная загрузка набиваем ту же команду

Что собственно одно и то же. Это запустит демона сетевой службы сканирования в фоновом режиме. Теперь сканируйте в свое удовольствие откуда хотите. Если остались вопросы - задаем их в комментариях.

Комментарии  

salexa
0 # salexa 09.02.2018 02:06
> ...надо позаботиться, чтобы в межсетевом экране доступ к ним имели только клиенты-члены нашей подсети.
По умолчанию в OpenWrt Chaos Calmer локальный трафик (зона lan) не блокируется - как от локальных хостов к роутеру, так и обратно. Добавлять правила в iptables необходимо, если планируется подключаться извне (зона wan). А приведённое правило для "диапазона IP 192.168.0.1/24 из зоны wan" выглядит странновато. ;)
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 09.02.2018 16:09
Цитирую salexa:
> А приведённое правило для "диапазона IP 192.168.0.1/24 из зоны wan" выглядит странновато. ;)

Ну так получилось, что у меня TP-LINK MR3020 подключен к сети через Wi-Fi к роутеру TP-LINK-WR842N, который в свою очередь получает инет от вай фай свистка в Hilink режиме. У меня WAN не в том смысле немного используется, хотя в большинстве случаев, конечно, доступ нужно открывать только на диапазон зоны локальной сети
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 09.02.2018 16:29
Ну так то да, конечно, в общих чертах нужно wan заменить на lan, спасибо
Ответить | Ответить с цитатой | Цитировать
Антон
0 # Антон 15.05.2018 16:27
День добрый!
Сделал все по вашей инструкции, только для Canon MF3228 с использованием sane-pixma. Появилась проблема такого рода: сканируется только одна страница, запускаю scanimage чтобы сканировать вторую - все виснет без какой-либо реакции со стороны МФУ. Помогает только переткнуть usb провод от МФУ, но опять только на одну страницу. Подскажите, пожалуйста, в какую сторону копать?
P.S. используется usb-хаб без внешнего питания, может быть проблема в нем?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 15.05.2018 22:15
Цитирую Антон:
День добрый!
запускаю scanimage чтобы сканировать вторую - все виснет без какой-либо реакции со стороны МФУ.
Нужно сначала понять что происходит со связью. После корректного сканирования первой страницы scanimage -L видит сканер? или он отваливается?
Ответить | Ответить с цитатой | Цитировать
Антон
0 # Антон 18.05.2018 09:08
Цитирую Wrtman:
Нужно сначала понять что происходит со связью. После корректного сканирования первой страницы scanimage -L видит сканер? или он отваливается?
scanimage -L сканер видит.
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 15.05.2018 22:18
Цитирую Антон:

P.S. используется usb-хаб без внешнего питания, может быть проблема в нем?
Это самая простая проблема которую можете отсечь просто попробовав хаб с питанием. Хотя у сканера есть свое питание, поэтому 99 процентов что проблема не в нем. Скорее всего программный глюк, scanimage корректно не завершает сессию общения со сканером. Попробуйте другую прогу хоть сетевую
Ответить | Ответить с цитатой | Цитировать
Антон
0 # Антон 18.05.2018 09:11
Цитата:
Попробуйте другую прогу хоть сетевую
Не подскажете, какую?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 18.05.2018 11:12
Разнообразие клиентов зашкаливает, выбрать тут так-то есть из чего из списка на официальном сайте Sane www.sane-project.org/sane-frontends.html
Ответить | Ответить с цитатой | Цитировать
Антон
0 # Антон 18.05.2018 13:36
Не сразу понял, что речь о клиенте.
Дело в том, что даже команда
scanimage --format=png --resolution=150 > scan.png
выполненная с роутера через телнет не выполняется повторно.
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 18.05.2018 19:58
Цитирую Антон:
Не сразу понял, что речь о клиенте.
Дело в том, что даже команда
scanimage --format=png --resolution=150 > scan.png
выполненная с роутера через телнет не выполняется повторно.

scanimage -Lпосле первого успешного сканирования видит сканер или нет? Или команда не выводит вообще никакого сообщения
Ответить | Ответить с цитатой | Цитировать
Антон
0 # Антон 19.05.2018 09:50
Видит
root@OpenWrt:/# scanimage -L
device `pixma:04A92684_SBF750204681A' is a CANON Canon imageCLASS MF3240 multi-function peripheral
Ответить | Ответить с цитатой | Цитировать
salexa
0 # salexa 10.07.2018 10:57
Кстати, если маршрутизатор используется не исключительно для сканирования, а сканер включен/подключен не постоянно, то имеет смысл и saned из экономии ресурсов запускать только на время, пока включен сканер:
Цитирую /etc/hotplug.d/usb/25-scanner:
#!/bin/sh
VID_PID="4e8/344f" # SCX-3400 Series
SERVICE="/usr/sbin/saned -a"; PID="/tmp/run/saned.pid"

[ "$VID_PID" != "$(echo $PRODUCT | cut -d/ -f1-2)" ] && exit 0
[ "$ACTION" = add ] && $SERVICE
[ "$ACTION" = remove ] && kill $(cat "$PID")
Ответить | Ответить с цитатой | Цитировать
Linux_addict
+1 # Linux_addict 29.08.2018 18:02
поставить xinetd и забыть
Ответить | Ответить с цитатой | Цитировать
Малый
+1 # Малый 15.10.2018 23:34
openwrt 18.06.1 в пакетах команды sane-find-scanner нет - not found. Как быть?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 16.10.2018 23:04
Ничего страшного, главное чтобы scanimage -L определял сканер
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 11.04.2020 18:33
Все сделал по инструкции, но сканер то видит, то нет. в 90% не видит, не откликается. На команду sane-find-scanner находит scx3400, при этом нужно выключить/включить принтер, потом не видит. Из-за чего это, не понятно. в результате пока не настроил.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 12.04.2020 18:03
Возможно сканер отваливается после ответа, чуть выше описывали похожую ситуацию. Не понял как она решается!
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 13.04.2020 23:24
device `xerox_mfp:libusb:001:005' is a Samsung SCX-3400 Series multi-function peripheral
ответ несколько другой не 003, а 005,, потом молчок, нет девайса
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 16.04.2020 21:35
намекните, где искать ответ?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 19.04.2020 12:43
Поставьте и настройте клиента типа sandroid на cмартфоне или sanetwain на пк и не будет так часто отваливаться. Вы же не будите постоянно сканировать через командную строку на роутере
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 19.04.2020 14:09
загрузил SaneTwain 1.3V, не помогла не находит сервера, хотя адрес своего роутера ( к которому подключен SCX3400) прописал у меня 192.168.0.2
В этом и проблема, на scanimage -L один раз ответ получаю и все. на команды sane-find-scanner - not found,
scanimage --format=png --resolution=150 > scan.png - not SANE devices found. При этом, при этих обращениях принтер оживает, но не более. Такое ощущение, что где-то на полпути зависает. Даже не знаю куда копать. Может Sane через Xinetd попробовать настроить? На форуме openwrt сказали. что версия 19.07 какая-то ошибка 4pda.ru/forum/index.php?s=&showtopic=911457&view=findpost&p=95685694. так ли это?
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 21.04.2020 14:11
Через Xinet тоже е удалось ничего сделать. Куда копать, ума не приложу.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 22.04.2020 20:24
Wrtman, у Вас есть мысли куда копать? Сейчас уже вышел новый релиз sane bakends 1-29 (установлен в прошивке роутера 1-27), но как его поставить на роутер, не знаю, хотя он у меня скачен.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 24.04.2020 23:45
На форуме написали, что релиз Sane backends 1-0-27 не причём, на нем все работает, настраивали по Вашей инструкции. Прописал правило по доступу через lan по адресу моего роутера к порту 6566 . Пока ничего не помогло.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 26.04.2020 22:40
Файервол может мешать работе? "Далее нужно открыть порт 6566 в firewall" Не нашел у себя в роутере, где пишутся правил для Файервола, в межсетевом экране правила трафика сделал.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 29.04.2020 18:50
Нашли ошибку в моем исполнении
vi /etc/sane.d/saned.conf
192.168.0.1/24
data_portrange = 30000 - 30100
должны быть незакоментированы!!! (снять решетки)
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 29.04.2020 20:05
SaneTwain 1.3V уже определяет сканер, но потом опять выдает ошибку
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 30.04.2020 23:24
прописал в vi /etc/sane.d/xerox_mfp.conf незакоментированной строкой - tcp 192.168.0.2 9100 адрес своего роутера и порт 9100. сканер стал определяться постоянно! но при сканировании происходит ошибка и процесс зависает., после этого сканер опять не видно. строку usb 0x04e8 0x344f продукта и вендора закоментрировал, она не влияет.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 01.05.2020 22:46
В общем пока не победил, есть подозрение, что Sane 1-0-27.2 не работают нормально,.не я один с этим столкнулся bugs.launchpad.net/ubuntu/+source/sane-backends/+bug/1741977
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 10.05.2020 00:08
Осилил сетевое сканирование! перепрошил роутер на OPENWRT (LEDE) сейчас стоит 19.07.2 и сделал апгрейт на последний релиз sane backends, daemon, xerox mfp 1-0-29. сканер заработал. в файле vi /etc/sane.d/xerox_mfp.conf обязательно первой строкой (она должна быть незакоментированна) прописать tcp 192.168.1.1 9100 адрес вашего роутера и порт 9100. вендора и номер устройства я убрал. все сотальное как в этой статье (спасибо автору).
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 10.05.2020 12:27
а при tcp 192.168.1.1 9100 он обращается к сканеру как к сетевому, а не как к физическому и в этот момент тоже скорость обработки информации падает
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 10.05.2020 00:32
Единственное скорость сохранения сканкопии очень медленно секунд до 140 секунд 150dpi, 75 dpi за минуту. Как ускорить можно, кто знает?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 10.05.2020 12:25
Взять роутер помощнее ) тогда будет сканировать шустрее. Либо попробовать наоборот все это провернуть на Chaos Camer 15.05.1 он оперативки в разы меньше жрет и работает стабильно
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 10.05.2020 20:59
Цитирую Wrtman:
а при tcp 192.168.1.1 9100 он обращается к сканеру как к сетевому, а не как к физическому и в этот момент тоже скорость обработки информации падает

Без прописанного tcp и порта 9100, не хочет выполнять команду scanimage -L много раз, после первого обнаружения пишет нет девайса, воспользуйтесь sane-find-....
Думаете, что система и при прописанном номере девайса и вендор должна срабатывать, главное, чтобы сканирование завершалось?
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 10.05.2020 21:03
Цитирую Wrtman:
Взять роутер помощнее ) тогда будет сканировать шустрее. Либо попробовать наоборот все это провернуть на Chaos Camer 15.05.1 он оперативки в разы меньше жрет и работает стабильно

А что это такое?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 11.05.2020 21:00
одна из старых стабильных версий оперврт
Ответить | Ответить с цитатой | Цитировать
Eugen
0 # Eugen 11.07.2020 23:19
сканер определяется, scanimage -L. А вот при попытке сакнирания выдает ошибку: scanimage:open of device hpaio:/usb/HP_LaserJet_Professional_M1132_MFP failed: Error during device I/O
Ответить | Ответить с цитатой | Цитировать
Eugen
0 # Eugen 11.07.2020 23:20
Цитирую Eugen:
сакнирания

сканирования*
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 12.07.2020 11:38
Почитайте ветку, у меня аналогичные вещи были. Была проблема в релизе sane
Ответить | Ответить с цитатой | Цитировать
Eugen
0 # Eugen 12.07.2020 12:56
А где надыбать новый релиз? У меня с репозитория грузит только 1.0.27-4 демона, фронтенд и либы.
Ответить | Ответить с цитатой | Цитировать
Vsevolod Nikiforov
0 # Vsevolod Nikiforov 20.07.2020 00:05
посмотри на сайте Sane есть новый релиз
Ответить | Ответить с цитатой | Цитировать
Elektrik-IT
0 # Elektrik-IT 24.08.2020 20:28
Ребята, у всех у кого проблемы с SANE на стороне Openwrt и клиента (Linux), сам много времени потерял на настройку и доводку. Изначально не сканировал SANE на стороне Openwrt, выдавал ошибку. Решение: обновление SANE с 1.0.27 до 1.0.30 из репозитория OpenWrt-Snapshot. У меня прокатило на 19.07.3. Изначально работают все клиенты на Android ( SaneDroid, Insanescanner), на Windows 10 SaneDS. Не работают SaneTwain Mac OS X Yosemite и Xsane на Ubuntu. Решение проблемы на Ubuntu - переходим на gscan2pdf, желательно последней версии из ppa и в настройках программы выбираем "графический интерфейс" - scanimage, и, вуаля все работает без зависонов после первого сканирования, а XSane отправляем в корзину. Всем добра, спасибо за комментарии.
Ответить | Ответить с цитатой | Цитировать

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

Если вы хотите получать сообщения c ответами на ваши комментарии - то укажите свой настоящий e-mail. Если же вы тут проездом, чтобы оставить комментарий укажите в поле email no@openwrt.su