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

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

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

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

Жмем Update package lists(если хотите поставить пакет, эту операцию нужно делать при каждой перезагрузке роутера), ищем через поле Filter и ставим пакеты:
Перезагружаем роутер.
Подключаемся к роутеру по ssh.
Команда
Заметьте значения
Теперь, либо вам повезет, либо придется сделать дополнительные настройки.
Мне не повезло:
Тут можно узнать, какой модели сканера какой backend соответствует. Samsung SCX-4220 соответствует backend sane-xerox_mfp.5.
Тут можно посмотреть мануал, из которого видно, что конфиг находится в файле /etc/sane.d/xerox_mfp.conf
Редактируем его:
Добавляем в файл строчку
и, на всякий случай, эту строку, как советуют на форумах
Версия backends в этой прошивке 1.0.20, и, что интересно, при использовании последней версии(кажется, 1.0.22, версия ядра 2.6), которую я устанавливал на прошивке от Олега, сканер у меня так и не определился. Описание такой ситуации я тоже встречал на форумах, поэтому выбрал прошивку с версией ядра 2.4
Сохраняем файл, проверяем:
Сканер определяется, все хорошо.
Теперь настроим доступ по сети:
Добавляем в файл строчку
Добавляем в файл следующие строки:
Запускаем xinetd в режиме вывода отладочной информации:
Как видно, сервис запущен.
Если сервис не запустился, проверьте, чтобы в файле /etc/services была строчка
Теперь скачаем и установим SaneTwain
В архиве инструкция и 2 файла – sanetwain.ds и scanimage.exe
запускаем scanimage.exe, указываем в настройках адрес роутера:

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

Почему ошибка?
Смотрим записи syslog в веб-интерфейсе:
Путем поиска по форумам выясняем, чтобы в этой ситуации все заработало, надо добавить в hosts запись с именем для адреса роутера:
Добавляем строчку:
Перезапускаем xinetd:
Перезапускаем scanimage.exe(он глючный, возможно, только со второго раза все будет ок)

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

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

Теперь настроим печать по сети:
Устанавливаем пакет luci-app-p910nd.
Делаем следующие настройки в веб-интерфейсе роутера:

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

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

Жмем «Пробная печать», ура!
Печать по сети на всех прошивках, которые я смотрел, настраивалась без проблем, так что я уверен, что у вас проблем тоже не возникнет.
Подключаемся по ssh.
Идея в том, чтобы удалить ненужные нам backends.
backends находятся в папке /usr/lib/sane/
Как видно из man, файлы нашего backend — libsane-xerox_mfp.so.1 и libsane-xerox_mfp.so.1.0.20
Соответственно, если вы не планируете подключать другой сканер, все остальные можно невозбранно удалить что освободит
Около 3.5 мб! Почему 3.5 а не 7? Потому что в этом каталоге ровно половина файлов – символические ссылки на библиотеки, расположенные в этом же каталоге.
Способ удаления не самый изящный, но, тем не менее, действенный(mc установить не предлагать, под него уже нет места):
Главное — не увлечься, и не убить то, что нужно оставить
Теперь результат наглядно – до:

и после:

Редактируем файл
комментим # всестроки, не относящиеся к нашему backend(все, кроме
Теперь и 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.
Рассказывать буду на примере прошивки OpenWrt Backfire 10.03.1-rc5. От знаменитой прошивки Олега она отличается возможностью более детальной настройки программного обеспечения и возможностью управления пакетами из веб-интерфейса.
Cписок совместимого с прошивкой оборудования тут.
Эта инструкция скорее всего подойдет к любом у роутеру из этой таблицы, у которого не менее 8мб флеш-памяти и не менее 32мб оперативной.
Прошивка
Cкачать ее можно тут.
Способ прошивки может меняться в зависимости от модели роутера. Эта инструкция для роутеров, как у меня.
Устанавливаем прошивку с помощью утилиты восстановления прошивки от асус.
- Подключаем роутер к компьютеру через Ethernet(через любой из lan-портов)
- Переводим роутер в режим восстановления – выключаем питание роутера, зажимаем кнопку Reset/Restore, включаем питание, удерживаем кнопку до тех пор, пока индикатор питания не начнет моргать
- Никаких настроек ip-адресов делать не надо, разве что присвоить компу адрес из 192.168.1.0/255.255.255.0 отличный от 192.168.1.1, и запустить пинг на 192.168.1.1
- Запускаем программу Firmware Restoration, отключаем фаервол(об этом просит программа), выбираем файл прошивки с расширением .trx
- Ждем пару минут, пока роутер не появится по адресу 192.168.1.1
Настройка сканирования и печати
Первым делом меняем пароль роутера:

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

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

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

Жмем Update package lists(если хотите поставить пакет, эту операцию нужно делать при каждой перезагрузке роутера), ищем через поле Filter и ставим пакеты:
- nano – более дружелюбный, чем vi, редактор
- sane-backends, sane-frontends
- xinetd – для доступа по сети
- 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.