ALT Linux: Установка принтеров Canon с драйвером CAPT

  • 16.03.2024
  • 718
  • 0
  • 20.03.2024
  • 1
  • 1
  • 0
ALT Linux: Установка принтеров Canon с драйвером CAPT

Вступление

CAPT (Canon Advanced Printing Technology) - язык для взаимодействия с принтером, который был разработан японской фирмой Canon и поддерживается лазерными принтерами начального и среднего уровня, пик выпуска которых пришелся на 2000-2010 года. Долгое время данные принтеры обладали адекватно работающим драйвером только под операционные системы Windows, но постепенно в Canon решили различные проблемы драйвера, и его последние версии годны для использования в операционных системах Linux. В данном материале будет разобрана установка официального драйвера CAPT для работы с принтерами Canon.

Установка и настройка драйвера

Ниже приведенные действия проверялись с Альт Рабочая станция 9 и Canon LBP 2900.
  1. Заходим на официальный сайт Canon, и скачиваем драйвера для Linux для нужной модели принтера. На момент написания статьи последней версией был драйвер 2.71 от 15 мая 2017.
  2. По завершению скачивания архива с драйверами, открываем терминал, в котором переходим в сессию под суперпользователем.
    su -
  3. Переходим в терминале в директорию со скачанным архивом, и распаковываем его.
    tar -xf linux-capt-drv-v271-uken.tar.gz

    Переходим в директорию с распакованным драйвером. В статье в качестве примера будет выступать 64-разрядный драйвер.

    cd linux-capt-drv-v271-uken/64-bit_Driver/RPM
  4. В данной директории будут два RPM файла, которые требуется установить в системе.
    apt-get install cndrvcups-common-3.21-1.x86_64.rpm cndrvcups-capt-2.71-1.x86_64.rpm --assume-yes
  5. После установки пакетов, добавим правило для udev, чтобы не зависеть от назначенного принтеру порта.
    touch /etc/udev/rules.d/85-canon-capt.rules
    echo 'KERNEL=="lp*", ACTION=="add", ATTRS{product}=="Canon CAPT USB Device", SYMLINK+="usb/capt"' > /etc/udev/rules.d/85-canon-capt.rules
  6. Указываем udev о необходимости перезагрузить список правил.

    udevadm control --reload-rules
  7. Теперь нужно зарегистрировать принтер в системе. Делается это следующей командой:
    lpadmin -p "[ИМЯ ПРИНТЕРА]" -m [PPD файл] -v ccp://localhost:59687 -E

    Посмотреть соответствующий PPD файл нужной модели принтера можно в таблице ниже.

    Модель принтера Имя PPD файла
    Canon LBP-810 CNCUPSLBP1120CAPTK.ppd
    Canon LBP-1120 CNCUPSLBP1120CAPTK.ppd
    Canon LBP-1210 CNCUPSLBP1210CAPTK.ppd
    Canon LBP2900 CNCUPSLBP2900CAPTK.ppd
    Canon LBP3000 CNCUPSLBP3000CAPTK.ppd
    Canon LBP3010 CNCUPSLBP3050CAPTK.ppd
    Canon LBP3018 CNCUPSLBP3050CAPTK.ppd
    Canon LBP3050 CNCUPSLBP3050CAPTK.ppd
    Canon LBP3100 CNCUPSLBP3150CAPTK.ppd
    Canon LBP3108 CNCUPSLBP3150CAPTK.ppd
    Canon LBP3150 CNCUPSLBP3150CAPTK.ppd
    Canon LBP3200 CNCUPSLBP3200CAPTK.ppd
    Canon LBP3210 CNCUPSLBP3210CAPTK.ppd
    Canon LBP3250 CNCUPSLBP3250CAPTK.ppd
    Canon LBP3300 CNCUPSLBP3300CAPTK.ppd
    Canon LBP3310 CNCUPSLBP3310CAPTK.ppd
    Canon LBP3500 CNCUPSLBP3500CAPTK.ppd
    Canon LBP5000 CNCUPSLBP5000CAPTK.ppd
    Canon LBP5050 CNCUPSLBP5050CAPTK.ppd
    Canon LBP5100 CNCUPSLBP5100CAPTK.ppd
    Canon LBP5300 CNCUPSLBP5300CAPTK.ppd
    Canon LBP6000 CNCUPSLBP6018CAPTK.ppd
    Canon LBP6018 CNCUPSLBP6018CAPTK.ppd
    Canon LBP6020 CNCUPSLBP6020CAPTK.ppd
    Canon LBP6200 CNCUPSLBP6200CAPTK.ppd
    Canon LBP6300 CNCUPSLBP6300CAPTK.ppd
    Canon LBP6300n CNCUPSLBP6300nCAPTK.ppd
    Canon LBP6310dn CNCUPSLBP6310CAPTK.ppd
    Canon LBP7010C CNCUPSLBP7018CCAPTK.ppd
    Canon LBP7018C CNCUPSLBP7018CCAPTK.ppd
    Canon LBP7200C CNCUPSLBP7200CCAPTK.ppd
    Canon LBP7200Cdn CNCUPSLBP7200CCAPTK.ppd
    Canon LBP7210Cdn CNCUPSLBP7210CCAPTK.ppd
    Canon LBP9100C CNCUPSLBP9100CCAPTK.ppd

    Таким образом, для Canon LBP 2900 команда будет выглядеть следующим образом:

    lpadmin -p "Canon-LBP2900" -m CNCUPSLBP2900CAPTK.ppd -v ccp://localhost:59687 -E
  8. Регистрируем принтер в CCPD, используя ранее заданное имя принтера в команде lpadmin.
    ccpdadmin -p "[ИМЯ ПРИНТЕРА]" -o /dev/usb/capt

    Например, если было использовано имя Canon-LBP2900, то так и пишем:

    ccpdadmin -p "Canon-LBP2900" -o /dev/usb/capt
  9. Создадим сервис, который будет отвечать за работу программы ccpd, необходимой для печати принтера. Для этого, создаем текстовый файл при помощи любого текстового редактора (например nano):
    nano /etc/systemd/system/ccpd.service

    И вносим туда следующее содержимое:

    [Unit]
    Description=CCPD Printing Daemon
    
    [Service]
    ExecStart=/usr/sbin/ccpd
    TimeoutSec=5
    Type=forking
    
    [Install]
    WantedBy=multi-user.target
  10. Удаляем сервис для init, который на текущий момент уже не актуален.
    rm -f /etc/rc.d/init.d/ccpd
  11. Перезагружаем список сервисов systemd.
    systemctl daemon-reload
  12. Включаем свежесозданный сервис ccpd.
    systemctl enable ccpd
  13. Перезагружаем и запускаем сервисы ccpd и cups.
    systemctl restart ccpd cups

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

