Всем заинтересованным данной проблемой прошу ознакомиться с инструкцией, в ходе выполнения которой все же удалось заставить фунционировать принтер модели Canon LBP 3010.
Инструкция так же будет справедлива и для других принтеров Canon следующих моделей:
LBP-1120, LBP-1210, LBP2900, LBP3000, LBP3050/LBP3018/LBP3010, LBP3150/LBP3108/LBP3100, LBP3200, LBP3210, LBP3250, LBP3300, LBP3310, LBP3500, LBP5000, LBP5050, LBP5100, LBP5300, LBP6018/LBP6000, LBP6300dn, LBP7200C, LBP9100Cdn.
Шаг 1. Прежде всего нужно скачать драйвер со страницы загрузки Canon.
Шаг 2. Распакуйте скачанный архив. Установите содержащиеся в нем пакеты в указанной последовательности:
sudo dpkg -i cndrvcups-common_2.40-1_i386.deb
udo dpkg -i cndrvcups-capt_2.40-1_i386.deb
Шаг 3. Перезапуск CUPS
sudo service cups restart
Шаг 4. Регистрация принтера в спулере печати:
sudo /usr/sbin/lpadmin -p [название принтера] -m [название файла PPD] -v ccp://localhost:59687 -E
Например, для принтера LBP-1120 строка будет выглядеть так:
sudo /usr/sbin/lpadmin -p LBP3010 -m CNCUPSLBP3050CAPTK.ppd -v ccp://localhost:59687 -E
Названия соответствующих файлов PPD:
LBP-1120: CNCUPSLBP1120CAPTK.ppd
LBP-1210: CNCUPSLBP1210CAPTK.ppd
LBP2900: CNCUPSLBP2900CAPTK.ppd
LBP3000: CNCUPSLBP3000CAPTK.ppd
LBP3050/LBP3018/LBP3010: CNCUPSLBP3050CAPTK.ppd
LBP3150/LBP3108/LBP3100: CNCUPSLBP3150CAPTK.ppd
LBP3200: CNCUPSLBP3200CAPTK.ppd
LBP3210: CNCUPSLBP3210CAPTK.ppd
LBP3250: CNCUPSLBP3250CAPTK.ppd
LBP3300: CNCUPSLBP3300CAPTK.ppd
LBP3310: CNCUPSLBP3310CAPTK.ppd
LBP3500: CNCUPSLBP3500CAPTK.ppd
LBP5000: CNCUPSLBP5000CAPTK.ppd
LBP5050 series: CNCUPSLBP5050CAPTK.ppd
LBP5100: CNCUPSLBP5100CAPTK.ppd
LBP5300: CNCUPSLBP5300CAPTK.ppd
LBP6018/LBP6000: CNCUPSLBP6018CAPTK.ppd
LBP6300dn: CNCUPSLBP6300CAPTK.ppd
LBP7200C series: CNCUPSLBP7200CCAPTK.ppd
LBP9100Cdn: CNCUPSLBP9100CCAPTK.ppd
Шаг 5. Регистрация принтера в демоне ccpd
sudo /usr/sbin/ccpdadmin -p [название принтера] -o [путь к печатающему устройству]
Например, для принтера LBP3010 строка будет выглядеть так:
sudo /usr/sbin/ccpdadmin -p LBP3010 -o /dev/usb/lp0
Если подключаем сетевой принтер, то нужно указать IP-адрес, например:
sudo /usr/sbin/ccpdadmin -p LBP3010 -o net:172.168.0.1
Шаг 6. Разрешение загрузки модуля usblp, установка пакета
kdesudo
sudo apt-get install kdesudo
kdesudo kate /etc/modprobe.d/blacklist-cups-usblp.conf
Комментирование строки blacklist usblp:
sudo gedit /etc/modprobe.d/blacklist-cups-usblp.conf
Устанавливаем в начале строки #, после этого выполняем:
modprobe usblp
Шаг 7. После этого следует запустить демон ccpd
sudo service ccpd start
После этого принтер должен заработать.
Шаг 8. Если принтер печатает нормально, то добавим демон ccpd в автозагрузку, чтоб не запускать каждый раз вручную:
sudo update-rc.d ccpd defaults 20
Затем прописываем в /etc/rc.local:
kdesudo kate /etc/rc.local
Перед exit 0 добавляем строку
/etc/init.d/ccpd restart
Если все команды выполнены успешно, принтер должен работать.
Комментарии (29)
Taragolis
11.10.2016 01:46+2Пройдусь небольшой критикой:
Шаг 3. Перезапуск CUPS
sudo service cups restartWrong! Правильно использовать в зависимости от системы инициализации вашей системы, соответственно:
systemd: sudo systemctl restart cups.service
upstart: sudo initctl start cups или sudo start cups
SysV: sudo /etc/init.d/cups restart
sudo apt-get install kdesudo
kdesudo kate /etc/modprobe.d/blacklist-cups-usblp.conf
комментирование строки blacklist usblp
sudo gedit /etc/modprobe.d/blacklist-cups-usblp.confТут какая-то злобная копипаста, лучше бы прямо указали, что в kde используйте kdesudo вместо sudo. А то кто-нибудь слепо поведется и затянет себе метров на 200 пакетов в не-kde DE устанавливая kdsudo.
Конечно на вкус и цвет все фломастеры разные, но если от консоли кровь не идет из глаз, то для комментирования 1 строки всяко лучше использовать:
sudoedit /etc/modprobe.d/blacklist-cups-usblp.conf или sudo -e /etc/modprobe.d/blacklist-cups-usblp.conf
Шаг 7. После этого следует запустить демон ccpd
sudo service ccpd startсм.выше
sudo update-rc.d ccpd defaults 20
Затем прописываем в /etc/rc.local
kdesudo kate /etc/rc.local
перед exit 0 добавляем строку /etc/init.d/ccpd restartWrong! Мы и так добавили в автозапуск update-rc.d. Зачем еще прописывать в /etc/rc.local? Ну и как вариант, может стоит посмотреть в сторону upstart или systemd ?
Если не секрет какая у вас версия Ubuntu?
sasha1024
11.10.2016 04:24+3> sudo service cups restart
Случайно это не является ли универсальным способом, не зависимым от системы инициализации?
А если и нет, то уж по крайней мере в Ubuntu «sudo service» является предпочтительным способом по сравнению с «/etc/init.d/…» (по крайней мере, в определённых версиях Ubuntu оно ругалось при попытке манипулировать некоторыми скриптами вторым способом и прямым текстом советовало первый — к сожалению, не знаю, с чем это связано).masai
11.10.2016 13:12Да, service — это лишь обёртка, которая дёргает upstart, SysV или systemd в зависимости от того, что установлено. В этом легко убедиться, если посмотреть содержимое /usr/sbin/service. Впрочем, в Ubuntu уже перешли с upstart на systemd, так что можно просто systemctl писать. Команда service осталась лишь для совместимости.
Taragolis
11.10.2016 08:29+1Случайно это не является ли универсальным способом, не зависимым от системы инициализации?
Короткий ответ нет. Более длинный кроется в
man service
man serviceservice(8) System Managers Manual service(8) NAME service - run a System V init script DESCRIPTION service runs a System V init script or upstart job in as predictable an environment as possible, removing most environment variables and with the current working directory set to /.
KlimovDm
11.10.2016 08:34По версиям с upstart — рекомендую к прочтению.
https://help.ubuntu.com/community/UbuntuBootupHowtoTaragolis
11.10.2016 10:19service
в Ubuntu — угадай что надо запустить SysV или upstart, а может и не угадать и тогда нас ждет веселье. И такой он был сделан на "переходный период" в Ubuntu. В RHEL\Centos 6 пошли другим путем иservice
используется только для запуска SysV, для upstart используетсяinitctl
.
В итоге в Ubuntu мы имеем:
/etc/init.d/
— SysV
initctl
— upstart
service
— "общая команда" для SysV и upstart
systemctl
— systemdKlimovDm
11.10.2016 10:26+1Да, теперь правильно. А еще service некоторые майнтейнеры прикрутили как враппер для systemctl в 16.04. В результате «угадайка» стала еще более веселой :)
sasha1024
11.10.2016 17:59Хоть это в man'е и не отражено, service поддерживает systemd.
Так что таки универсальная в Ubuntu.
navion
12.10.2016 00:11Upstart в RHEL6 хоть кто-то использует?
На SO пишут, что оно unsupported и вообще плохое, мне тоже скрипты для EL6 под него не попадались.Taragolis
12.10.2016 10:49Используют, очень редко, но используют. Минусы
upstart
в RHEL, что версия уж очень древняя, некоторые вещи сделать нетривиально и легче делать через SysV чем городить костыли, ну и в конечном итоге на смену в семерке ему пришелsystemd
Однако основной мой посыл был в том, что поведение
service
более предсказуемое в RHEL, чем в Ubuntu
sasha1024
11.10.2016 16:27https://habrahabr.ru/post/312228/#comment_9851838
Taragolis
11.10.2016 17:03Centos 6.8: системы инициализации upstart и SysV$ lsb_release -i -r Distributor ID: CentOS Release: 6.8 $ service --version service ver. 0.91 $ init --version init (upstart 0.6.5) Copyright (C) 2010 Canonical Ltd. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ ls -l /etc/init/tomcat6.conf -rw-r--r--. 1 root root 493 Sep 13 00:07 /etc/init/tomcat6.conf $ sudo service tomcat6 restart tomcat6: unrecognized service $ sudo initctl restart tomcat6 tomcat6 start/running, process 9679 $ sudo restart tomcat6 tomcat6 start/running, process 9729
sasha1024
11.10.2016 18:10То есть в CentOS service неправильно работает?
Но речь-то про Ubuntu.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
$ service --version
service ver. 0.91-ubuntu1
$ ls -l /etc/init.d/tomcat8
-rwxr-xr-x 1 root root 7993 вер 16 16:12 /etc/init.d/tomcat8
$ sudo service tomcat8 restart
$ sudo initctl restart tomcat8
sudo: initctl: command not found
$ sudo restart tomcat8
sudo: restart: command not foundTaragolis
11.10.2016 20:35То есть в CentOS service неправильно работает?
В CentOS — ванильная версия
service
от Red Hat которая используется только для запуска SysV скриптов, однако в Ubuntu используется модифицировання версия от Canonical которая запускает SysV и\или Upstart
$ sudo initctl restart tomcat8
sudo: initctl: command not found
$ sudo restart tomcat8
sudo: restart: command not foundВо-первых судя по тому, что command not found у Вас не установлен upstart:
apt list --installed upstart
Во-вторых непонятно что вы хотите получить, запуская initctl или restart — эти комманды запустят только upstart job-ы которые расположены в /etc/init/sasha1024
11.10.2016 21:06> которая запускает SysV и\или Upstart
или systemdTaragolis
11.10.2016 21:56Это недокументированная возможность, хотя в коде это есть
Выдержка из /usr/sbin/serviceis_systemd= if [ -d /run/systemd/system ]; then is_systemd=1 fi # When this machine is running systemd, standard service calls are turned into # systemctl calls. if [ -n "$is_systemd" ] then UNIT="${SERVICE%.sh}.service" # avoid deadlocks during bootup and shutdown from units/hooks # which call "invoke-rc.d service reload" and similar, since # the synchronous wait plus systemd's normal behaviour of # transactionally processing all dependencies first easily # causes dependency loops if ! systemctl --quiet is-active multi-user.target; then sctl_args="--job-mode=ignore-dependencies" fi case "${ACTION}" in restart|status) exec systemctl $sctl_args ${ACTION} ${UNIT} ;; start|stop) # Follow the principle of least surprise for SysV people: # When running "service foo stop" and foo happens to be a service that # has one or more .socket files, we also stop the .socket units. # Users who need more control will use systemctl directly. for unit in $(systemctl list-unit-files --full --type=socket 2>/dev/null | sed -ne 's/\.socket\s*[a-z]*\s*$/.socket/p'); do if [ "$(systemctl -p Triggers show $unit)" = "Triggers=${UNIT}" ]; then systemctl $sctl_args ${ACTION} $unit fi done exec systemctl $sctl_args ${ACTION} ${UNIT} ;; reload) _canreload="$(systemctl -p CanReload show ${UNIT} 2>/dev/null)" if [ "$_canreload" = "CanReload=no" ]; then # The reload action falls back to the sysv init script just in case # the systemd service file does not (yet) support reload for a # specific service. run_via_sysvinit else exec systemctl $sctl_args reload "${UNIT}" fi ;; force-stop) exec systemctl --signal=KILL kill "${UNIT}" ;; force-reload) _canreload="$(systemctl -p CanReload show ${UNIT} 2>/dev/null)" if [ "$_canreload" = "CanReload=no" ]; then exec systemctl $sctl_args restart "${UNIT}" else exec systemctl $sctl_args reload "${UNIT}" fi ;; *) # We try to run non-standard actions by running # the init script directly. run_via_sysvinit ;; esac fi
EGlaz
11.10.2016 09:41Читал несколько аналогичных статей, надеясь оживить принтер LBP2900 в Linux Mint 17, 17.2. Всё бесполезно. Линь его как бы почти видит, то есть значок есть, как бы даже в значок что-то отправляется, даже без ошибок, но принтер не оживает.
В чём отличие этой статьи от остальных, которыми забит инет за последние лет 5?
Не уверен, что делал шаг 6, у меня вероятно не KDE. Возможно делал что-то аналогичное.
Я встречал мнение, что из-за особенностей CAPT драйверов от Canon — эти принтеры в принципе не могут работать в линуксе. И, к сожалению, мой случай пока это подтверждает.
Есть кто-то, у кого именно Canon LBP2900 заработал в Ubuntu или Mint?lleo_aha
11.10.2016 10:53Есть. Скажу даже больше — завелся как сетевой принтер с ubuntu server в качестве хоста (одно но — я что-то перемудрил с samba, в итоге по сети оно печатало только с linux машин). В общем, у Вас просто что то пошло не так, драйвера ставятся — принтер заводится и печатает
wispoz
11.10.2016 10:57Было почти тоже самое только с LBP3010, помогало при включенной системе и принтере, перетыкнуть USB провод, чудно но работало.
megahertz
13.10.2016 20:51Под арчем отлично работает. Когда был похожий диагноз, что вроде видит но ничего не печатает — проблема была в том что путь /dev/usb/lp0 не постоянный, привязал по имени устройства вида /dev/lp/by-id/usb-Canon_Canon_CAPT_USB_Device_0000A475R21u. https://wiki.archlinux.org/index.php/udev#Printers
DikSoft
11.10.2016 10:35Ради LBP 1120 держу виртуалку с Windows XP + GhostScript + RedMon. В сеть он раздаётся, как PostScript принтер. Экономлю на печати за счёт ресурсов принтера (мне его ещё лет на 5 хватит для дома) и нечипованных картриджей.
Можно ли теперь то же самое сделать на Linux? Предполагаю, что безопаснее и экономичнее сделать такой же вариант, но на Linux. Что-то типа необслуживаемого Print Server-а.
Вопрос: у кого-нибудь LBP 1120 вообще из под Debian/Ubuntu печатает, в сеть раздаётся?dr_magnus
11.10.2016 15:21+1LBP 1120 элементарно настраивается в web-интерфейсе CUPS'a. Во всяком случае в Арче элементарно.
Главное — поставить драйвера, которые упомянуты в статье.
А как заставить его работать через консоль я написал еще в 2010 году
В сеть не раздаю — нет необходимости.
Но, как подсказали, можно создать виртуальный принтер, расшарить его и перенаправлять все его задания на реальный.
homecreate
11.10.2016 19:18Респектище автору. Настроил по этой статье LBP2900 в CentOS 7, всё работает, пользователь вроде доволен. Причём я эту статью нагуглил, ещё когда она то ли в песочнице лежала, то ли в чулане, то ли где
ElegantBoomerang
Вы в инструкции используете явно KDE, это видно по редактору) Не лишним тогда уже будет упомянуть, если уж указываете команды, что всё то же самое делается и из консоли (
sudo vim
/emacs
/nano
/editor
...), и из GTK+ (тот жеgksudo gedit
). А то ещё начитаются и пойдут кеды ставить)