Эта статья о том, как настроить сканирование изображений по сети с помощью роутера Asus WL-500gpv2, МФУ Epson XP 203 и Windows. С картинками.

Рассказывать буду на примере прошивки OpenWrt Backfire 10.03.1-rc5. От знаменитой прошивки Олега она отличается возможностью более детальной настройки программного обеспечения и возможностью управления пакетами из веб-интерфейса.

ВНИМАНИЕ! ДАННЫЙ МЕТОД РЕЖЕТ СКОРОСТЬ WI-FI. В КОНЦЕ СТАТЬИ ЛУЧШЕ ВАРИАНТ.

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=0x04b8 [Epson], product=0x0896 [XP-200 Series]) at libusb:001:003

# 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=0x04b8 , product=0x0896 , libusb:001:003, они нам понадобится.

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

Мне не повезло:

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 соответствует. Epson XP 203 соответствует backend sane-epson2.5.

Тут можно посмотреть мануал, из которого видно, что конфиг находится в файле /etc/sane.d/epson2.conf

Редактируем его:

nano /etc/sane.d/epson2.conf

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

usb 0x04b8 0x0896

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

usb libusb:001:003

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

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

root@OpenWrt:~# scanimage –L

device `epson bla bla bla

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

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

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.

Доработано под себя отсюда

МЕТОД 2

Прошивку берем вот эту WL500gpv2-1.9.2.7-rtn-r7520M-g4b3c772.trx

Берем флешку например 4Гб.

В настройках web интерфейса в сервисе подключаем SSH

Используя Putty (скачать где сказано выше) входим используя логин и пароль от веб интерфейса.

Готовим флешку. В идеале без раздела. Я удалял в Акронисе и создавал уже в линуксе роутера.

На видео вариант попроще.

fdisk -l смотрим имя похожее на sda

fdisk /dev/sda
m — помощь
p — просмотр разделов
d — удаление раздела
n — создание раздела

Создаем swap: n `enter` p `enter` 1 `enter` `enter` +50M `enter`
Создаем system: n `enter` p `enter` 2 `enter` `enter` +100M `enter`
Создаем data: n `enter` p `enter` 3 `enter` `enter` `enter`
Сохраняем все изменения и выходим: w

Смотрим разделы диска fdisk -l
Выдаст что-то вроде:
Disk /dev/sda: 4.0 GB, 4041885696 bytes

Device Boot Start End Blocks Id System
/dev/sda1  500720 82 Linux swap
/dev/sda2 1001472 83 Linux
/dev/sda3 2387840 83 Linux

Включаем swap (первая команда его создает, а вторая — активирует):
mkswap /dev/sda1
swapon /dev/sda1

Теперь форматируем оставшиеся разделы (system и data)
mke2fs -j /dev/sda2
mke2fs -j /dev/sda3

 

Монтируем

mount /dev/sda3 /opt #не забываем пробел перед /opt

cd /opt

ipkg.sh update
ipkg.sh install opkg

ipkg.sh install mc

ipkg.sh install nano

ipkg.sh install sane-backends

ipkg.sh install sane-frontends

ipkg.sh install xinetd

/etc/sane.d/epson2.conf

Редактируем его:

nano /opt/etc/sane.d/epson2.conf

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

usb 0x04b8 0x0896

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

usb libusb:001:004 (что покажет sane-find-scanner)

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

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

nano /opt/etc/sane.d/saned.conf

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

nano /opt/etc/xinetd.conf

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

service saned
{
type = UNLISTED
socket_type = stream
server = /opt/sbin/saned
protocol = tcp
port = 6566
user = admin
group = root
wait = no
}

 

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

root@OpenWrt:~# xinetd -d

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

Теперь скачаем и установим SaneTwain

В архиве инструкция и 2 файла – sanetwain.ds и scanimage.exe

запускаем scanimage.exe, указываем в настройках адрес роутера.

 

 

Автоматическое монтирование флешки

/usr/local/sbin

правим post-mount

добавляем mount /dev/sda3 /opt (или какой у вас раздел на флешке)

Автозапуск xinetd

/opt/etc/init.d/rc.unslung

добавляем xinetd

Сохраняемся

flashfs save && flashfs commit && flashfs enable && reboot

Эти отличия за счет расширения памяти через флешку, позволяют оставить скорость WI-Fi в районе 25-30Мбит