5 сентября 2011 в 12:39

Сканирование по сети – это просто

Эта статья «для чайников» о том, как настроить сканирование изображений по сети с помощью роутера Asus WL-500gpv2, МФУ Samsung SCX-4220 и Windows. С картинками.
Рассказывать буду на примере прошивки OpenWrt Backfire 10.03.1-rc5. От знаменитой прошивки Олега она отличается возможностью более детальной настройки программного обеспечения и возможностью управления пакетами из веб-интерфейса.
Cписок совместимого с прошивкой оборудования тут.
Эта инструкция скорее всего подойдет к любом у роутеру из этой таблицы, у которого не менее 8мб флеш-памяти и не менее 32мб оперативной.

Прошивка

Cкачать ее можно тут.
Способ прошивки может меняться в зависимости от модели роутера. Эта инструкция для роутеров, как у меня.
Устанавливаем прошивку с помощью утилиты восстановления прошивки от асус.
  1. Подключаем роутер к компьютеру через Ethernet(через любой из lan-портов)
  2. Переводим роутер в режим восстановления – выключаем питание роутера, зажимаем кнопку Reset/Restore, включаем питание, удерживаем кнопку до тех пор, пока индикатор питания не начнет моргать
  3. Никаких настроек ip-адресов делать не надо, разве что присвоить компу адрес из 192.168.1.0/255.255.255.0 отличный от 192.168.1.1, и запустить пинг на 192.168.1.1
  4. Запускаем программу Firmware Restoration, отключаем фаервол(об этом просит программа), выбираем файл прошивки с расширением .trx


  5. Ждем пару минут, пока роутер не появится по адресу 192.168.1.1


Настройка сканирования и печати

Первым делом меняем пароль роутера:



Настраиваем доступ в интернет:



Настраиваем сервер DHCP, и меняем адрес, если не устраивает 192.168.1.1. Я меняю его на 192.168.11.1, в дальнейшем вся настройка будет на этот адрес:



Сканирование


Далее, переходим к настройке пакетов.


Жмем Update package lists(если хотите поставить пакет, эту операцию нужно делать при каждой перезагрузке роутера), ищем через поле Filter и ставим пакеты:
  1. nano – более дружелюбный, чем vi, редактор
  2. sane-backends, sane-frontends
  3. xinetd – для доступа по сети
  4. kmod-usb-printer, kmod-usb-ohci, kmod-usb-uhci, kmod-usb2, kmod-usb-storage – поддержка различных USB-устройств на уровне ядра

Перезагружаем роутер.

Подключаемся к роутеру по ssh.
Команда sane-find-scanner должна выдать примерно следующее:
found USB scanner (vendor=0x04e8 [Samsung], product=0x341b [SCX-4200 Series]) at libusb:001:004
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.

Заметьте значения vendor=0x04e8 , product=0x341b , libusb:001:004, они нам понадобится.

Теперь, либо вам повезет, либо придется сделать дополнительные настройки.
Мне не повезло:
root@OpenWrt:~# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).


Тут можно узнать, какой модели сканера какой backend соответствует. Samsung SCX-4220 соответствует backend sane-xerox_mfp.5.
Тут можно посмотреть мануал, из которого видно, что конфиг находится в файле /etc/sane.d/xerox_mfp.conf
Редактируем его:

nano /etc/sane.d/xerox_mfp.conf

Добавляем в файл строчку

usb 0x04e8 0x341b

и, на всякий случай, эту строку, как советуют на форумах

usb libusb:001:004

Версия backends в этой прошивке 1.0.20, и, что интересно, при использовании последней версии(кажется, 1.0.22, версия ядра 2.6), которую я устанавливал на прошивке от Олега, сканер у меня так и не определился. Описание такой ситуации я тоже встречал на форумах, поэтому выбрал прошивку с версией ядра 2.4

Сохраняем файл, проверяем:

