Ich kann meinen Canon LBP-Drucker unter Ubuntu 14.04 nicht zum Laufen bringen

17

Ich habe den Linux CAPT-Treiber V2.60 von Canon heruntergeladen und beide .deb-Pakete installiert, die mit Ubuntu Software-Center im 64-Bit-Ordner aufgelistet wurden. Mein Canon Drucker wird immer noch nicht erkannt. Muss ich sonst noch etwas tun? Mein Drucker ist über USB angeschlossen.

Ubuntu wäre ein großartiger Ersatz für mein Büro, aber ohne Druckerunterstützung werde ich mich immer noch auf Windows verlassen.

Bildbeschreibung hier eingeben

empedokles
quelle
Machen Sie Ubuntu nicht für die mangelnde Unterstützung von Canon für Linux verantwortlich.
Rinzwind
@Rinzwind Ich denke, Ubuntu hätte genug Power, um mit Canon zu sprechen, um eine bessere Unterstützung zu erzielen.
empedokles
Nein, du liegst falsch. Ganz einfach: Canon als Unternehmen will Geld. Und Canonical wird nicht zahlen (es ist gegen die Ideale des Unternehmens). Alle Unterstützung , die Sie sehen in Bezug auf Canon auf Ubuntu von einem (!) Freiwillige ist (michael gruz auf Launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind
@Rinzwind Entsprechend den dortigen Anweisungen habe ich ein Terminal geöffnet und "sudo add-apt-repository ppa: michael-gruz / canon-trunk" und "sudo apt-get update" gemacht. Noch etwas?
empedokles
1
Dass PPA veraltet ist, unterstützt Ubuntu 14.04 nicht.
Bain

Antworten:

14

Der Canon CAPT-Druckertreiber ist Closed Source und die von Canon gelieferten Binärbibliotheken sind für i386 kompiliert. Wenn Sie also mit amd64 arbeiten, müssen Sie zuerst multiarch aktivieren und einige Bibliotheken installieren:

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

Installieren Sie Tassen, wenn Sie sie noch nicht haben:

apt-get install cups

Laden Sie den Canon CAPT-Druckertreiber herunter und entpacken Sie ihn:

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

Installieren Sie je nach Architektur einen 32-Bit- oder 64-Bit-Treiber:

  • 32-Bit

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

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

/usr/share/cups/modelSuchen Sie nun nach den ppd-Dateien, die die Drucker beschreiben, und wählen Sie diejenige aus, die Ihrem Drucker entspricht (oder diesem am nächsten kommt):

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

In diesem Fall haben wir CNCUPSLBP6018CAPTS.ppddas Modell LBP6000 ausgewählt.

Drucker hinzufügen:

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

Konfigurieren Sie Ihr System so, dass der Canon ccpd-Daemon automatisch gestartet wird:

# update-rc.d ccpd defaults

Probleme

Es gibt verschiedene Probleme mit dem Canon-Druckertreiber:

  • Es wurde für Debian gebaut und die letzte unterstützte Ubuntu-Version war 12.04. Es funktioniert jedoch in 14.04.

  • Es enthält Binärbibliotheken für geschlossene Quellen, die für 32-Bit-i386 erstellt wurden und daher nicht nativ auf amd64 ausgeführt werden können (auch nicht im 64-Bit-Paket).

  • captstatusui enthält einen unbegrenzten Aufruf von strcpyin cnsktmodule.c, der aborted *** buffer overflow detected ***auf einigen Systemen mit Fehlern fehlschlägt

  • Der Canon-Druckertreiber ist eigentlich ein separater Daemon, der über einen lokalen oder Netzwerk-Socket mit Cups kommuniziert. Er lässt einen offenen Netzwerk-Port auf Ihrem System und ich bezweifle, dass der Canon-Code jemals auf Sicherheitslücken überprüft wurde

  • Der Drucker kann zweimal in Bechern angezeigt werden (einmal für automatisch erkannten USB-Drucker, einmal als Canon CCPD-Daemon), aber der "USB" -Drucker funktioniert nicht, wenn Sie versuchen, darauf zu drucken. Wenn in den Druckereinstellungen Ihr Drucker als USB-Drucker konfiguriert ist, müssen Sie ihn manuell deaktivieren (Rechtsklick, Deaktivieren).

  • Canon verwendet eine eigene proprietäre Software und ein eigenes Protokoll für die Kommunikation mit dem Drucker. Aus diesem Grund wird der Drucker nicht in Tassen integriert, wird nicht automatisch erkannt und erfordert die manuelle Installation eines Treibers. Es ist zu erwarten, dass ein Drucker automatisch erkannt wird und funktioniert, aber dies ist mit Canon LBP nicht möglich. Mein nächster Drucker wird ein Drucker sein, der nur mit Open-Source-Treibern "funktioniert", wahrscheinlich ein Netzwerkdrucker, der den PCL - Printer Command Language- Standard unterstützt, wie der Brother HL-2250DN (billiger Duplex-Netzwerkdrucker, früher der meistverkaufte Laserdrucker von Amazon). oder ein von HP Linux empfohlener Drucker , der mit der Open-Source- HPLIP- Software arbeitet.

  • Die Build-Skripte für den Quellcode sind alt und ein bisschen chaotisch. Aufgrund der Integration von Closed-Source-i386-Binärbibliotheken und mangelnder Unterstützung für Multiarch in den Erstellungsskripten wäre es sehr schwierig, eine voll funktionsfähige 64-Bit-Version zu kompilieren. Das Kompilieren einer 32-Bit-Version auf einem 32-Bit-System ist möglich, wenn Sie die verschiedenen Fehler im Build-System behoben haben.


Problem: ccpd hängt

Manchmal bleibt ccpd hängen und in der Warteschlange steht nur "Verarbeitung seit ..."

Versuchen Sie einen manuellen Neustart:

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

Problem: ccpd funktioniert nicht - nur ein ccpd-Prozess wird nach dem Systemstart ausgeführt

Für den normalen Betrieb sollten zwei ccpd-Prozesse in einem System ausgeführt werden. Der ccpd-Daemon hängt davon ab, ob der cups-Daemon ausgeführt wird, bevor der zweite Prozess ausgelöst wird. Sie können das Problem mit der folgenden Methode umgehen:

  1. Aktivieren Sie das Skript cups init (Standardeinstellung update-rc.d cups).

  2. Weisen Sie das Skript ccpd init an, nach dem Befehl cups init (update-rc.d ccpd default 99) ausgeführt zu werden, oder fügen Sie in das Skript /etc/rc.local "sleep 10 && /etc/init.d/ccpd start" ein.

Wenn Sie UDEV-Regeln und Startskript verwenden möchten, beachten Sie, dass UDEV-Regeln vor dem CUPS-Init-Skript ausgeführt werden. Daher kann es hilfreich sein, das ccpd-Init-Skript neu zu starten und dann einfach zu starten. Beispielsweise können Sie die folgende Zeichenfolge in "/etc/rc.local" einfügen:

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

(Lösung aus dem Ubuntu-Wiki )


Melden von Fehlern und Problemen an den Canon-Support

Canon hat eine offizielle E-Mail-Adresse für die Meldung von Fehlern und Problemen mit dem Treiber:

[email protected]

Erstellen Sie aus dem Quellcode

Wenn Sie versucht sind, das Erstellen und Installieren von der Quelle aus zu versuchen, befolgen Sie diese Anweisungen (das Arch-Erstellungsskript kann ebenfalls hilfreich sein):

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

Ich füge dies nur als Notiz für jeden hinzu, der dazu geneigt ist, diesem Weg zu folgen. Die meisten Leute sollten nicht versuchen, dies von der Quelle zu bauen. Selbst auf einem amd64-System enthält das resultierende Paket die geschlossenen i386-Bibliotheken.

bain
quelle
Vielen Dank. Ich achte auch immer auf Energieeffizienz. Was ist mit LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles
Laut der HPLIP P1102-Seite wird dieser Drucker von Ubuntu 14.04 vollständig unterstützt. Es ist ein herunterladbares Closed-Source-Plugin erforderlich. Sie stellen Software ( hp-setup) bereit , die den Download und die Konfiguration übernimmt.
Bain
Ebenfalls relevant: Was ist der beste Drucker für Ubuntu?
Bain
1
Danke für die Antwort! Woher wussten Sie eigentlich, dass dies libstdc++6:i386 libxml2:i386 zlib1g:i386erforderlich ist? In den Anweisungen wurde erwähnt ia32-libs, was seitdem in späteren Ubuntu-Versionen nicht mehr vorhanden war. Ich habe mich also gefragt, was der Ersatz war.
Syockit
1
@syockit Wenn Sie es ausführen file canon/libcapt.so, werden die Canon-Bibliotheken als "ELF 32-Bit" identifiziert, sodass wir wissen, dass es dynamische 32-Bit-Bibliotheken benötigt. Führen Sie ldd wie folgt aus ldd canon/libcapt.so: Der Linker druckt alle erforderlichen dynamischen Bibliotheken und zeigt die nicht gefundenen an. Sie können dann verwenden apt-file search libpthread.so, um das Paket zu finden, in dem sich die Bibliotheken befinden.
Bain