- PVSM.RU - https://www.pvsm.ru -

Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi

Достался мне бесплатно старенький принтер Canon Laser Shot LBP-1120. Отдали мне его с объяснением “что-то не получается подключить, наверное драйвера глючат”. Попробовал подключить его у себя на компьютер с Windows 7 x64 — Windows Update не смог подтянуть драйверы. Зашел на сайт производителя принтера — для этой модели драйверы есть начиная с Windows XP, но только под 32-битные версии. Перепробовал множество драйверов от других принтеров Canon, универсальные драйверы из раздела “Generic Drivers”, драйверы HP LaserJet 2200, 2300 — во всех случаях принтер никак не реагирует на команды компьютера.

Изучение руководства по эксплуатации и обрывков информации на форумах дали следующее: это принтер GDI или winprinter, где все вычисления при печати производятся собственно драйвером на процессоре компьютера, за счет чего “безмозглый” принтер получается дешевле в производстве (не нужны процессор и большой объем памяти). Модель LBP-1120 является клоном Hewlett-Packard (HP) LaserJet 1100 (только в нем отсутствуют “мозги”, в отличие от исходника), и по такой же схеме построены остальные модели семейства Canon Laser Shot, которое позиционировалось производителем как “принтеры для домашнего применения”. Почему в компании Canon решили, что дома может быть только 32-битная версия Windows — мне неведомо. Лично у меня дома 3 компьютера под управлением Windows и на всех стоит 64-битная версия и не менее 4ГБ ОЗУ.

Городить виртуальную машину с 32-битной Windows или вообще делать отдельный принт-сервер под ней я посчитал нецелесообразным, хотя в интернет все найденные мной обсуждения данного вопроса заканчиваются именно одним из этих двух вариантов. “Сказки” про то, что какой-то драйвер от другого производителя может подойти отбросил сразу, поиски “альтернативного” 64-битного драйвера приводят к страницам, расположенным в “темных подворотнях”. Один такой скачал ради интереса или, точнее, для подтверждения известной истины про бесплатный сыр — это оказался “червь”.

Значит будем строить принт-сервер на основе имеющегося и используемого для других целей Raspberry Pi ver 1 rev B, работающего под управлением Raspbian (клон Debian 7 Wheezy). Благо на сайте производителя принтера доступен драйвер под Linux 32/64 бит, хоть его и чихвостят в англоязычном сегменте Интернет за медленность работы и пожирание ресурсов. Установив на Raspberry Pi драйвер принтера и CUPS (Common UNIX Printing System), я получу полноценный принт-сервер под управлением Linux, к которому остальные клиенты смогут подключаться как к сетевому принтеру с использованием какого-либо “универсального” драйвера.

Для скачивания предлагается 5 версий драйвера (1.6, 1.8, 2.0, 2.2, 2.7 — все обновлены во второй половине июля 2015 г., различия между ними не известны). В скачанном архиве находятся откомпилированные пакеты deb и rpm под архитектуру i386 в 32- и 64-битном вариантах и исходные файлы. Откомпилированные пакеты не подходят для Raspberry, работающего на архитектуре ARMv6L. Скомпилировать исходные файлы версий 1.6 и 2.7 также не удалось по двум причинам: драйвер “заточен” под команды Intel и предусматривает обязательное наличие графической оболочки (по умолчанию GTK2.0), а на моем Raspberry их нет принципиально. Но есть альтернативный свободно распространяемый драйвер, написанный в 2004 году энтузиастом методом реверсного инжиниринга протокола обмена данными драйвера под Windows с принтером. Скачать его можно со страницы автора здесь www.boichat.ch/nicolas/capt [1]. В настоящее время поддержки драйвера со стороны автора уже нет. Также он написал драйвер для принтеров Canon LBP-660 / LBP-460.

