Ceci est une ancienne révision du document !
En cours de modifs. Se reporter à la page "officielle" de la Doc \\ Installer et tester une imprimante Canon LBPxxxx en ligne de commande \\
Cette page utilisant uniquement le terminal est destinée à ceux qui, après avoir suivi le tutoriel d'installation des drivers dédiés à leur imprimante Canon série Lasershot 1), ne veulent ou, ne peuvent pas suivre la méthode d'installation d'une imprimante à partir de pilotes pré-installés qui est une technique en mode graphique.
N'oubliez pas que la documentation fournie dans l'archive d'installation de votre pilote vous donnera des informations complémentaires à cette page.
Pré-requis
- Maîtriser un minimum le terminal;
- Avoir installé les drivers correspondants à votre imprimante d'après la liste des imprimantes Canon;
- Avoir allumé votre imprimante;
- Avoir redémarré votre ordinateur;
- Connaître le nom du fichier ppd2) du pilote, correspondant à votre imprimante :
ls /usr/share/cups/model/ | grep CNCUPS
Pour la plupart des modèles, vous trouverez 2 fichiers correspondants à votre imprimante: CNCUPSxxxxCAPTK.ppd et CNCUPSxxxxCAPTJ.ppd.
La documentation Canon recommande le CNCUPSxxxxCAPTK.ppd.
Si après avoir suivi ce tuto votre imprimante ne fonctionne pas, essayez avec le fichier CNCUPSxxxxCAPTJ.ppd.
Pour les versions Ubuntu 64 bits 13.04, 12.10 et 12.04 LTS
Il faut installer le paquet ia32-libs. Il fournit les bibliothèques 32bits pour les systèmes 64bits. Elles sont indispensables au fonctionnement des drivers Canon.
Depuis 12.04 le paquet ia32-libs fourni dans les dépôts correspondants, est un paquet de transition qui n'est plus compatible avec les drivers Canon.
Il faut donc installer manuellement le paquet ia32-libs d'une version antérieure (11.10).
Cette opération peut paraître complexe, aussi lisez et suivez attentivement les opérations qui vont suivre.
- installer au préalable les dépendances liées au paquet ia32-libs : lib32asound2,lib32ffi6,lib32bz2-1.0,lib32gcc1,lib32stdc++6,lib32z1,lib32ncurses5,lib32ncursesw5,libc6-i386
- Maintenant que ce paquet est installé, il faut bloquer cette version pour qu'elle ne soit pas automatiquement remplacée lors de la prochaine mise à jour de votre système. Si vous avez installé le Gestionnaire de paquets Synaptic, utilisez-le pour bloquer la version du paquet ia32-libs que vous venez d'installer.
Sinon, vous pouvez taper la commande suivante dans un terminal :echo "ia32-libs hold" | sudo dpkg --set-selections
Pour vérifier que le paquet n'a plus le satut install mais hold :
dpkg --get-selections | grep ia32-libs
doit vous retourner :
ia32-libs hold
Installation de l'imprimante, toutes versions 32 et 64bits
Elle se passe en trois étapes:
Commande d'installation
La commande suivante permettra d'installer l'imprimante dans CUPS:
sudo /usr/sbin/lpadmin -p [nom de l'imprimante] -m [fichier ppd] -v [uri périphérique] -E
où :
- -p [nom de l'imprimante]: modèle de l'imprimante;
- -m [fichier ppd]: nom du fichier .ppd du pilote (cf pré-requis pour connaître son nom) ;
- -v [uri périphérique]: définit l'attribut device-uri de la file d'attente de l'imprimante.
Ici on mettra :ccp://localhost:59787 -E
- -E : active l'imprimante déterminée et autorise les demandes d'impression sur ce périphérique.
exemple pour une LBP5000 :
sudo /usr/sbin/lpadmin -p LBP5000 -m CNCUPSLBP5000CAPTK.ppd -v ccp://localhost:59787 -E
- Vérifier l'existence ou créer les dossiers et fichiers /var/ccpd, /var/captmon et /var/ccpd/fifo0 :
sudo mkdir /var/ccpd sudo mkdir /var/captmon sudo mkfifo /var/ccpd/fifo0
- Installer l'imprimante dans CUPS avec la commande suivante :
(exemple pour une LBP5000)sudo /usr/sbin/lpadmin -p LBP5000 -m CNCUPSLBP5000CAPTK.ppd -v ccp:/var/ccpd/fifo0 -E
Validation de l'installation
La commande suivante permettra d'installer l'imprimante dans le démon ccpd :
sudo /usr/sbin/ccpdadmin -p [nom de l'imprimante] -o [device]
où :
- [Nom de l'imprimante] est le nom que vous avez choisi lors de l'installation dans cups
- [device] est l'emplacement du fichier du périphérique :
- Valeur de [device] pour une connexion en usb :
- [device] sera remplacé par /dev/usb/lp0
- exemple:
sudo /usr/sbin/ccpdadmin -p LBP5000 -o /dev/usb/lp0
Exemple de retour de cette commande pour une LBP5000 :Usage: ccpdadmin [-p Printer-name -o Printer-dev-path] ccpdadmin [-x Remove-Printer-name] CUPS_ConfigPath = /etc/cups/ LOG Path = None UI Port = 59787 Entry Num : Spooler : Backend : FIFO path : Device Path : Status ---------------------------------------------------------------------------- [0] : LBP5000 : ccp : //localhost:59787 : /dev/usb/lp0 : New!!
- Valeur de [device] pour une connexion en réseau :
- net:[adresse IP]
- exemple:
sudo /usr/sbin/ccpdadmin -p LBP-1120 -o net:192.168.0.20
Il peut-être nécessaire d'ajouter une ligne Allow From [adresse IP] dans les sections <Location /> et <Location /admin> du fichier /etc/cups/cupsd.conf .
Démarrez ensuite le démon ccpd
sudo service ccpd start
puis vérifiez son bon fonctionnement par:
sudo service ccpd status
qui devrait vous répondre quelque chose comme:
Canon Printer Daemon for CUPS: ccpd: 8956 8954
<Printer LBP5000> DevicePath /dev/usb/lp0 </Printer>
avant de redémarrer le démon ccpd et vérifier de nouveau son status
sudo service ccpd restart sudo service ccpd status
Paramétrez enfin le système pour que le démon ccpd se lance correctement en fonction de l'allumage de l'imprimante.
Automatiser la détection de l'imprimante
Une fois correctement installée, pour que l'imprimante fonctionne d'une façon transparente pour l'utilisateur, il faut automatiser la gestion du démon ccpd, ce qui demande deux conditions :
- Que le démon ccpd soit lancé ou relancé à chaque mise en service de l'imprimante.
- Que le service CUPS soit actif lors du démarrage du démon ccpd.
Lancer ou relancer ccpd à chaque mise en service de l'imprimante
Ceci peut être automatisé en utilisant udev.
Ouvrez ou créez avec les droits d'administration le fichier /etc/udev/rules.d/85-canon-capt.rules et ajoutez ces lignes:
KERNEL=="lp*", SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="04a9", RUN+="/etc/init.d/ccpd start" KERNEL=="lp*", SUBSYSTEM=="usb", ACTION=="remove", RUN+="/etc/init.d/ccpd stop"
Terminez en enregistrant ce fichier. udev détectera automatiquement les changements, il n'est donc pas nécessaire de le relancer.
sudo update-rc.d ccpd defaults 50
exécutée automatiquement lors de l'installation.
Il sera alors nécessaire d'annuler cette action pour ne pas interférer avec la nouvelle règle udev.
Taper la commande suivante dans un terminal :
sudo update-rc.d -f ccpd remove
La détection automatique des imprimantes définie dans le fichier: /lib/udev/rules.d/70-printers.rules contrarie la régle udev que vous venez de créer
Ouvrez avec les droits d'administration le fichier /lib/udev/rules.d/70-printers.rules et commentez 5) toutes les lignes :
(Exemple pour le fichier de 12.04)
# Low-level USB device add trigger #ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="07", ATTR{bInterfaceSubClass}=="01", TAG+="udev-configure-printer", RUN+="udev-configure-printer add %p" # usblp device add trigger (needed when usblp is already loaded) #ACTION=="add", KERNEL=="lp*", TAG+="udev-configure-printer", RUN+="udev-configure-printer add %p" # Low-level USB device remove trigger #ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:0701*:*", RUN+="udev-configure-printer remove %p"
CUPS actif lors du démarrage du démon ccpd
Si le démon ccpd est lancé avant CUPS, il plantera à la première demande d’impression sans qu’aucun message d’erreur n’apparaisse. Il va alors prendre 100 % du CPU et ne pourra être stoppé que par la commande “kill -9”.
Cette situation peut se produire si l’imprimante est allumée et branchée :
- lors d’une mise à jour de CUPS : Ce service est stoppé puis, relancé alors que ccpd reste actif.
Pour pallier à ces problèmes particuliers vous devez générer un job Upstart, en plus de la règle UDEV créée précédemment.
Il redémarrera ccpd pour garantir son fonctionnement correct si l’imprimante est détectée sur le bus USB.
Créez avec les droits d'administration un fichier /etc/init/ccpd-restart.conf pour y insérer ceci:
# ccpd-restart - Relance ccpd si l'imprimante est allumée avant le PC. description "restart daemon ccpd for Canon printer LBP-serie" start on started cups stop on runlevel [016] script if [ -e /dev/usb/lp* ]; then /etc/init.d/ccpd stop sleep 5 /etc/init.d/ccpd start fi end script
Terminez en enregistrant ce fichier. Le job Upstart est prêt à fonctionner.
Vérification de l'installation
Si vous avez suivi toutes les étapes mais que votre imprimante ne veut rien imprimer depuis vos logiciels habituels, il peut-être utile de vérifier que l'installation s'est correctement déroulée.
Vérifiez que votre imprimante a bien été allumée et correctement connectée avant de démarrer l'ordinateur.
Dans un terminal saisissez:
sudo ccpdadmin
la commande doit vous renvoyer:
Usage: ccpdadmin [-p Printer-name -o Printer-dev-path] ccpdadmin [-x Remove-Printer-name] CUPS_ConfigPath = /etc/cups/ LOG Path = None UI Port = 39787 Entry Num :Spooler :Backend :FIFO path :Device Path :Status ------------------------------------------------------------------- [0] :LBP-XXX : ccp : //localhost:59787 : /dev/usb/lp0 :
où LBP-XXX et /dev/usb/lp0 sont à adapter selon la manière dont vous avez installé votre imprimante dans le démon ccpd.
S'il y a une erreur, elle apparaîtra en fin de ligne.
Astuces
Le fonctionnement du pilote Canon pour Linux n'étant pas parfait, il peut-être nécessaire de connaître ces quelques astuces.
Connaître le statut de l'imprimante
La commande suivante permet de connaître le statut de l'imprimante.
captstatusui -P [nom de l'imprimante]
où [nom de l'imprimante] est le nom que vous avez donné lors de l'installation dans cups.
La commande doit vous ouvrir la fenêtre du Canon Statusmonitor 6) avec un message Ready to print.
Si toutefois la commande retournera le message "capstatusui Socket Error", vous pouvez essayer de redémarrer le service d'impression.
Si cela ne suffit pas, laissez l'imprimante allumée et connectée puis redémarrer l'ordinateur.
Redémarrer le service d'impression
Les commandes suivantes permettent de redémarrer le service cups puis le démon ccpd
sudo service cups restart sudo service ccpd restart
Retirer une imprimante
En cas d'erreur de manipulation, il peut être utile d'avoir à retirer une imprimante installée de manière erronée.
Dans un terminal, on saisira :
sudo /usr/sbin/ccpdadmin -x [nom de l'imprimante]
où [nom de l'imprimante] est le nom que vous avez donné lors de l'installation dans cups.
Lorsque aucune imprimante n'est installée, la commande :
sudo /usr/sbin/ccpdadmin
donnera un résultat de ce type :
Usage: ccpdadmin [-p Printer-name -o Printer-dev-path] ccpdadmin [-x Remove-Printer-name] CUPS_ConfigPath = /etc/cups/ LOG Path = None UI Port = 59787 Entry Num :Spooler :Backend :FIFO path :Device Path :Status ------------------------------------------------------
Sources
- Documentation fournie avec le driver d'installation
- la page man de lpadmin
- (en) Canon lbp-1120 How to sur v0xel.wordpress.com
- (en) Fil de discussion sur ubuntuforums.org