Nie mogę uruchomić mojej drukarki Canon LBP w systemie Ubuntu 14.04

17

Pobrałem sterownik Linux CAPT V2.60 z Canona i zainstalowałem oba pakiety .deb, które były wymienione w folderze 64-bitowym z Ubuntu Software-Center. Moja drukarka Canon nadal nie zostanie rozpoznana. Czy jest coś jeszcze do zrobienia? Moja drukarka jest podłączona przez USB.

Ubuntu byłby świetnym zamiennikiem dla mojego biura, ale niestety bez obsługi drukarki nadal będę polegać na systemie Windows.

wprowadź opis zdjęcia tutaj

empedokles
źródło
Nie obwiniaj Ubuntu za brak wsparcia ze strony Canon dla Linuksa.
Rinzwind
@Rinzwind Myślę, że Ubuntu miałby wystarczającą moc, aby porozmawiać z firmą Canon w celu uzyskania lepszego wsparcia.
empedokles
Nie, mylisz się tam. Proste: Canon jako firma chce pieniędzy. I Canonical nie zapłaci (to wbrew ideałom firmy). Wszystko wsparcie widać dotyczące Canon na Ubuntu jest od ochotnika (!) (Michael gruz na Launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind
@Rinzwind Zgodnie z instrukcjami tam otworzyłem terminal i zrobiłem „sudo add-apt-repository ppa: michael-gruz / canon-trunk” i „sudo apt-get update”. Coś jeszcze?
empedokles
1
Ponieważ PPA jest przestarzałe, nie obsługuje Ubuntu 14.04.
bain

Odpowiedzi:

14

Sterownik drukarki Canon CAPT jest zamkniętym źródłem, a biblioteki binarne dostarczone przez firmę Canon są kompilowane dla i386. Więc jeśli korzystasz z amd64, musisz najpierw włączyć multiarch i zainstalować kilka bibliotek:

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

Zainstaluj kubki, jeśli jeszcze go nie masz:

apt-get install cups

Pobierz i rozpakuj sterownik drukarki 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

Zainstaluj sterownik 32-bitowy lub 64-bitowy w zależności od architektury:

  • 32-bitowy

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64-bitowy

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

Teraz poszukaj /usr/share/cups/modelplików ppd, które opisują drukarki i wybierz ten, który pasuje (lub jest najbliższy) do Twojej drukarki:

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

W tym przypadku wybraliśmy CNCUPSLBP6018CAPTS.ppdmodel LBP6000.

Dodaj drukarkę:

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

I skonfiguruj system, aby automatycznie uruchamiał demona Canon ccpd:

# update-rc.d ccpd defaults

Problemy

Istnieje kilka problemów ze sterownikiem drukarki Canon:

  • Został zbudowany dla Debiana, a ostatnia obsługiwana wersja Ubuntu to 12.04. Jednak działa w 14.04.

  • Zawiera zamknięte biblioteki binarne, które są zbudowane dla 32-bitowej wersji i386, więc nie można jej uruchamiać natywnie na amd64 (nawet w pakiecie 64-bitowym)

  • captstatusui zawiera nieograniczone wywołanie strcpyw pliku cnsktmodule.c, które nie działa z błędem aborted *** buffer overflow detected ***w niektórych systemach

  • Sterownik drukarki Canon jest w rzeczywistości osobnym demonem, który komunikuje się z kubkami przez gniazdo lokalne lub sieciowe - pozostawia otwarty port sieciowy w twoim systemie i wątpię, aby kod Canon był kiedykolwiek sprawdzany pod kątem luk w zabezpieczeniach

  • Drukarka może pojawić się dwa razy w filiżankach (raz dla automatycznie wykrywanej drukarki USB, raz jako demon Canon CCPD), ale drukarka „USB” nie będzie działać, jeśli spróbujesz na niej wydrukować. W ustawieniach drukarki, jeśli widzisz drukarkę skonfigurowaną jako drukarka USB, musisz ją ręcznie wyłączyć (kliknij prawym przyciskiem myszy, wyłącz)

  • Firma Canon używa własnego oprogramowania i protokołu do komunikacji z drukarką, dlatego nie jest zintegrowana z kubkami, nie jest automatycznie wykrywana i wymaga ręcznej instalacji sterownika. Można oczekiwać, że drukarka powinna zostać automatycznie wykryta i działać, ale nie jest to możliwe w przypadku Canon LBP. Moja następna drukarka to drukarka, która „po prostu działa” ze sterownikami typu open source, prawdopodobnie drukarka sieciowa obsługująca standard PCL - Printer Command Language , np. Brother HL-2250DN (tania dupleksowa drukarka sieciowa, wcześniej najlepiej sprzedająca się drukarka laserowa Amazon) lub zalecana drukarka HP Linux, która współpracuje z oprogramowaniem HPLIP typu open source .

  • Skrypty kompilacji kodu źródłowego są stare i trochę bałaganu. Ze względu na włączenie bibliotek binarnych i386 o zamkniętym źródle oraz brak obsługi wielu skryptów w skryptach kompilacji bardzo trudno byłoby skompilować w pełni działającą wersję 64-bitową. Kompilacja wersji 32-bitowej w systemie 32-bitowym jest możliwa po obejściu różnych błędów w systemie kompilacji.


Problem: ccpd zawiesza się

Czasami ccpd zawiesza się, a kolejka mówi po prostu „Przetwarzanie od ...”

Spróbuj ręcznie uruchomić ponownie:

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

Problem: ccpd nie działa - tylko jeden proces ccpd działa po uruchomieniu systemu

Do normalnej pracy w systemie powinny działać dwa procesy ccpd. Demon ccpd zależy od uruchomienia demona cup przed rozwarciem drugiego procesu. Aby obejść problem, możesz użyć następującej metody:

  1. Włącz skrypt inicjujący puchary (ustawienia domyślne pucharów update-rc.d).

  2. Poinstruuj skrypt inicjujący ccpd, aby uruchomił się po init init (update-rc.d ccpd domyślnie 99), lub dodaj „sleep 10 && /etc/init.d/ccpd start” w skrypcie /etc/rc.local.

Jeśli chcesz korzystać z reguł UDEV i skryptu uruchamiania, pamiętaj, że reguły UDEV działają przed skryptem inicjującym CUPS, więc może być przydatne zrestartowanie skryptu inicjującego ccpd, a nie po prostu uruchomienie. Na przykład możesz umieścić następujący ciąg w „/etc/rc.local”:

sleep 10 && /etc/init.d/ccpd restart

(Rozwiązanie z wiki Ubuntu )


Zgłaszanie błędów i problemów do pomocy technicznej Canon

Firma Canon ma oficjalny adres e-mail do zgłaszania wszelkich błędów i problemów ze sterownikiem:

[email protected]

Kompiluj ze źródła

Jeśli masz ochotę zbudować i zainstalować ze źródła, postępuj zgodnie z tymi instrukcjami ( skrypt kompilacji Arch może również pomóc):

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

Zamieszczam to jako notatkę dla każdego, kto jest skłonny podążać tą ścieżką. Większość ludzi nie powinna próbować budować tego ze źródła. Nawet w systemie amd64 powstały pakiet będzie zawierał zamknięte biblioteki i386.

bain
źródło
Dzięki. Zawsze też szukam efektywności energetycznej. Co z LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles
Według strony HPLIP P1102 ta drukarka jest w pełni obsługiwana w systemie Ubuntu 14.04. Wymaga wtyczki do pobrania z zamkniętym kodem źródłowym; zapewniają oprogramowanie ( hp-setup), które wykona pobieranie i skonfiguruje je.
bain
1
Dziękuję za odpowiedź! Nawiasem mówiąc, skąd wiedziałeś, że jest libstdc++6:i386 libxml2:i386 zlib1g:i386to wymagane? Instrukcje wspomniały ia32-libs, które od tego czasu były nieobecne w późniejszych wersjach Ubuntu, więc zastanawiałem się, co to była zamiana.
syockit
1
@syockit Jeśli uruchomisz file canon/libcapt.so, rozpozna biblioteki Canon jako „ELF 32-bit”, więc wiemy, że potrzebuje 32-bitowych bibliotek dynamicznych. Uruchom ldd tak ldd canon/libcapt.so- linker wydrukuje wszystkie wymagane biblioteki dynamiczne i pokaże te, które nie zostały znalezione. Następnie możesz użyć, apt-file search libpthread.soaby znaleźć pakiet, w którym znajdują się biblioteki.
bain