Переходим от “много текста” непосредственно к установке драйвера принтера и CUPS:

  1. Установку CUPS делаем по рекомендациям со страницы wiki.debian.org/ru/SystemPrinting [2] вплоть до этапа “Добавление принтера” — драйвер ведь еще не стоит :)

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 1

  2. Для облегчения трудностей с администрированием CUPS добавляем в группу администраторов печати пользователя, который будет администратором:
    # usermod -a -G lpadmin MY_USER

  3. Компилируем и устанавливаем драйвер: распаковываем архив с файлами драйвера в папку /usr/src/ и выполняем команды:
    $ cd /usr/src/capt-0.1
    # make
    # make install
    # modprobe usblp
    # chmod a+rw /dev/usb/lp0

    Перегружаем CUPS:

    # /etc/init.d/cups restart

  4. Возвращаемся к инструкции из п.1 и добавляем принтер; Добавлять надо драйвер принтера “Canon Laser Shot LBP-810”; Да, да — они почти как близнецы братья, отличающиеся только наличием дуплекса в LBP-810; Естественно, что вся процедура в данном материале применима и для LBP-810;

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 2

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 3

  5. DeviceURI, который назначен принтеру по умолчанию, нам не подходит — вывод должен быть куда угодно, желательно “в пустоту”, только не в USB; Поэтому необходимо зайти в файл конфигураций принтеров системы CUPS (/etc/cups/printers.conf) и внести следующие изменения:

    Заменить строку:

    DeviceURI usb://Canon/LASER%20SHOT%20LBP-1120?serial=0158030E

    На строку:

    DeviceURI serial:/dev/null

    Теперь вывод заданий на печать будет происходить в отсутствующий COM port;

  6. Перегружаем CUPS:
    # /etc/init.d/cups restart

    В свойствах принтера параметр «Подключение» должен выглядеть как на картинке:

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 4

  7. Обязательно в настройках принтера делаем сброс состояния перед каждым заданием; В противном случае он будет печатать первое задание, а последующие пойдут только после выкл/вкл принтера;

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 5

  8. Заходим в панель управления принтерами CUPS и в установленном принтере отправляем на печать тестовую страницу CUPS; Не пугайтесь: она будет печататься на удивление долго — 3...6 минут проходит до начала вывода; Тестовую страницу принтера (4-ий пункт меню Обслуживание”) печатать бесполезно — у принтера все также “мозгов” нет, а разработчик драйвера ее не предусмотрел (как это сделано в оригинальном драйвере под Windows), поэтому задача сразу перейдет в состояние “Выполнена” и все :)

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 6

  9. В Windows идем в панель управления принтерами и добавляем сетевой принтер. Строку подключения можно взять из адресной строки браузера в п. 7, заменив протокол с https на http; Драйвер принтера можно выбрать практически любой из поддерживающих PS (PostScript); У меня прекрасно стал драйвер от HP LaserJet 2300; Драйвера принтеров с поддержкой PCL5/6 работать не будут.

    Принтер Canon Laser Shot LBP-1120 и принт-сервер на базе Raspberry Pi - 7

О скорости работы данного решения: на “прогретый” принтер задание на печать 2-страничного документа, содержащего только текст и таблицу, из MS Word 2010 занимает около 5...10 сек. Устройства между собой соединены через Wi-Fi роутер (ноутбук “по воздуху” и Raspberry по Ethernet).

Естественно, что по данной “технологии” этот принтер можно использовать и в MacOs (для нее драйверов от производителя не существует вообще), да и в любой другой ОС, поддерживающей печать по сети.

Не удалось “в лоб” отправить на печать текстовый файл из консоли — “принтер или класс не зарегистрирован”. В причинах и способах устранения данной проблемы пока не разбирался. Да и нет у меня необходимости печатать из консоли.

$ lp -d printers.conf
lp: The printer or class does not exist.

Вот тут [3] описан способ, как устанавливать “родной” драйвер на платформе i386 под управлением Ubuntu (на украинском языке).

На сайте поддержки Arclinux встретил утверждение, что с Canon Laser Shot LBP-1120 можно работать через драйвер принтера Xerox Phaser 6000B. На сайте Xerox есть драйверы для него для 64-битных Windows, но работоспособность данного утверждения не проверял.

PS. Был удивлен, узнав, что развитием CUPS занимается компания Apple :)

Автор: relia

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/208660

Ссылки в тексте:

[1] www.boichat.ch/nicolas/capt: http://www.boichat.ch/nicolas/capt/

[2] wiki.debian.org/ru/SystemPrinting: https://wiki.debian.org/ru/SystemPrinting

[3] Вот тут: http://kovalyshyn.pp.ua/164.html

[4] Источник: https://habrahabr.ru/post/314962/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox