ALT Linux: Установка принтеров Canon с драйвером CAPT
- Recluse
- 16.03.2024
- 4 057
- 1
- 23.04.2024
- 6
- 6
- 0
Вступление
CAPT (Canon Advanced Printing Technology) - язык для взаимодействия с принтером, который был разработан японской фирмой Canon и поддерживается лазерными принтерами начального и среднего уровня, пик выпуска которых пришелся на 2000-2010 года. Долгое время данные принтеры обладали адекватно работающим драйвером только под операционные системы Windows, но постепенно в Canon решили различные проблемы драйвера, и его последние версии годны для использования в операционных системах Linux. В данном материале будет разобрана установка официального драйвера CAPT для работы с принтерами Canon.
Установка и настройка драйвера
- Заходим на официальный сайт Canon, и скачиваем драйвера для Linux для нужной модели принтера. На момент написания статьи последней версией был драйвер 2.71 от 15 мая 2017.
- По завершению скачивания архива с драйверами, открываем терминал, в котором переходим в сессию под суперпользователем.
su -
- Переходим в терминале в директорию со скачанным архивом, и распаковываем его.
tar -xf linux-capt-drv-v271-uken.tar.gz
Переходим в директорию с распакованным драйвером. В статье в качестве примера будет выступать 64-разрядный драйвер.
cd linux-capt-drv-v271-uken/64-bit_Driver/RPM
- В данной директории будут два RPM файла, которые требуется установить в системе.
apt-get install cndrvcups-common-3.21-1.x86_64.rpm cndrvcups-capt-2.71-1.x86_64.rpm --assume-yes
- После установки пакетов, добавим правило для 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 echo 'KERNEL=="lp*", ACTION=="add", ATTRS{product}=="Canon CAPT USB Printer", SYMLINK+="usb/capt"' >> /etc/udev/rules.d/85-canon-capt.rules
- Теперь нужно зарегистрировать принтер в системе. Делается это следующей командой:
lpadmin -p "[ИМЯ ПРИНТЕРА]" -m [PPD файл] -v ccp://localhost:59687 -E
Посмотреть соответствующий PPD файл нужной модели принтера можно в таблице ниже.
Модель принтера Имя PPD файла Canon LBP-810 CNCUPSLBP1120CAPTK.ppd Canon LBP-1120 CNCUPSLBP1120CAPTK.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
- Регистрируем принтер в CCPD, используя ранее заданное имя принтера в команде lpadmin.
ccpdadmin -p "[ИМЯ ПРИНТЕРА]" -o /dev/usb/capt
Например, если было использовано имя Canon-LBP2900, то так и пишем:
ccpdadmin -p "Canon-LBP2900" -o /dev/usb/capt
- Создадим сервис, который будет отвечать за работу программы 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
- Удаляем сервис для init, который на текущий момент уже не актуален.
rm -f /etc/rc.d/init.d/ccpd
- Перезагружаем список сервисов systemd.
systemctl daemon-reload
- Включаем свежесозданный сервис ccpd.
systemctl enable ccpd
- Перезагружаем и запускаем сервисы ccpd и cups.
systemctl restart ccpd cups
Указываем udev о необходимости перезагрузить список правил.
udevadm control --reload-rules
Теперь остается только перезагрузить принтер, и можно проверять возможность печати.
Включение отображения статуса принтера при ошибках
Для отображения информации о текущем состоянии принтера, в комплекте с драйвером идет утилита 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
- В качестве примера, рассмотрим вариант, что данный скрипт был сохранен в домашней директории пользователя, под именем
captstatusui.sh
. Теперь откроем "Центр управления" через основное меню.
- В Центре управления находим пункт "Запускаемые приложения" и запускаем его.
- Нажимаем на кнопку "Добавить".
- В открывшемся окне заполняем поля "Имя" - под ним оно будет отображаться в списке запускаемых приложений. В поле "Команда" требуется указать путь к файлу скрипта, перед этим добавив команду bash, чтобы в итоге получилось что-то вроде
bash /home/user/captstatusui.sh
.
- Нажимаем кнопку "Сохранить". Теперь, если все было сделано правильно, после перезагрузки компьютера, скрипт автоматом начнет свою работу при входе пользователя в систему.
Добавить комментарий