Il driver della stampante CAPT Canon è di tipo chiuso e le librerie binarie fornite da Canon sono compilate per i386. Quindi se sei su amd64 dovrai prima abilitare multiarch e installare alcune librerie:
# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386
Installa le tazze se non l'hai già:
apt-get install cups
Scarica e decomprime il driver della stampante 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
Installa il driver a 32 o 64 bit in base alla tua architettura:
Ora cerca /usr/share/cups/model
i file ppd che descrivono le stampanti e scegli quello che corrisponde (o è il più vicino) alla tua stampante:
# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"
In questo caso abbiamo scelto CNCUPSLBP6018CAPTS.ppd
quale modello LBP6000 corrisponde.
Aggiungi stampante:
# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0
E configura il tuo sistema per avviare automaticamente il demone ccpd Canon:
# update-rc.d ccpd defaults
I problemi
Esistono diversi problemi con il driver della stampante Canon:
È stato creato per Debian e l'ultima versione di Ubuntu supportata è stata la 12.04. Funziona però nel 14.04.
Include librerie binarie a codice chiuso costruite per i386 a 32 bit, quindi non possono essere eseguite nativamente su amd64 (anche nel pacchetto a 64 bit)
captstatusui include una chiamata illimitata a strcpy
in cnsktmodule.c che non riesce con errori aborted *** buffer overflow detected ***
su alcuni sistemi
Il driver della stampante Canon è in realtà un demone separato che comunica con le tazze su un socket locale o di rete: lascia una porta di rete aperta sul sistema e dubito che il codice Canon sia mai stato verificato per le vulnerabilità di sicurezza
La stampante può apparire due volte a tazze (una volta per la stampante USB rilevata automaticamente, una volta come demone Canon CCPD) ma la stampante "USB" non funzionerà se si tenta di stamparla. Nelle impostazioni della stampante, se vedi la tua stampante configurata come stampante USB, devi disabilitarla manualmente (tasto destro, disabilita)
Canon utilizza il proprio software e protocollo proprietari per comunicare con la stampante, motivo per cui non è integrato con le tazze, non viene rilevato automaticamente e richiede l'installazione manuale di un driver. È ragionevole aspettarsi che una stampante venga rilevata automaticamente e funzioni, ma ciò non è possibile con Canon LBP. La mia prossima stampante sarà una stampante che "funziona" solo con i driver open source, probabilmente una stampante di rete che supporta lo standard PCL - Printer Command Language Language , come Brother HL-2250DN (stampante di rete duplex economica, in precedenza la stampante laser più venduta di Amazon) o una stampante consigliata da HP Linux che funziona con il loro software HPLIP open source .
Gli script di compilazione per il codice sorgente sono vecchi e un po 'confusi. A causa dell'inclusione delle librerie binarie i386 di origine chiusa e della mancanza di supporto per multiarch negli script di compilazione, sarebbe molto difficile compilare una versione a 64 bit perfettamente funzionante. La compilazione di una versione a 32 bit, su un sistema a 32 bit, è possibile dopo aver risolto i vari bug nel sistema di generazione.
Problema: ccpd si blocca
A volte ccpd si blocca e la coda dice semplicemente "Elaborazione da ..."
Prova un riavvio manuale:
pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status
Problema: ccpd non funziona: solo un processo ccpd è in esecuzione dopo l'avvio del sistema
Per il normale funzionamento due processi ccpd dovrebbero essere in esecuzione in un sistema. Il demone ccpd dipende dall'esecuzione del daemon cups prima di eseguire il secondo processo. È possibile utilizzare il metodo seguente per risolvere il problema:
Abilita lo script cups cups (valori predefiniti di cups-update-rc.d).
Indica allo script ccpd init di essere eseguito dopo init cups (update-rc.d ccpd default 99), oppure aggiungi "sleep 10 && /etc/init.d/ccpd start" nello script /etc/rc.local.
Se si desidera utilizzare le regole UDEV e lo script di avvio, tenere presente che le regole UDEV vengono eseguite prima dello script init CUPS, quindi può essere utile riavviare lo script init ccpd piuttosto che semplicemente avviarlo. Ad esempio, puoi inserire la seguente stringa in "/etc/rc.local":
sleep 10 && /etc/init.d/ccpd restart
(Soluzione dal
wiki di Ubuntu )
Segnalazione di bug e problemi al supporto Canon
Canon dispone di un indirizzo e-mail ufficiale per la segnalazione di eventuali bug e problemi con il driver:
sup-debian@list.canon.co.jp
Costruisci dalla fonte
Se sei tentato di provare a costruire e installare dal sorgente, segui queste istruzioni (lo script di compilazione di Arch potrebbe anche aiutarti):
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
Lo sto includendo solo come una nota per chiunque sia incline a seguire questo percorso. Molte persone non dovrebbero tentare di costruirlo dalla fonte. Anche su un sistema amd64, il pacchetto risultante includerà le librerie i386 chiuse.