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:
/usr/share/cups/model
Suchen 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.ppd
das 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 strcpy
in 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:
Aktivieren Sie das Skript cups init (Standardeinstellung update-rc.d cups).
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:
sup-debian@list.canon.co.jp
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.