ИНСТРУКЦИЯ

Инструкция по установке принтера Canon LBP2900 в Linux Debian. Применима для принтеров LBP-810, LBP-1120, LBP-1210, LBP2900, LBP3000, LBP3010, LBP3018, LBP3050, LBP3100, LBP3108, LBP3150, LBP3200, LBP3210, LBP3250, LBP3300, LBP3310, LBP3500, LBP5000, LBP5050, LBP5100, LBP5300, LBP6000, LBP6018, LBP6020, LBP6200, LBP6300, LBP6300n, LBP6310, LBP7010C, LBP7018C, LBP7200C, LBP7210C, LBP9100C, LBP9200C.

Введение

Инструкция протестирована с принтером LBP2900, но теоретически подходит и для принтеров указанных выше моделей.

Установка

  1. Закачка драйвера с официального сайта Canon - CAPT Printer Driver for Linux V2.71.
    На момент написания инструкции последняя доступная версия драйвера - 2.71.

  2. Установка (при необходимости) сервера печати CUPS:

    • Проверка наличия в системе установленного сервера CUPS:

      $ systemctl status cups.service
    • Если сервер CUPS не установлен, то установка :

      $ sudo apt install cups

    • Активация systemd-юнита CUPS:
      $ sudo systemctl enable cups.service

  3. Установка драйвера и необходимых зависимостей:

    Независимо от используемой архитектуры необходимо устанавливать драйвер для архитектуры x86, потому что драйвер для архитектуры x86-64 не работает - задания становятся в очередь, но не отправляются на принтер. Были испробованы все доступные способы.

    • Добавление поддержки i386 архитектуры (только для x86-64)

      $ sudo dpkg --add-architecture i386
      $ sudo apt update
    • Установка драйверов (для x86 и x86-64):

      $ sudo dpkg -i cndvcups-common_3.21-1_i386.deb
      $ sudo dpkg -i cndrvcups-capt_2.71-1_i386.deb

    • Установка зависимостей:
      $ sudo apt install -f

  4. Внесение изменений в оригинальные файлы:

    • Исправление файла /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
  5. Перезапуск служб cups и ccpd, проверка состояния:

    $ sudo systemctl restart cups.service & sudo systemctl restart ccpd.service

  6. Регистрация принтера в системе печати. Два варианта (проверены оба):
    Таблица соответствия 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
  7. Подключение принтера. Определение порта подключения:

    ls /dev/usb

  8. Регистрация принтера в сервисе ccpd (lp0 при необходимости заменить на вывод предыдущей команды):

    $ sudo ccpdadmin -p LBP2900 -o /dev/usb/lp0
    $ sudo ccpdadmin

  9. Перезапуск служб cups и ccpd:

    $ sudo systemctl restart cups.service & sudo systemctl restart ccpd.service
  10. Проверка состояния принтера:

    $ lpstat -p

  11. Установка принтера устройством печати по-умолчанию:

    $ sudo lpadmin -d LBP2900
  12. Проверка печати из консоли:
    echo "printer test" | lp

Удаление

  1. Удаление регистрации принтера:

    $ sudo ccpdadmin -x LBP2900 && sudo lpadmin -x LBP2900
  2. Удаление 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
  3. Удаление драйвера и пакетов зависимостей:
    $ 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

  1. Вносим изменения в файл /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>
  2. Ставим софт из Play Store. Я пробовал использовать два сервиса печати:
    • CUPS Printing. Бесплатен. При попытке распечатать по-дефолту не смог изменить формат бумаги, после отправки задания на печать появилось сообщение об ошибке и задание зависло. Пришлось добавлять принтер вручную прописав его полный адрес - http://192.168.0.100:631/printers/LBP2900. После этой процедуры задание было успешно распечано.
    • PrinterShare. Условно-бесплатен, печатает без проблем.

Список использованных ресурсов

debianforum.ru
help.ubuntu.ru
doc.ubuntu-fr.org
superuser.com
unixforum.org
smb-conf.ru
wiki.archlinux.org

Blog Comments powered by Disqus.