Ceci est une ancienne révision du document !
Installer et tester une imprimante Canon en ligne de commande
Cette page utilisant uniquement le terminal est destinée à ceux qui, après avoir installé les drivers pour leur imprimante Canon, 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 toutefois plus d'informations que 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 ppd1) du pilote :
ls /usr/share/cups/model/ | grep CNCUPS
- Avoir vérifié l'existence ou créer les dossiers et fichiers :
- /var/ccpd
- /var/captmon
- /var/ccpd/fifo0
sudo mkdir /var/ccpd sudo mkdir /var/captmon sudo mkfifo /var/ccpd/fifo0
Installation de l'imprimante
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:/var/ccpd/fifo0
- -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:/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 :
- sous Ubuntu 8.04 LTS et ultérieur [device] sera remplacé par /dev/usb/lp0
- exemple:
sudo /usr/sbin/ccpdadmin -p LBP5000 -o /dev/usb/lp0
- 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 LBP810> 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 en même temps que la machine.
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 démon ccpd soit lancé après CUPS, pour qu’il démarre correctement.
Lancer ou relancer ccpd à chaque mise en service de l'imprimante
Il peut-arriver que votre imprimante ne soit pas ou plus détectée si vous l'éteignez après usage.
Afin de régler ce problème il faut relancer le démon ccpd, ce qui 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", SYSFS{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.
Il est possible que vous soyez obligé de relancer le service udev, sur d'anciennes versions d'Ubuntu.
sudo service udev restart
Avec les versions plus récentes d'Ubuntu, udev détecte automatiquement les changements. Il n'est donc plus nécessaire de le relancer.
sudo update-rc.d ccpd defaults 90
C'est notamment le cas si vous avez utilisé l'installation automatisée utilisant un script BASH.
Il sera alors nécessaire d'annuler cette action pour ne pas interférer avec la nouvelle règle udev en saisissant:
sudo update-rc.d -f ccpd remove
Lancer ccpd après CUPS
Dans l'ordre de la séquence de démarrage d'Ubuntu, UDEV est lancé avant CUPS.
Donc, si l'imprimante est allumée et branchée avant le démarrage du PC, la règle UDEV que nous venons de créer va détecter l'imprimante et lancera ccpd avant CUPS.
Dans ce cas, le démarrage incorrect de ccpd va le faire planter à la première demande d'impression sans qu'aucun message d'erreur n'apparaisse.
De plus ccpd va prendre 100% du CPU et il ne peut être stoppé qu'avec une commande "kill -9".
Pour pallier à ce problème particulier, vous devez générer un job Upstart en plus de la règle UDEV créée précédemment.
Dans la séquence de démarrage, il détectera la présence ou non de l'imprimante sur le bus USB. et redémarrera ccpd si nécessaire pour garantir son lancement correct.
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 restart fi end script
Terminez en enregistrant ce fichier. Le job Upstart est prêt à fonctionner.
Avec la règle UDEV et le job Upstart ainsi créés, il ne sera plus nécessaire de s'occuper du démon ccpd, quel que soit le moment où l'imprimante est allumée/éteinte.
L'imprimante devrait désormais être disponible à chaque fois que vous en avez besoin, sans intervention.
Si toutefois vous préférez utiliser un script système V à la place du job Upstart proposé, il vous faudra créer avec les droits d'administration un fichier /etc/init.d/ccpd-restart pour y insérer ceci:
#!/bin/sh ### BEGIN INIT INFO # Provides: Restart ccpd # Required-Start: $local_fs $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Restart Canon Printer Daemon for CUPS ### END INIT INFO if [ -e /dev/usb/lp* ]; then /etc/init.d/ccpd restart fi exit 0
puis donner des droits d'exécution à ce fichier:
sudo chmod a+x /etc/init.d/ccpd-restart
et enregistrer ce script dans les différents runlevel:
sudo update-rc.d ccpd-restart defaults 90
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 :/var/ccpd/fifo0 :/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 une fenêtre avec un message Ready to print.
Si toutefois l'imprimante n'avait pas été allumée et/ou connectée avant le démarrage de l'ordinateur, la commande retournera le message "capstatusui Socket Error".
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
Selon votre version d'Ubuntu, il s'agira de remplacer cups par cupsys.
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 2900 sur Ubuntu.com
- (en) Canon lbp-1120 How to sur v0xel.wordpress.com
- (en) Fil de discussion sur ubuntuforums.org