Pull to refresh

Заводим Canon LBP2900 под linux, без ущерба для других принтеров и проиводительности

GDI-принтеры, в частности Canon LBP2900, это довольно актуальная проблема для linux-пользователей, так как поставщик драйверов для этого чуда не сильно позаботился об их юзаюбельности. У этих драйверов есть open-source форк, но он нестабилен и находится в стадии отлаживания. Пример его использования я приводить не буду, а приведу пример использования проприетарных драйверов от Canon.
Зачем этот пост? Насколько мне известно, множеству людей не удалось заставить работать такой принтер под linux, поэтому я поделюсь с сообществом своей success story.
Основной проблемой является то, что для работы проприетарных драйверов необходим демон ccpd, который несколько мешает работе других принтеров, при этом в случае каких-то непредвиденных обстоятельств и сбоев он приводит к увеличению нагрузки на процессор.

Мой workaround состоит в том, чтобы при подключении принтера, производить его настройку в один клик, а далее, после его отключения, убирать все следы использования.

Все действия я производил на Ubuntu 10.04 LTS, libc6 ver. 2.11. Говорят, что работа драйвера при разных версиях библиотеки libc6 может отличаться.
Для начала нам необходимо скачать проприетарные драйвера c сайта Canon. Путем проб и ошибок я выяснил, что версия 1.60 лучше всех поддается настройке, но это сугубо мое мнение.

Скачиваем архив, распаковываем, и в каталоге drivers находим искомые cndrvcups-capt_1.60-2_i386.deb cndrvcups-common_1.60-2_i386.deb
Устанавливаем их в таком порядке:
sudo dpkg-i cndrvcups-common_1.60-2_i386.deb
sudo dpkg -i cndrvcups-capt_1.60-2_i386.deb

также нам необходимо:
sudo apt-get install cups
Итак, приступим. Для настройки и удаления принтера я набросал bash-скрипт:
#!/bin/bash
if [ $1 = "kill" ]; then sudo killall -9 captmon2
fi
if [ $1 = "start" ] ;then
sudo ccpdadmin -x LBP2900 #удаляем записи о принтере на всякий случай
sudo /etc/init.d/cups stop #останавливаем демон печати
sudo mkdir /var/ccpd
sudo mkdir /var/captmon
sudo mkfifo /var/ccpd/fifo0 #эти файлы почему то не создаются автоматом..
sudo chmod 777 /var/ccpd/fifo0
sudo /etc/init.d/cups start #запускаем демон печати
sudo /usr/sbin/lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp:/var/ccpd/fifo0 -E #регистрируем принтер в системе
sudo cp /home/jamb/scripts/ccpd /etc/init.d/ccpd #заменяем стандартный демон на патченный
sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usblp0 # добавляем принтер, адрес работает почему-то только такой. разработчики?
sudo /etc/init.d/ccpd stop # здесь обязательно надо отрубить ccpd, таков ритуал
sudo /etc/init.d/ccpd start
captstatusui -P LBP2900 # показываем интерфейс управления, там отобразятся события, например замятие бумаги
else if [ $1 = "stop" ] ;then
sudo ccpdadmin -x LBP2900
sudo /etc/init.d/cups stop
sudo /etc/init.d/ccpd stop
fi
fi

Теперь о ритуале запуска.
Во-первых, ccpd надо заменять на патченный, стандартный не справляется. исходную ссылку на него дать не могу, утеряна за давностью лет, но вот он: http://pastebin.com/9vcUtL4f. Все благодарности за патч отправляйте Raphael Doursenaud <rdoursenaud@free.fr> и Markovtsev Vadim <markhor@mail.ru>. Копируем содержимое по ссылке в файл ccpd и указываем путь к нему в скрипте, мой путь: ~/scripts/ccpd
Во-вторых, если подключить принтер по usb, и довольно долго не запускать скрипт, то вероятность правильной работы устройства очень сильно уменьшается, при этом captstatusui выдает ошибку *socket error*.

Итак, называем основной скрипт как нибудь, например lbp2900, даем ему права на исполнение
chmod +x ./lbp2900
Теперь подключаем принтер к компьютеру, ждем секунды три, и запускаем скрипт
lbp2900 start
если все сделано верно, то появится окошко captstatusui с надписью Ready to print. Можем печатать. Заметьте, теперь в cups два принтера, один поднимается по умолчанию системой и не работает, а второй наш, рабочий. У меня он называется LBP2900-2.

Для отключения принтера выполняем
lbp2900 stop
и вынимаем usb провод.
При этом может возрасти нагрузка на процессор. Это бунтует процесс captmon2, лечится командой
lbp2900 kill

Таким образом, наша система не загрязнена ничем, кроме драйвера для устройства, и довольно быстро настраивается для работы с LBP2900.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.