Протестировано с принтером Canon LBP2900 на Linux Debian 9.
Установка
-
Закачка драйвера (последняя доступная версия драйвера - 2.71):
- Сайт Canon - CAPT Printer Driver for Linux V2.71.
- Альтернативная ссылка: linux-capt-drv-v271-uken.tar.gz
-
Установка (при необходимости) сервера печати CUPS:
-
Установка драйвера и необходимых зависимостей:
Независимо от используемой архитектуры необходимо устанавливать драйвер для архитектуры x86, потому что драйвер для архитектуры x86-64 не работает - задания становятся в очередь, но не отправляются на принтер. Были испробованы все доступные способы.
-
Внесение изменений в оригинальные файлы:
-
Исправление файла /etc/init.d/ccpd:
После строки #!/bin/sh вставить код:### BEGIN INIT INFO # Provides: Canon Printer Daemon for CUPS (ccpd) # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Starts Printer deamon ... ### END INIT INFO
-
Создание юнита /etc/systemd/system/ccpd.service со следующим содержимым:
[Unit] Description=CCPD Printing Daemon Requires=cups.service After=cups.service [Service] Type=forking ExecStart=/usr/sbin/ccpd TimeoutSec=30 [Install] WantedBy=default.target
- Активация юнита:
$ sudo systemctl enable ccpd.service
-
-
Перезапуск служб cups и ccpd, проверка состояния:
$ sudo systemctl restart cups.service & sudo systemctl restart ccpd.service
-
Регистрация принтера в системе печати. Два варианта (проверены оба):
Таблица соответствия PPD-файлов и моделей принтеров:-
Вариант 1:
Во многих (почти во всех) инструкциях и руководствах допущена ошибка в параметрах команды (во всяком случае для данной версии драйверов):
ccp://localhost:59687 - неправильно
ccp:localhost:59687 - правильно$ sudo lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp:localhost:59687 -E
- Вариант 2:
$ sudo mkdir /var/ccpd $ sudo mkfifo /var/ccpd/fifo0 $ sudo chmod 777 /var/ccpd $ sudo chown -R lp:lp /var/ccpd $ sudo lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp:/var/ccpd/fifo0 -E
-
-
Подключение принтера. Определение порта подключения:
ls /dev/usb
-
Регистрация принтера в сервисе ccpd (lp0 при необходимости заменить на вывод предыдущей команды):
$ sudo ccpdadmin -p LBP2900 -o /dev/usb/lp0 $ sudo ccpdadmin
-
Перезапуск служб cups и ccpd:
$ sudo systemctl restart cups.service & sudo systemctl restart ccpd.service
-
Проверка состояния принтера:
$ lpstat -p
-
Установка принтера устройством печати по-умолчанию:
$ sudo lpadmin -d LBP2900
- Проверка печати из консоли:
echo "printer test" | lp
Удаление
-
Удаление регистрации принтера:
$ sudo ccpdadmin -x LBP2900 && sudo lpadmin -x LBP2900
-
Удаление ccpd из автозагрузки:
$ sudo systemctl stop ccpd.service $ sudo systemctl disable ccpd.service $ sudo rm /etc/systemd/system/ccpd.service $ sudo systemctl daemon-reload $ sudo systemctl reset-failed
- Удаление драйвера и пакетов зависимостей:
$ sudo apt purge cndrvcups-capt cndrvcups-common $ sudo apt autoremove
Список полезных команд
lp, lpr - печать
lpadmin - настройка параметров
lpq - просмотр очереди печати
lpstat - информация о состоянии принтера
cancel - очистка очереди печати
Дополнение 1. Разделение доступа к принтеру по протоколу SMB
Для открытия общего доступа к принтеру по протоколу SMB нужно в файле конфигурации samba (предполагается, что в системе уже есть настроеный samba сервис) /etc/samba/smb.conf внести следующие общие параметры:
[global]
workgroup=Home
server string=SambaServer
security=user # это не имя учетной записи, а опция конфигурации защиты
load printers = yes
disable spoolss = no
printing = CUPS
[printers]
comment=All Printers
path=/var/spool/samba
browseable=yes # доступ в сетевом поиске
guest ok=yes # гостевой доступ к печати
writable=no # пользователь не сможет создавать или изменять файлы
printable=yes # клиенты могут открывать, писать и ставить задания в очередь печати
create mode=0700
write list=@adm user # список пользователей имеющих доступ к сервису на чтение/запись
Так же рекомендуется добавить параметры для конкретного принтера:
[LBP2900]
comment=Canon LBP2900
printer=LBP2900
path=/var/spool/samba
printing=cups
printable=yes
printer admin=@adm root user
user client driver=yes
guest ok=no # для гостевого доступа установить в yes
writable=no
write list=@adm root user
valid users=@adm root user # для гостевого доступа удалить или закомментировать строку
Соответственно, должна существовать учетная запись user, которая также внесена и в базу пользователей samba, и которая обладает правами доступа к принтеру.
Для доступа по протоколу SMB из Windows XP нужно добавить в /etc/samba/smb.conf в секции [global] строки
server max protocol = NT1
lanman auth = yes
ntlm auth = yes
Дополнение 2. Зависания
Периодически сервис драйвера подвисает и принтер перестат отвечать. Лечится это очисткой очереди печати и перезапуском сервисов:
$ cancel -a -x
$ sudo systemctl restart cups.service & sudo systemctl restart ccpd.service
Дополнение 3. Сетевая печать из Android
- Вносим изменения в файл /etc/cups/cupsd.conf:
# Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock # Add Listen 192.168.0.100:631
# Restrict access to the server... <Location /> Order allow,deny # Add Allow from 192.168.0.* </Location>
# Restrict access to the admin pages... <Location /admin> Order allow,deny # Add Allow from 192.168.0.* </Location>
# Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny # Add Allow from 192.168.0.* </Location>
- Ставим софт из Play Store. Я пробовал использовать два сервиса печати:
-
CUPS Printing. Бесплатен. При попытке распечатать по-дефолту не смог изменить формат бумаги, после отправки задания на печать появилось сообщение об ошибке и задание зависло. Пришлось добавлять принтер вручную прописав его полный адрес -
http://192.168.0.100:631/printers/LBP2900
. После этой процедуры задание было успешно распечано. - PrinterShare. Условно-бесплатен, печатает без проблем.
-
CUPS Printing. Бесплатен. При попытке распечатать по-дефолту не смог изменить формат бумаги, после отправки задания на печать появилось сообщение об ошибке и задание зависло. Пришлось добавлять принтер вручную прописав его полный адрес -
Список использованных ресурсов
debianforum.ru
help.ubuntu.ru
doc.ubuntu-fr.org
superuser.com
unixforum.org
smb-conf.ru
wiki.archlinux.org