Принтер 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 не имеет отношения и не несёт никакой ответственности за публикуемые ниже, т.е. под оригинальными записями и внизу страниц сайта, комментарии, не отвечает за их содержание. Все права на комментарии (и всё бремя ответственности за публикацию) принадлежат их авторам.

10 комментариев на «Принтер 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 (если он, конечно есть и не нуждается в редактировании), будет запущен и не будет нуждаться в повторном запуске после перезагрузки системы. И все точно пойдет, как по маслу

  6. Герман говорит:

    ТОЛЬКО по вашей статье все и заработало . Автор- вам дикий респект !я 5 дней курил мануалы с разных сайтиков . Помог только ваш .
    заводил на Xubuntu 23.10 принтер LBP 6310dn
    Спасибо огромное !

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

    спасибо, в Mint удалось запустить.
    одно замечание: libpango просто исключил из списка установки и всё прошло, как по маслу

Добавить комментарий для Александр Отменить ответ

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

− 3 = 1
Powered by MathCaptcha