Принтер 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 и т.д. и т.д. — а также для LBP-810, см. update внизу поста)

Итак, моя ОС:

~$ 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. 1. Периодически в окне печати, напротив принтера, может мелькать «ccp send_data error, exit», но на деле принтер всё равно печатает.

2. Если в логах по-прежнему «ccp send_data error, exit», а очередь печати предательски зависла на статусе «Processing» и ничего не происходит, проверяем через Canon’овскую консоль ошибок:

~$ captstatusui -P LBP3000

Как видно, на этом принтере случилось что-то с датчиком бумаги — сам же драйвер не при чём! Стоило пошевелить лоток — и печать запустилась.

3. Бывает, зависают (остаются в памяти), дублируются и не дают печатать canon’овские процессы captmon, captmon2, captfilter — перед очередным запуском ccpd их следует прихлопнуть вручную, иногда может потребоваться параметр -9. Но это редкий случай — в основном, прихлопывание ccpd тянет по цепочке остальное.

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

Внимание! Администрация сайта adlersky.top не имеет отношения и не несёт никакой ответственности за публикуемые ниже, т.е. под оригинальными записями и внизу страниц сайта, комментарии, не отвечает за их содержание. Все права на комментарии (и всё бремя ответственности за публикацию) принадлежат их авторам.

8 комментариев на «Принтер Canon LBP3000 на Ubuntu 16.04 64-bit»

  1. Александр говорит:

    Испробовал Ваш способ.К сожалению-не не помог.Принтер не печатает…В чем причина-не могу понять, хотя все, что вы писали, я чётко получал на экране.Без ошибок.

    • Vsevolod Adlersky говорит:

      Здравствуйте!

      А драйверы новые ставили с сайта Canon?

    • Михаил говорит:

      Скорее всего принтер сел не на lp0.
      Включив принтер сперва посмотрите куда он сел: ls /dev/usb
      У меня два принтера: Canon LBP-1120 и Canon LBP-810. Если их включить в такой последовательности как я их написал то Canon LBP-1120 встает на lp1 а Canon LBP-810 на lp2. Соответственно в стороке:
      ~$ sudo /usr/sbin/ccpdadmin -p LBPваш_принтер -o /dev/usb/lp(нужно указать верный)
      У меня сейчас другая проблема. Если принтеры включены до загрузки системы то они так же встают как положено Canon LBP-1120 встает на lp1 а Canon LBP-810 на lp2. Но если например загрузить систему без включенных принтеров а потом захочется напечатать на Canon LBP-810 и включить его не включая Canon LBP-1120 он встает на место Canon LBP-1120 на lp1. И как это побороть я пока не пойму.

    • Михаил говорит:

      Пробовал подключать вместо /dev/usb/lp1 или /dev/usb/lp2 как: /dev/lp/by-id/usb-Canon_Canon_CAPT_USB_Device_(здесь то что записано в ATTRS{serial}==).

      Сейчас у меня так:

      mikhail@MMM-HOME ~ $ sudo ccpdadmin

      Usage:
      ccpdadmin [-p Printer-name -o Printer-dev-path]
      ccpdadmin [-x Remove-Printer-name]

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

      Entry Num : Spooler : Backend : FIFO path : Device Path : Status
      —————————————————————————-
      [0 ] : Canon-LBP-1120 : ccp : //localhost:59687 : /dev/lp/by-id/usb-Canon_Canon_CAPT_USB_Device_5818R3 :
      [1 ] : Canon-LBP-810 : ccp : //localhost:59687 : /dev/lp/by-id/usb-Canon_Canon_CAPT_USB_Device_60183EF7

      Все равно если принтеры включены в другой последовательности система их путает.

  2. Andrei говорит:

    ~$ sudo /usr/sbin/ccpdadmin -p LBP3000 -o /dev/usb/lp1
    вот так заработало

  3. Влад говорит:

    Спасибо огромное! Canon lbp5050 завелся. Что и как только не перепробовал я. Причем раньше спокойно устанавливал,без проблем. накатил новый минт, и никак. .. Спасибо!

  4. Иван говорит:

    У меня Runtu (Ubuntu 18), Canon LPB1120 — по вашей блестящей статье всё заработало, но после перезагрузки отключается — выдаёт диагностику «ccp send_data error, exit» и не печатает. Чтобы печатало надо набрать ~$ sudo /etc/init.d/ccpd start , тогда всё снова работает.
    Я пробовал эту команду установить в Автозагрузки, но пока никак не получается.

  5. Александр говорит:

    я бы в качестве первой команды ввел: sudo apt purge system-config-printer-udev
    и тогда при подключении принтера в USB-разъем не будет появляться новый принтер, дублирующий. Последние мои команды-sudo systemctl daemon-reload
    sudo systemctl reenable ccpd.service
    (Последняя команда срабатывает если не работает команда «sudo systemctl enable ccpd.service»)
    После выполнения этих команд дэмон ccpd (если он, конечно есть и не нуждается в редактировании), будет запущен и не будет нуждаться в повторном запуске после перезагрузки системы. И все точно пойдет, как по маслу

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

Публикуя здесь что-либо, вы обязуетесь строго следовать российскому законодательству и несёте ответственность за свои комментарии самостоятельно. Ваши персональные данные здесь не обрабатываются и не хранятся. Администрация сайта adlersky.top не имеет отношения и не несёт никакой ответственности за публикуемые под записями и страницами сайта комментарии.
☝ По нажатии "Отправить" комментарий автоматически уйдёт на модерацию

− 1 = 1