10 November 2010

Настраиваем принтер Canon LBP3010 в Ubuntu 10.10

Configuring Linux

Я почти полтора месяца пытался заставить работать этот принтер (за это время я даже успел перейти на сборку PinguyOS, обзор которой, возможно, скоро будет). И никаких успехов я не достиг в этом, но лишь до сегодняшнего дня. Пару дней назад я стал искать свежие мануалы по настройке этого принтера и сопоставив их, мне удалось сделать задуманное.
И теперь я хочу поделиться работающим решением с хабрасообществом. Я надеюсь, что эта информация окажется полезна.

Перед выполнением всех пунктов инструкции принтер лучше держать в выключенном состоянии.

Итак, первым пунктом я предлагаю воспользоваться скриптом по автоматической настройке (что, правда, у меня не заработало, однако это наиболее простой метод установить сами драйвера) принтера, который можно скачать тут.

Далее, распаковываем архив и запускаем имеющийся скрипт (вы должны находиться в терминале в той папке, в которой и лежит интересующий нас скрипт — canonLBP_install.sh) следующей командой (в терминале):
sudo ./canonLBP_install.sh LBP3010

Это установить все необходимые драйвера, а также некоторые дополнительные пакеты из числа зависимостей — очень удобно.
Далее идём в Система — Администрирование — Печать и удаляем там появившийся принтер, он нам больше не понадобится.
После этого запустим ещё одну команду в терминале:

sudo /usr/sbin/lpadmin -p LBP3010 -m CNCUPSLBP3050CAPTK.ppd -v ccp:/var/ccpd/fifo0

Это создаст новый принтер на основе pdd-файла, в котором, как я понял, описывается принцип работы с нашим LBP3010 (и, как видно из названия, с LBP3050). В результате этого действия в Система — Администрирование — Печать появится принтер с называнием LBP3010.

Теперь нам надо привязать этот принтер к usb. Для этого выполняем следующую команду в терминале:

sudo /usr/sbin/ccpdadmin -p LBP3010 -o /dev/usb/lp0

После этого в консоли должно быть написано нечто следующее:

CUPS_ConfigPath = /etc/cups/
 LOG Path        = None
 UI Port         = 59787

 Entry Num  : Spooler : Backend : FIFO path : Device Path  : Status 
 ----------------------------------------------------------------------------
     [0]    : LBP3010  : ccp  : /var/ccpd/fifo0  : /dev/usb/lp0 : New!!


Всё, что осталось сделать — подправить скрипт ccpd, который является важным звеном в работе принтера. В очередной раз возвращаемся к терминалу:

sudo gedit /etc/init.d/ccpd

Этой командой мы открываем этот скрипт в дефолтном текстовом редакторе под root'ом. Удаляем из этого файла всё, что вы там видите и вставляем новый скрипт:

# startup script for Canon Printer Daemon for CUPS (ccpd)

### BEGIN INIT INFO
# Provides:         ccpd
# Required-Start:   $local_fs $remote_fs $syslog $network $named
# Should-Start:     $ALL
# Required-Stop:    $syslog $remote_fs
# Default-Start:    2 3
# Default-Stop:     0 1 4 5 6
# Description:      Start Canon Printer Daemon for CUPS
### END INIT INFO

DAEMON=/usr/sbin/ccpd
LOCKFILE=/var/lock/subsys/ccpd
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=ccpd
DESC="Canon Printer Daemon for CUPS"

test -f $DAEMON || exit 0

. /lib/lsb/init-functions

case $1 in
  start)
        log_begin_msg "Starting $DESC: $NAME"
        start-stop-daemon --start --quiet --exec $DAEMON
        log_end_msg $?
        ;;
  stop)
        log_begin_msg "Stopping $DESC: $NAME"
        start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
        log_end_msg $?
        ;;
  status)
        echo "$DESC: $NAME:" `pidof $NAME`
        ;;
  restart)
        log_begin_msg "Restarting $DESC: $NAME"
        start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --exec $DAEMON
        log_end_msg $?
        ;;
  *)
        echo "Usage: ccpd {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0


Затем перезапускаем сервис принтера опять же из терминала:

sudo /etc/init.d/ccpd restart

В ответ в консоли вы должны увидеть:

* Restarting Canon Printer Daemon for CUPS: ccpd [ OK ]

Для того, чтобы принтер работал и после перезапуска системы, выполняем ещё одну команду:

sudo update-rc.d ccpd defaults 50

И вы должны получить в ответ следующее:

update-rc.d: warning: ccpd start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (2 3)
update-rc.d: warning: ccpd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (0 1 4 5 6)
 Adding system startup for /etc/init.d/ccpd ...
   /etc/rc0.d/K50ccpd -> ../init.d/ccpd
   /etc/rc1.d/K50ccpd -> ../init.d/ccpd
   /etc/rc6.d/K50ccpd -> ../init.d/ccpd
   /etc/rc2.d/S50ccpd -> ../init.d/ccpd
   /etc/rc3.d/S50ccpd -> ../init.d/ccpd
   /etc/rc4.d/S50ccpd -> ../init.d/ccpd
   /etc/rc5.d/S50ccpd -> ../init.d/ccpd


Теперь можем включить принтер (я уверен, вы ждали этого момента ;) )
В системе появится ещё один принтер под названием Canon LBP3010/LBP3018/LBP3050, который система выставит как принтер по умолчанию, что нам совершенно не надо.
Надо указать системе, чтобы она использовала по умолчанию принтер который мы с вами создали — то есть LBP3010, а этот новый принтер лично я оставил, на всякий случай. Если удалите и у вас всё будет работать — прошу отписаться в комментах.

В свойствах этого принтера на вкладке Политика ставим галочки напротив приём заданий, разрешён и общий доступ.

Можете распечатывать тестовую страницу :)

В статье были использованы материалы:
help.ubuntu.com/community/CanonCaptDrv190
forum.ubuntu.ru/index.php?topic=94290.0
и ещё куча всего, что в той или иной степени оказалось полезно.
Tags:linuxubuntu 10.10canonlbp3010sex
Hubs: Configuring Linux
+3
15k 17
Comments 17