Не вдається заставити мій принтер Canon LBP для роботи під Ubuntu 14.04


17

Я завантажив драйвер Linux CAPT V2.60 з Canon і встановив обидва пакети .deb, які були перераховані в 64-бітну папку з програмним забезпеченням Ubuntu Software-Center. Мій принтер Canon досі не буде розпізнаний. Чи є ще щось, що я повинен зробити? Мій принтер підключений через USB.

Ubuntu зробив би велику заміну для мого офісу, але, на жаль, без підтримки принтера я все одно буду покладатися на Windows.

введіть тут опис зображення


Не звинувачуйте Ubuntu у відсутності підтримки від Canon до Linux.
Rinzwind

@Rinzwind Я думаю, що Ubuntu буде достатньо сил, щоб поговорити з Canon, щоб досягти кращої підтримки.
empedokles

Ні, ви там помиляєтесь. Просто: Canon як бізнес хоче грошей. І Canonical не заплатить (це проти ідеалів компанії). Вся підтримка, яку ви бачите щодо Canon в Ubuntu, - від (!) Добровольця (michael gruz on startpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind

@Rinzwind Відповідно до інструкцій, я відкрив термінал і зробив "sudo add-apt-repository ppa: michael-gruz / canon-trunk" та "sudo apt-get update". Ще щось?
empedokles

1
Цей PPA є застарілим, він не підтримує Ubuntu 14.04.
bain

Відповіді:


14

Драйвер принтера Canon CAPT є закритим джерелом, а бінарні бібліотеки, що постачаються Canon, компілюються для i386. Тож якщо ви перебуваєте на amd64, спочатку потрібно ввімкнути мультиарх та встановити деякі бібліотеки:

# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386

Встановіть чашки, якщо у вас її ще немає:

apt-get install cups

Завантажте та розпакуйте драйвер принтера Canon CAPT:

wget http://gdlp01.c-wss.com/gds/6/0100004596
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz

Встановіть 32-бітний або 64-бітний драйвер залежно від вашої архітектури:

  • 32-розрядні

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64-розрядні

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb
    

Тепер знайдіть /usr/share/cups/modelфайли ppd, які описують принтери, і виберіть той, який відповідає (або найближчий до) принтеру:

# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"

У цьому випадку ми вибрали, CNCUPSLBP6018CAPTS.ppdяка відповідає модель LBP6000.

Додати принтер:

# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0

І налаштуйте вашу систему, щоб автоматично запустити демон ccpd Canon:

# update-rc.d ccpd defaults

Проблеми

Існує кілька проблем з драйвером принтера Canon:

  • Він був побудований для Debian, остання підтримувана версія Ubuntu - 12.04. Це працює, проте 14.04.

  • Вона включає в себе бінарні бібліотеки із закритим вихідним кодом, які створені для 32-розрядного i386, тому не можна запускати на amd64 (навіть у 64-бітному пакеті).

  • captstatusui включає необмежений виклик strcpyв cnsktmodule.c, який не працює з помилками aborted *** buffer overflow detected ***в деяких системах

  • Драйвер принтера Canon насправді є окремим демоном, який спілкується з чашками через локальний або мережевий сокет - він залишає відкритий мережевий порт у вашій системі, і я сумніваюся, що код Canon коли-небудь перевірявся на предмет вразливості безпеки.

  • Принтер може двічі з’являтися в чашках (один раз для автоматично виявленого USB-принтера, один раз як демон Canon CCPD), але принтер "USB" не працюватиме, якщо ви спробуєте надрукувати його. У налаштуваннях принтера, якщо ваш принтер налаштований як принтер USB, його потрібно вручну відключити (клацніть правою кнопкою миші, вимкнути)

  • Canon використовує власне програмне забезпечення та протокол для розмови з принтером, тому він не інтегрований з чашками, не виявляється автоматично і вимагає встановлення драйвера вручну. Доцільно розраховувати, що принтер повинен бути автоматично виявлений і просто працювати, але це не можливо з Canon LBP. Наступним моїм принтером стане принтер, який "просто працює" з драйверами з відкритим кодом, можливо, мережевим принтером, який підтримує стандарт PCL - Printer Command Language , як і Brother HL-2250DN (дешевий двосторонній мережевий принтер, раніше найпопулярніший лазерний принтер Amazon) або рекомендований HP Linux принтер, який працює з програмним забезпеченням HPLIP з відкритим кодом .

  • Сценарії збірки для вихідного коду старі і трохи заплутані. Через включення бінарних бібліотек i386 із закритим вихідним кодом та відсутність підтримки мультиарха в скриптах збірки, було б дуже важко скласти повноцінний 64-розрядний реліз. Складання 32-розрядного випуску в 32-бітній системі можливо, коли ви обходите різні помилки в системі збірки.


Проблема: ccpd висить

Іноді ccpd висить, і в черзі просто написано "Обробляємо з ..."

Спробуйте перезапустити вручну:

pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status

Проблема: ccpd не працює - після запуску системи працює лише один процес ccpd

Для нормальної роботи в системі повинні працювати два процеси ccpd. Демон ccpd залежить від демон демона до запуску другого процесу. Ви можете використати наступний метод для вирішення проблеми:

  1. Увімкніть скрипт init скрипт (default-rc.d cups default).

  2. Інструктуйте скрипт incccdd запускатись після чашок init (update-rc.d ccpd за замовчуванням 99), або додайте "sleep 10 && /etc/init.d/ccpd start" у /etc/rc.local.

Якщо ви хочете використовувати правила UDEV та скрипт запуску, пам’ятайте, що правила UDEV виконуються перед скриптом init CUPS, тому може бути корисним перезапустити скрипт inc ccpd, а не просто запустити. Наприклад, ви можете розмістити наступний рядок у "/etc/rc.local":

спати 10 && /etc/init.d/ccpd перезапустити

(Рішення з вікі Ubuntu )


Повідомлення про помилки та проблеми підтримці Canon

Canon має офіційну електронну адресу для повідомлення про помилки та проблеми з драйвером:

sup-debian@list.canon.co.jp

Збірка з джерела

Якщо ви спробуєте спробувати створити та встановити з джерела, дотримуйтесь цих вказівок ( також може допомогти сценарій складання Arch ):

sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev

wget http://gdlp01.c-wss.com/gds/6/0100004596/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
cd Linux_CAPT_PrinterDriver_V260_uk_EN/Src/

# do cndrvcups-common
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
rm -rf cndrvcups-common-2.60-1/
tar -zxvf cndrvcups-common-2.60-1.tar.gz
cd cndrvcups-common-2.60-1/
sed -i -e 's/-lcups/-lcups -lgmodule-2.0/' cngplp/src/Makefile.am
dpkg-buildpackage -b -uc
cd ..
sudo apt-get install cups
sudo dpkg -i cndrvcups-common_2.60-1_amd64.deb

# do cndrvcups-capt
rm -rf cndrvcups-capt-2.60-1/
tar -zxvf cndrvcups-capt-2.60-1.tar.gz
cd cndrvcups-capt-2.60-1/
export echo=echo
sed -i -e 's/dh_shlibdeps/dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info/' debian/rules
sed -i -e 's/eval cmds=\"$old_archive_cmds/echo/' cngplp/ltmain.sh
sed -i -e 's:uimain.h":uimain.h"\n#include <cups/ppd.h>:' statusui/src/ppapdata.c
sed -i -e 's/cnsktmodule.la/cnsktmodule.la -lpthread/' statusui/src/Makefile.am
debian/rules configure
sed -i -e 's/RANLIB=/#RANLIB=/' cngplp/libtool
debian/rules build
fakeroot debian/rules install
fakeroot debian/rules binary-arch
cd ..
sudo dpkg -i cndrvcups-capt_2.60-1_amd64.deb

Я включаю це лише як замітку для тих, хто схильний слідувати цьому шляху. Більшість людей не повинні намагатися будувати це з джерела. Навіть у системі amd64 отриманий пакет включає в себе закриті бібліотеки i386.


Спасибі. Я також завжди шукаю енергоефективність. Що з LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles

Відповідно до сторінки HPLIP P1102, цей принтер повністю підтримується на Ubuntu 14.04. Для цього потрібен завантажуваний плагін із закритим джерелом; вони надають програмне забезпечення ( hp-setup), яке виконуватиме завантаження та налаштування.
bain


1
Дякую за відповідь! До речі, як ти знав, що libstdc++6:i386 libxml2:i386 zlib1g:i386потрібно? В інструкціях згадувалося ia32-libs, яка з тих пір відсутня в пізніших версіях Ubuntu, тому я задумався, що це за заміна.
syockit

1
@syockit Якщо ви запускаєте, file canon/libcapt.soбібліотеки Canon визначають як 32-розрядні ELF, тому ми знаємо, що для цього потрібні 32-бітні динамічні бібліотеки. Запустіть ldd так ldd canon/libcapt.so- лінкер надрукує всі необхідні динамічні бібліотеки та покаже ті, які не знайдені. Потім ви можете apt-file search libpthread.soзнайти пакет, в якому перебувають бібліотеки.
bain
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.