Принтер Canon LBP3000 на Ubuntu 16.04 64-bit

Есть у меня в загашнике, помимо струйного, ещё и старый чёрно-белый лазерный принтер Canon i-SENSYS LBP3000. Чтобы он работал в Linux’е, необходим драйвер Canon CAPT Driver, установка которого (по крайней мере, на 64-разрядной системе) имеет, скажем так, некоторые особенности, увы, не задокументированные вендором надлежащим образом. Дабы избегать каждый раз долгой возни с установкой и прыганий по граблям, решил записать тут для себя работоспособную инструкцию, прям по горячим следам. Может, ещё кому сгодится. 😺

Разумеется, в интернете можно найти кучу инструкций, как можно завести этот драйвер под различные версии ОС Ubuntu (в т.ч. и более старые), существуют даже какие-то пользовательские скрипты и т.п. — но во-первых, проверять их все просто нет времени и смысла, в во-вторых, у меня тут гарантированно работоспособный вариант для моей системы, с официальным драйвером Canon и безо всяких левых скриптов, притом с минимальным количеством «танцев с бубном» в принципе. 😺

И конечно, этот драйвер (ну, в теории 😺) подойдёт не только для принтера LBP3000, но и для других моделей этого ряда (типа LBP1120, LBP1210, LBP2900, LBP3050, LBP3150, LBP3200, LBP3210, LBP3300, LBP3310, LBP3500 и т.д. и т.д.)

Итак, моя ОС:

~$ cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION=»Ubuntu 16.04.4 LTS»

~$ uname -a

Linux *** 4.9.89-040989-lowlatency #201803220931 SMP PREEMPT Thu Mar 22 09:35:17 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

На самом деле, у меня Lubuntu 16.04.4 LTS 64-bit — не самая свежая версия, но ждём релиз 18.04 LTS 😺

* * *

I. Заходим и выкачиваем драйвер с официального сайта Canon, только с азиатского подразделения: http://support-asia.canon-asia.com. Почему именно отсюда? А по старой памяти: когда-то там вроде бы была размещена более свежая версия драйвера для этой линейки принтеров, нежели та, что лежала на европейских сайтах; как с этим сейчас, не знаю, но на всякий случай качаем оттуда, чтобы время не терять. 😺


Принтер выглядит как-то так. Картинка — из интернета

Проходимся по менюшкам и выбираем нужный принтер; нас интересует опция драйверов для Linux-x64. Как видим, наиболее свежая на данный момент версия драйвера: 2.71. Соглашаемся с текстом лицензионного соглашения, выкачиваем.

Сам файл называется linux-capt-drv-v271-uken.tar.gz; довольно увесистый (ок. 128 Mb), там содержится комплект и для 32-х разрядной версии в т.ч. — всё скопом, в общем.

II. Оттуда, из папки 64-bit_Driver/Debian, распаковываем отдельно куда-нибудь два deb-пакета: cndrvcups-common_3.21-1_amd64.deb и cndrvcups-capt_2.71-1_amd64.deb.

Далее устанавливаем их оба:

