Impossible de faire fonctionner mon imprimante Canon LBP sous Ubuntu 14.04

17

J'ai téléchargé le pilote Linux CAPT V2.60 de Canon et installé les deux packages .deb, qui étaient 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 d'imprimante, je vais toujours compter sur Windows.

entrez la description de l'image ici

empedokles
la source
Ne blâmez pas Ubuntu pour le manque de support de Canon à Linux.
Rinzwind
@Rinzwind Je pense qu'Ubuntu aurait assez de pouvoir pour parler à Canon pour obtenir un meilleur support.
empedokles
Non, vous vous trompez là-bas. Simple: Canon en tant qu'entreprise veut de l'argent. Et Canonical ne paiera pas (c'est contre les idéaux de l'entreprise). Tout le soutien que vous voyez concernant Canon sur Ubuntu provient d'un (!) Volontaire (michael gruz sur launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind
@Rinzwind Selon les instructions, j'ai ouvert un terminal et fait "sudo add-apt-repository ppa: michael-gruz / canon-trunk" et "sudo apt-get update". Rien d'autre?
empedokles
1
Ce PPA est obsolète, il ne prend pas en charge Ubuntu 14.04.
bain

Réponses:

14

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:

  • 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
    

Maintenant , regardez dans /usr/share/cups/modelles 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.ppdqui 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é à strcpycnsktmodule.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:

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

  2. 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:

[email protected]

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.

bain
la source
Merci. Je recherche également toujours l'efficacité énergétique. Qu'en est-il du LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles
Selon la page HPLIP P1102, cette imprimante est entièrement prise en charge sur Ubuntu 14.04. Il nécessite un plugin source fermé téléchargeable; ils fournissent un logiciel ( hp-setup) qui fera le téléchargement et le configurera.
bain
1
Merci d'avoir répondu! Au fait, comment saviez-vous que cela libstdc++6:i386 libxml2:i386 zlib1g:i386était nécessaire? Les instructions ont mentionné ia32-libs, qui a depuis été absent dans les versions ultérieures d'Ubuntu, donc je me suis demandé quel était le remplacement.
syockit
1
@syockit Si vous l'exécutez, file canon/libcapt.soil identifiera les bibliothèques Canon comme "ELF 32 bits", nous savons donc qu'il a besoin de bibliothèques dynamiques 32 bits. Exécutez ldd comme ceci ldd canon/libcapt.so- l'éditeur de liens imprimera toutes les bibliothèques dynamiques requises et affichera celles qui ne sont pas trouvées. Vous pouvez ensuite utiliser apt-file search libpthread.sopour trouver le package dans lequel se trouvent les bibliothèques.
bain