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 du pilote dédié à 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é le pilote correspondant à 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 tutoriel 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
Avec les versions 64bits, il faut installer le paquet ia32-libs. Il fournit les bibliothèques 32bits pour les systèmes 64bits. Elles sont indispensables au fonctionnement du pilote Canon.
Depuis 12.04, la gestion des bibliothèques 32bits pour les systèmes 64bits a changé sous Ubuntu. Le paquet ia32-libs, fourni dans les dépôts correspondants, n'est plus compatible avec le pilote Canon.
Il faut donc installer manuellement une version antérieure du paquet ia32-libs.
Cette opération peut paraître complexe, aussi lisez et suivez attentivement les opérations qui vont suivre.
- installez 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 statut 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 :
Installation de l'imprimante dans CUPS
Taper la commande suivante dans un terminal :
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
Enregistrer l'imprimante dans le démon ccpd
Taper la commande suivante dans un terminal :
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 pour une LBP5000 :
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 pour une LBP5000:
sudo /usr/sbin/ccpdadmin -p LBP-5000 -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 :
sudo service ccpd status
vous devriez avoir en retour quelque chose du type :
Canon Printer Daemon for CUPS: ccpd: 8956 8954
<Printer LBP5000> DevicePath /dev/usb/lp0 </Printer>
Redémarrer le démon ccpd et vérifier de nouveau son statut
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*", SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="04a9", RUN+="/etc/init.d/ccpd start" KERNEL=="lp*", SUBSYSTEMS=="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 système /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 retourne 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émarrez 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