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

    Эта статья «для чайников» о том, как настроить сканирование изображений по сети с помощью роутера 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.
    Метки:
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

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

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