Le pilote d'imprimante Canon CAPT est une source fermée et les bibliothèques binaires fournies par Canon sont compilées pour i386. Donc, si vous êtes sur amd64, vous devrez d'abord activer le multiarchitecture et installer certaines bibliothèques:
# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386
Installez des gobelets si vous ne les avez pas déjà:
apt-get install cups
Téléchargez et décompressez le pilote d'imprimante 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
Installez le pilote 32 bits ou 64 bits en fonction de votre architecture:
Maintenant , regardez dans /usr/share/cups/model
les fichiers ppd qui décrivent les imprimantes et choisissez celui qui correspond à (ou est le plus proche de) votre imprimante:
# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"
Dans ce cas, nous avons choisi celui CNCUPSLBP6018CAPTS.ppd
qui correspond au modèle LBP6000.
Ajouter une imprimante:
# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0
Et configurez votre système pour démarrer automatiquement le démon Canon ccpd:
# update-rc.d ccpd defaults
Problèmes
Il y a plusieurs problèmes avec le pilote d'imprimante Canon:
Il a été construit pour Debian et la dernière version d'Ubuntu prise en charge était 12.04. Cela fonctionne cependant en 14.04.
Il comprend des bibliothèques binaires fermées conçues pour i386 32 bits, donc ne peut pas être exécutée en mode natif sur amd64 (même dans le package 64 bits)
captstatusui inclut un appel illimité à strcpy
cnsktmodule.c qui échoue avec une erreur aborted *** buffer overflow detected ***
sur certains systèmes
Le pilote d'imprimante Canon est en fait un démon distinct qui communique avec les cups sur un socket local ou réseau - il laisse un port réseau ouvert sur votre système, et je doute que le code Canon ait jamais été audité pour les failles de sécurité
L'imprimante peut apparaître deux fois dans des tasses (une fois pour une imprimante USB détectée automatiquement, une fois en tant que démon Canon CCPD) mais l'imprimante "USB" ne fonctionnera pas si vous essayez d'imprimer dessus. Dans les paramètres de l'imprimante, si vous voyez votre imprimante configurée comme imprimante USB, vous devez la désactiver manuellement (clic droit, désactiver)
Canon utilise son propre logiciel et protocole propriétaire pour parler à l'imprimante, c'est pourquoi il n'est pas intégré aux gobelets, n'est pas détecté automatiquement et nécessite l'installation manuelle d'un pilote. Il est raisonnable de s'attendre à ce qu'une imprimante soit automatiquement détectée et fonctionne, mais ce n'est pas possible avec Canon LBP. Ma prochaine imprimante sera une imprimante qui "fonctionne tout simplement" avec des pilotes open source, probablement une imprimante réseau qui prend en charge la norme PCL - Printer Command Language , comme la Brother HL-2250DN (imprimante réseau duplex bon marché, auparavant l'imprimante laser la plus vendue d'Amazon). ou une imprimante recommandée par HP Linux qui fonctionne avec leur logiciel HPLIP open source .
Les scripts de construction du code source sont anciens et un peu désordonnés. En raison de l'inclusion de bibliothèques binaires i386 à source fermée et du manque de prise en charge de multiarchitecture dans les scripts de construction, il serait très difficile de compiler une version 64 bits pleinement opérationnelle. La compilation d'une version 32 bits, sur un système 32 bits, est possible une fois que vous avez contourné les différents bogues du système de génération.
Problème: ccpd se bloque
Parfois, ccpd se bloque et la file d'attente dit simplement "Traitement depuis ..."
Essayez un redémarrage manuel:
pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status
Problème: ccpd ne fonctionne pas - un seul processus ccpd s'exécute après le démarrage du système
Pour un fonctionnement normal, deux processus ccpd doivent être exécutés dans un système. Le démon ccpd dépend de l'exécution du démon cups avant de lancer le deuxième processus. Vous pouvez utiliser la méthode suivante pour contourner le problème:
Activez le script init cups (update-rc.d cups par défaut).
Demandez au script d'initialisation ccpd de s'exécuter après l'initialisation de cups (mises à jour ccpd par défaut de update-rc.d 99), ou ajoutez «sleep 10 && /etc/init.d/ccpd start» dans le script /etc/rc.local.
Si vous souhaitez utiliser des règles UDEV et un script de démarrage, sachez que les règles UDEV s’exécutent avant le script d’initialisation CUPS, il peut donc être utile de redémarrer le script d’initialisation ccpd plutôt que de simplement démarrer. Par exemple, vous pouvez placer la chaîne suivante dans "/etc/rc.local":
sleep 10 && /etc/init.d/ccpd restart
(Solution du
wiki Ubuntu )
Signaler des bogues et des problèmes au support Canon
Canon a une adresse e-mail officielle pour signaler tout bogue et problème avec le pilote:
sup-debian@list.canon.co.jp
Construire à partir de la source
Si vous êtes tenté d'essayer de construire et d'installer à partir des sources, suivez ces instructions (le script de construction Arch peut également vous aider):
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
J'inclus ceci juste comme une note pour toute personne encline à suivre cette voie. La plupart des gens ne devraient pas essayer de construire cela à partir de la source. Même sur un système amd64, le package résultant inclura les bibliothèques fermées i386.