Добавляем Cаnon LBP-810 в CUPS

    2018-05-09 02:08 | Автор: jekader | Filed under: FedoraMD

    Дома с давних времён валялся без дела древний GDI принтер Canon-LBP-810. Попросили меня подключить его для эпизодической распечатки бумажек. Так как это win-принтер, официальные драйвера существуют лишь под Windows, причём не новее версии XP. Мне даже выдали под это дело системних уровня Pentium-IV, на поверку оказавшийся... Тудорашем*!

    Ностальгия - это хорошо, однако в современном мире использовать XP страшновато. Решил попробовать завести принтер в Linux и раскопал для этого заброшенный драйвер. В этой записи освещу шаги, необходимые для его работы в современном окружении.

    Первым делом необходимо установить gcc, cups и glibc-dev. Чтобы собрать код современным компилятором, в опции gcc нужно добавить -std=gnu89 - иначе будет ругаться на INLINE функции. Для этого редактируем Makefile и добавляем опцию к CFLAGS

    Теперь собираем и устанавливаем:
    $ make
    $ sudo make install

    Для справки, этим шагом мы установили два бинарника и PPD файл. Первый бинарник называется capt и занимается непосредственно отправкой stdin на принтер через устройство /dev/usb/lp0. Второй бинарник называется capt-print и служит для отладки. Это простой shell-скрипт для преобразования postscript файлов в формат PBM, который понимает первый бинарник. PPD файл - это по сути конфигурация-обёртка для CUPS, точно так-же генерирующая PBM и отправляющая её программе capt.

    Теперь перезапускаем CUPS и идём добавлять новый принтер. LBP-810 должен быть в списке. Главное, что нужно сделать после добавления - сходить в свойства и поставить URI принтера как file:/dev/null - иначе, в моём случае, CUPS при печати переключал принтер в неправильный режим, устройство /dev/usb/lp0 пропадало и печать не шла.

    Можно отправлять задания на печать! Если что-то не работает, вот примерный путь распечатки:
    Приложение -> CUPS -> postscript -> PBM -> capt -> USB

    Шагов много, проблемы вероятнее всего таятся на последних трёх. Если они возникли - смотрим в /tmp/capt.log и /var/log/cups/error_log. Ещё можно воспользоваться служебной утилитой, скормив ей тестовый postscript файл:

    # cat a_image.ps|capt-print

    Если это работает, а CUPS всё равно не печатает - проверяем политики безопасности и право CUPS запускать бинарник capt. Также можно изучить подробнее PPD файл, его можно будет найти в /etc/cups/ppd/ и строка FoomaticRIPCommandLine отвечает за запуск конвертации и печати.

    Ну и конечно проверьте, что принтер включён в розетку и в нём есть бумага 😉

    Удачной печати!

    * Тудораш - первый сервер FedoraMD, трудившийся с 2007 по 2008 год

    1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 3,67 out of 5)
    Loading...

    Метки:

    2 комментария »


    комментария 2

    1. Vasile Chelban:

      Помню этот принтер и CAPT драйвер (со времен Fedora Core 6), что для LBP-810, так и LBP-1120 — крайне любил драйвер падать при сбое принтера, при отключении USB кабеля, при завершении бумаги. Перезапуск captd, отключение SELinux, очистка spool’а задач на печать. Такие танцы не позволяли рекомендовать этот принтер для Linux окружения.

    2. jekader:

      О да, принтерок тот ещё. Тут даже нет никакого cupsd — просто консольная утилита и печать через pipe. Ни о каком контроле наличия бумаги и речи нет — нужно чтобы её было не меньше, чем страниц в документе, иначе недостающее придётся печатать отдельно.

      В итоге на тудораша я накатил XP драйвер и отключил его от интернета, пускай печатают если надо 🙂

    Leave a comment

    *