Включение отображения статуса принтера при ошибках

Для отображения информации о текущем состоянии принтера, в комплекте с драйвером идет утилита captstatusui, которую следует запускать с ключом -P, значением которого должно быть имя нужного принтера.

captstatusui -P [ИМЯ ПРИНТЕРА]

То есть, если требуется посмотреть статус принтера под названием Canon-LBP2900, то выглядеть это будет так:

captstatusui -P Canon-LBP2900

Для того, чтобы окно данной программы появлялось только при возникновении ошибок у принтера (например, отсутствие бумаги), требуется дополнительно в конце указать ключ -e (обязательно в конце команды, после имени принтера).

captstatusui -P [ИМЯ ПРИНТЕРА] -e

Таким образом, для принтера с именем Canon-LBP2900, это выглядеть будет так:

captstatusui -P Canon-LBP2900 -e

Возможным решением данной проблемы будет использование следующего bash скрипта, который выполянет следующие функции:

  • проверяет наличие принтеров в системе, у которых в адресе устройства стоит протокол ccp.
  • при нахождении такого принтера, запускает для него программу captstatusui.
  • выполняет проверку, что данная программа запущена, в случае если она закрыта - запускает её повторно.

Текст скрипта приведен ниже. Его достаточно скопировать в любой текстовый редактор, сохранить с любым удобным именем в любом удобном месте и добавить в автозагрузку.

#!/bin/bash

for printername in $(lpstat -t | grep ccp:// | awk '{split($0,lpstat," "); print lpstat[3]}' | sed 's/://')
do
	while true
	do
		if [[ $(ps -aux | grep -c "captstatusui -P $printername -e") < 2 ]]; then
			captstatusui -P $printername -e &
		fi
		sleep 3
	done
done
  1. В качестве примера, рассмотрим вариант, что данный скрипт был сохранен в домашней директории пользователя, под именем captstatusui.sh. Теперь откроем "Центр управления" через основное меню.
  2. В Центре управления находим пункт "Запускаемые приложения" и запускаем его.
  3. Нажимаем на кнопку "Добавить".
  4. В открывшемся окне заполняем поля "Имя" - под ним оно будет отображаться в списке запускаемых приложений. В поле "Команда" требуется указать путь к файлу скрипта, перед этим добавив команду bash, чтобы в итоге получилось что-то вроде bash /home/user/captstatusui.sh.
  5. Нажимаем кнопку "Сохранить". Теперь, если все было сделано правильно, после перезагрузки компьютера, скрипт автоматом начнет свою работу при входе пользователя в систему.
Была ли эта статья Вам полезна?

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

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

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.