web-dev-qa-db-fra.com

Impossible d'imprimer mon imprimante Canon LBP sous Ubuntu 14.04

J'ai téléchargé le pilote Linux CAPT V2.60 de Canon et installé les deux packages .deb, répertoriés dans le dossier 64 bits avec Ubuntu Software-Center. Mon imprimante Canon ne sera toujours pas reconnue. Y a-t-il autre chose que je dois faire? Mon imprimante est connectée via USB.

Ubuntu ferait un excellent remplacement pour mon bureau, mais malheureusement, sans support imprimante, je continuerai de faire confiance à Windows.

enter image description here

16
empedokles

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 devez d'abord activer le multiarch 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 tasses 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:

  • 32 bits

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

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

Recherchez maintenant dans /usr/share/cups/model les fichiers ppd qui décrivent les imprimantes et choisissez celui qui correspond (ou se rapproche le plus) 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 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 qu'il lance automatiquement le démon Canon ccpd:

# update-rc.d ccpd defaults

Problèmes

Le pilote d’imprimante Canon pose plusieurs problèmes:

  • Il a été construit pour Debian et la dernière version prise en charge par Ubuntu était la version 12.04. Cela fonctionne dans 14.04 cependant.

  • Il inclut des bibliothèques binaires source fermées construites pour i386 32 bits. Il ne peut donc pas être exécuté en mode natif sur AMD64 (même dans le package 64 bits).

  • captstatusui inclut un appel illimité à strcpy dans cnsktmodule.c qui échoue avec l'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 tasses via une prise réseau ou locale. Il laisse un port réseau ouvert sur votre système et je doute que le code de Canon ait été audité à la recherche de failles de sécurité.

  • L’imprimante peut apparaître deux fois dans des tasses (une fois pour une imprimante USB à détection automatique, une fois en tant que démon Canon CCPD), mais l’imprimante "USB" ne fonctionnera pas si vous essayez d’y imprimer. Dans les paramètres de l'imprimante, si votre imprimante est configurée en tant qu'imprimante USB, vous devez la désactiver manuellement (clic droit, désactiver).

  • Canon utilise son logiciel et son protocole propres pour communiquer avec l’imprimante. C’est pourquoi elle n’intègre pas les gobelets, n’est pas détectée automatiquement et nécessite l’installation manuelle du pilote. Il est raisonnable de s’attendre à ce qu’une imprimante soit automatiquement détectée et fonctionne correctement, mais cela n’est pas possible avec Canon LBP. Ma prochaine imprimante sera une imprimante "fonctionnant simplement" avec des pilotes open source, probablement une imprimante réseau prenant en charge le standard PCL - Printer Command Language , comme le Brother HL-2250DN = (imprimante réseau duplex à bas prix, anciennement imprimante laser la plus vendue d'Amazon), ou imprimante recommandée par HP Linux fonctionnant avec leur logiciel Open Source HPLIP .

  • Les scripts de construction pour le code source sont vieux et un peu en désordre. En raison de l'inclusion de bibliothèques binaires i386 à sources fermées et du manque de prise en charge de la multiarchie dans les scripts de construction, il serait très difficile de compiler une version 64 bits pleinement opérationnelle. Compiler une version 32 bits, sur un système 32 bits, est possible une fois que vous avez corrigé les divers bogues du système de construction.


Problème: ccpd se bloque

Parfois, ccpd se bloque et la file d'attente indique 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écutant après le démarrage du système

Pour un fonctionnement normal, deux processus ccpd doivent être en cours d'exécution dans un système. Le démon ccpd dépend du démon cups en cours d'exécution avant de passer au second processus. Vous pouvez utiliser la méthode suivante pour résoudre le problème:

  1. Activer le script init tasses (update-rc.d cups par défaut).

  2. Demandez au script d'initialisation ccpd de s'exécuter après l'initialisation cups (update-rc.d ccpd par défaut 99), ou ajoutez "sleep 10 && /etc/init.d/ccpd start" dans le script /etc/rc.local.

Si vous souhaitez utiliser les règles UDEV et le script de démarrage, sachez que les règles UDEV s'exécutent avant le script init CUPS. Il peut donc être utile de redémarrer le script init 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 de wiki Ubunt )


Rapport de bogues et de problèmes au support technique de Canon

Canon a une adresse électronique officielle pour signaler tout bogue ou problème rencontré avec le pilote:

[email protected]

Construire à partir des sources

Si vous êtes tenté d’essayer de construire et d’installer à partir de la source, suivez ces instructions ( le script de construction Arch peut également 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 cela comme une note pour ceux qui sont enclins à suivre ce chemin. La plupart des gens ne devraient pas essayer de construire cela à partir des sources. Même sur un système AMD64, le package résultant inclura les bibliothèques i386 fermées.

13
bain