~$ sudo dpkg -i ~/path-to-that/*.deb

Всё, больше из скаченного архива linux-capt-drv-v271-uken.tar.gz ничего не нужно. Разработчики положили туда ещё мануал в формате html — в принципе, юзабельный, но там некоторые важные нюансы, без которых принтер попросту не заведётся, не описаны.

Так вот, у меня оба пакета встали сразу и без ошибок, ничего дополнительно доставлять не потребовалось.

III. После чего — перезапускаем службу печати cups:

~$ sudo systemctl stop cups
~$ sudo systemctl start cups

Далее, регистрируем принтер:

~$ sudo /usr/sbin/lpadmin -p LBP3000 -P /usr/share/cups/model/CNCUPSLBP3000CAPTK.ppd -v ccp://localhost:59687 -E

Конкретно для моего принтера требуется файл CNCUPSLBP3000CAPTK.ppd — а так, прежде чем выполнять команду, список всех доступных моделей смотрим вот тут:

~$ ls /usr/share/cups/model

Зарегистрировали — проверяем наличие файла LBP3000.ppd в нужной папке с прочими принтерами:

~$ ls /etc/cups/ppd

Если он там появился, всё ок.

IV. Далее подсоединяем usb-кабель и включаем принтер. Проверяем наличие замонтированного в /dev/usb необходимого девайсового файла принтера lp0:

~$ ls -al /dev/usb/lp0

Регистрируем принтер Canon’овской утилитой ccpdadmin:

~$ sudo /usr/sbin/ccpdadmin -p LBP3000 -o /dev/usb/lp0

В выхлопе должно быть что-то типа такого:

CUPS_ConfigPath = /etc/cups/
LOG Path = None
UI Port = 59787

Entry Num : Spooler : Backend : FIFO path : Device Path : Status
—————————————————————————-
[0] : LBP3000 : ccp : //localhost:59687 : /dev/usb/lp0 : New!!

Видно, что наш принтер Canon’овская утилита подцепила успешно.

Далее стартуем Canon’овский процесс(-ы) ccpd:

~$ sudo /etc/init.d/ccpd start

Да, при установке драйверов скрипт управления этим демоном добавляется в init.d — а ежели надо, чтобы оно запускалось при автозагрузке, нужно писать собственную службу в systemd. Есть ещё вариант стартовать через udev при подключении принтера. Как это всё красиво организовать, можно посмотреть в интернете — мне же всё это не особо требуется, потому как принтер используется чисто «по требованию», в качестве резервного раз в полгода. 😺

Так вот, по выполнении:

~$ ps -ale | grep ccpd

— мы должны увидеть два запущенных процесса ccpd, наподобие:

1 S 0 14841 1 0 80 0 — 38785 — ? 00:00:00 ccpd
1 S 0 14842 14841 0 80 0 — 20618 — ? 00:00:11 ccpd

( кстати, для ручного перезапуска ccpd использую:

~$ sudo killall ccpd
~$ sudo /etc/init.d/ccpd start

)

Так вот, убеждаемся, что cups и два процесса ccpd запущены.

V. Ну всё, казалось бы, можно открывать нужный файл (какой-нибудь, скажем, PDF’ник с билетом или талоном к врачу), жать Ctrl+P, выбрать принтер LBP3000 из списка и печатать… Как бы не так! 😈 При отправке на печать ничего вразумительного не происходит, а напротив статуса принтера висит крамольное ccp send_data error, exit.

А это потому, оказывается, что для работы 64-разрядного драйвера необходимы некоторые 32-разрядные библиотеки! И об этом в инструкции Canon — ни звука! 😺

Что ж, доставляем нужные пакеты:

~$ sudo apt-get install libatk1.0-0:i386 libcairo2:i386 libgtk2.0-0:i386 libpango1.0-0:i386 libstdc++6:i386 libxml2:i386 libpopt0:i386

Список взял у французов, слава им. 😺 Впрочем, у меня некоторые пакеты уже были установлены, но не все.

После — грохаем ccpd:

~$ sudo killall ccpd

Тормозим и включаем назад cups:

~$ sudo systemctl stop cups
~$ sudo systemctl start cups

Запускаем снова ccpd:

~$ sudo /etc/init.d/ccpd start

На всякий случай убеждаемся, что оба процесса ccpd на месте:

~$ ps -ale | grep ccpd

Опционально — включаем/выключаем сам принтер, но по-моему, этого не делал.

Voilà, после всех этих манипуляций принтер весело зашуршал и распечатал мне талончик, снова затем отправившись пылиться на дальнюю полку. 😺

P.S. Периодически в окне печати, напротив принтера, может мелькать «ccp send_data error, exit», но на деле принтер всё равно печатает.


Запись опубликована в рубрике компьютерное с метками , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.