Pull to refresh

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

Reading time 5 min
Views 70K
Достался мне бесплатно старенький принтер 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. В настоящее время поддержки драйвера со стороны автора уже нет. Также он написал драйвер для принтеров Canon LBP-660 / LBP-460.

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

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


  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;



  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

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


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


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


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


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

Естественно, что по данной “технологии” этот принтер можно использовать и в MacOs (для нее драйверов от производителя не существует вообще), да и в любой другой ОС, поддерживающей печать по сети.
Добавлено 08.06.2017: С устройств под управлением Android модно использовать этот принт-сервер с помощью бесплатной программы из play market CUPS Printing

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

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

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

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

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

Articles