root@OpenWrt:~# scanimage –L
device `xerox_mfp:libusb:001:004' is a SAMSUNG ORION multi-function peripheral


Сканер определяется, все хорошо.

Теперь настроим доступ по сети:

nano /etc/sane.d/saned.conf

Добавляем в файл строчку 192.168.11.0/24 (необходимо указать подсеть вашего роутера)

nano /etc/xinetd.conf

Добавляем в файл следующие строки:

service saned
{
socket_type = stream
server = /usr/sbin/saned
protocol = tcp
user = root
group = root
wait = no
disable = no
}


Запускаем xinetd в режиме вывода отладочной информации:

root@OpenWrt:~# xinetd -d
Service defaults
Bind = All addresses.
Only from: All sites
No access: No blocked sites
No logging

Service configuration: saned
id = saned
flags = IPv4
socket_type = stream
Protocol (name,number) = (tcp,6)
port = 6566
wait = no
user = 0
group = 0
Groups = no
PER_SOURCE = -1
Bind = All addresses.
Server = /usr/sbin/saned
Server argv = saned
Only from: All sites
No access: No blocked sites
No logging

11/9/2@07:43:31: DEBUG: 29656 {cnf_start_services} Started service: saned
11/9/2@07:43:31: DEBUG: 29656 {cnf_start_services} mask_max = 6, services_started = 1
11/9/2@07:43:31: NOTICE: 29656 {main} xinetd Version 2.3.14 started with loadavg options compiled in.
11/9/2@07:43:31: NOTICE: 29656 {main} Started working: 1 available service
11/9/2@07:43:31: DEBUG: 29656 {main_loop} active_services = 1


Как видно, сервис запущен.

Если сервис не запустился, проверьте, чтобы в файле /etc/services была строчка saned 6566, и, если она отсутствует, то добавьте.

Теперь скачаем и установим SaneTwain
В архиве инструкция и 2 файла – sanetwain.ds и scanimage.exe
запускаем scanimage.exe, указываем в настройках адрес роутера:

перезапускаем scanimage.exe:


Почему ошибка?

Смотрим записи syslog в веб-интерфейсе:
Sep 2 07:59:19 OpenWrt daemon.debug saned[31278]: saned (AF-indep+IPv6) from sane-backends 1.0.20 starting up
Sep 2 07:59:19 OpenWrt daemon.debug saned[31278]: check_host: access by remote host: 192.168.11.139
Sep 2 07:59:19 OpenWrt daemon.debug saned[31278]: check_host: getaddrinfo for local hostname failed: Name or service not known
Sep 2 08:02:52 OpenWrt daemon.warn xinetd[29722]: Exiting...


Путем поиска по форумам выясняем, чтобы в этой ситуации все заработало, надо добавить в hosts запись с именем для адреса роутера:

root@OpenWrt:~# nano /etc/hosts

Добавляем строчку:

192.168.11.1 OpenWrt

Перезапускаем xinetd:

killall xinetd
xinetd


Перезапускаем scanimage.exe(он глючный, возможно, только со второго раза все будет ок)


Видим, что все работает. Ура.

Теперь надо включить автозапуск xinetd в веб-интерфейсе роутера:


Перезапускаем роутер, проверяем работу еще раз.

Теперь копируем второй файл, sanetwain.ds, в каталог C:\Windows\twain_32\
После этого в программах с поддержкой twain можно пользоваться сканером, в том числе и в замечательной программе для создания скриншотов Screenshot Captor:


Печать

Теперь настроим печать по сети:
Устанавливаем пакет luci-app-p910nd.

Делаем следующие настройки в веб-интерфейсе роутера:



Убедимся, что сервер запустится при перезагрузке роутера:



и то, что он действительно запустился:

root@OpenWrt:~# ps|grep p9100
32079 root 680 S /usr/sbin/p9100d -b -f /dev/usb/lp0 0


Настроим принтер:



Жмем «Пробная печать», ура!
Печать по сети на всех прошивках, которые я смотрел, настраивалась без проблем, так что я уверен, что у вас проблем тоже не возникнет.

Освобождение места на роутере под другие программы

Подключаемся по ssh.
Идея в том, чтобы удалить ненужные нам backends.
backends находятся в папке /usr/lib/sane/
Как видно из man, файлы нашего backend — libsane-xerox_mfp.so.1 и libsane-xerox_mfp.so.1.0.20
Соответственно, если вы не планируете подключать другой сканер, все остальные можно невозбранно удалить что освободит
root@OpenWrt:/usr/lib/sane# cd /usr/lib/sane/
root@OpenWrt:/usr/lib/sane# du -m
7 .

Около 3.5 мб! Почему 3.5 а не 7? Потому что в этом каталоге ровно половина файлов – символические ссылки на библиотеки, расположенные в этом же каталоге.

Способ удаления не самый изящный, но, тем не менее, действенный(mc установить не предлагать, под него уже нет места):
root@OpenWrt:/usr/lib/sane# rm libsane-a*
root@OpenWrt:/usr/lib/sane# rm libsane-b*
root@OpenWrt:/usr/lib/sane# rm libsane-c*
root@OpenWrt:/usr/lib/sane# rm libsane-d*
root@OpenWrt:/usr/lib/sane# rm libsane-e*
root@OpenWrt:/usr/lib/sane# rm libsane-f*
root@OpenWrt:/usr/lib/sane# rm libsane-g*
root@OpenWrt:/usr/lib/sane# rm libsane-h*
root@OpenWrt:/usr/lib/sane# rm libsane-i*
root@OpenWrt:/usr/lib/sane# rm libsane-j*
rm: cannot remove 'libsane-j*': No such file or directory
root@OpenWrt:/usr/lib/sane# rm libsane-k*
rm: cannot remove 'libsane-k*': No such file or directory
root@OpenWrt:/usr/lib/sane# rm libsane-l*
root@OpenWrt:/usr/lib/sane# rm libsane-m*
root@OpenWrt:/usr/lib/sane# rm libsane-n*
root@OpenWrt:/usr/lib/sane# rm libsane-o*
rm: cannot remove 'libsane-o*': No such file or directory
root@OpenWrt:/usr/lib/sane# rm libsane-p*
root@OpenWrt:/usr/lib/sane# rm libsane-q*
root@OpenWrt:/usr/lib/sane# rm libsane-r*
root@OpenWrt:/usr/lib/sane# rm libsane-s*
root@OpenWrt:/usr/lib/sane# rm libsane-t*
root@OpenWrt:/usr/lib/sane# rm libsane-u*
root@OpenWrt:/usr/lib/sane# rm libsane-v*
rm: cannot remove 'libsane-v*': No such file or directory
root@OpenWrt:/usr/lib/sane# rm libsane-w*
rm: cannot remove 'libsane-w*': No such file or directory


Главное — не увлечься, и не убить то, что нужно оставить

Теперь результат наглядно – до:



и после:



Редактируем файл
root@OpenWrt:/usr/lib/sane# nano /etc/sane.d/dll.conf

комментим # всестроки, не относящиеся к нашему backend(все, кроме xerox_mfp)

Теперь и scanimage запускается быстрее(он не тратит время на инициализацию всех backends), и хватит места, чтобы установить другие нужные сервисы.

P.S.
На форуме wl500g.info я читал замечания о том, что сканер в таком подключении работает медленнее, чем будучи подключенным напрямую к компу.

Давайте проверим… Сканируем лист А4 в цвете в разном разрешении.

600dpi через роутер(wifi, при этом смотрел ролик на youtube в 720p) 4мин 16сек, напрямую 1мин 47сек(через роутер реально в 2.5 раза медленнее);
300 dpi через роутер 62сек, напрямую 31сек;
150dpi через роутер 20сек, напрямую 15сек(тут разница совсем небольшая)

В принципе, для иллюстрации документов в формате А4 или распознавания текста хватит 150 dpi. В ситуации, когда один сканер на несколько человек и объемы сканирования небольшие, вполне себе ничего решение.
В ситуации, когда нужны высокие разрешения при больших объемах сканирования такое решение, естественно, не подойдет…

P.P.S.
Заметьте, у нас все получилось сделать без подключения флешек, монтирования swap и прочих хитростей типа /opt, и в роутере остался один незанятый порт USB.
+40
42238
134
1cnik 9,5

Комментарии (18)

+9
GloooM, #
Выложите хайрез вашего скана, очень надо принтер потестить )))
+1
1cnik, #
0
Cryptochild, #
У меня точно такой же роутер, который я один раз настроил пару лет назад и забыл про него. Я вот, что хотел спросить: торрент-клиент на этой прошивке есть? А его можно настроить? А есть хорошая инструкция?
Я просто одно время интересовался, а потом забил и сейчас не в теме.
0
1cnik, #
Есть какойто ctorrent, и наверное можно настроить…
Я забил на торренты на роутере, потому что неудобно, да и вряд ли он одновременно хотя бы 100 раздач потянет
0
bliznezz, #
Года 4 назад делали силами вебсервера с cgi и xsane. Но куда тяжелей, тем более для роутера.
+1
UksusoFF, #
Оказывается OpenWrt есть на мой стремный D-Link DSL-2640U, спасибо за статью! Вечером будем тестить!
0
simon311, #
«не так и не определился» — эдакий каламбур, наверно опечатка?
0
1cnik, #
Ага, опечатка.
Спасибо, исправил.
0
Rob1nZon, #
А не подскажете как прошиться на OpenWRT ,tp режима востановления?
0
Rob1nZon, #
*без. А то я сжег лан контролер, и теперь у меня онли беспроводной роутер)
0
1cnik, #
По вайфай не получится хотя бы потому, что после прошивки беспроводной модуль по умолчанию выключен
0
CRImier, #
Блин, поздно отвечаю, аж на два года -_- Можно, если сначала самому сбилдить прошивку, в которой вставить файл конфига настроенной вайфай-сети.
0
Doman, #
В свое время пытался — не получилось. Судя по всему, это происходило из-за режима работы сканера (Canon PIXMA MP540). Сначала он делал превью, а затем уже — полноценный скан. Вот и когда я работал с ним через sane, то МФУ делал только превью, причем не отдавал его. И на сайте Олега писал и еще где-то… в результате, решил купить МФУ с нативной поддержкой Wi-Fi. Но так и не купил :)
0
1cnik, #
Гляньте, может sane обновился с тех пор
0
eschava, #
Не легче ли использовать usb over ip? Тогда и драйвера родные подойдут
0
1cnik, #
слишком много манипуляций каждый раз, если несколько пользователей
0
eschava, #
да, для нескольких пользователей это не вариант
0
tarepanda, #
Если это просто, то что же тогда сложно?)

Только зарегистрированные пользователи могут оставлять комментарии.
Войдите, пожалуйста.