Принтер 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 с принтером. Скачать его можно со страницы автора здесь http://www.boichat.ch/nicolas/capt/ . В настоящее время поддержки драйвера со стороны автора уже нет. Также он написал драйвер для принтеров Canon LBP-660 / LBP-460.

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

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

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

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

Не все гладко с печатью графики: скан-копия «грязной» ксерокопии документа формата A4 с разрешением 600 dpi в TIFF в одном экземпляре выводится на печать очень шустро и все Ok. При отправке на печать сразу двух экземпляров второй упорно выводится без примерно 20% нижней части.

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

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

Цитата:
$ 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 Smiling


Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can use BBCode tags in the text.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.

Больше информации о возможностях форматирования

CAPTCHA
Этот вопрос задается для проверки того, не является ли обратная сторона программой-роботом (для предотвращения попыток автоматической регистрации).