Ceci est une ancienne révision du document !



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 toutefois plus d'informations que cette page.

Si vous n'êtes pas familier avec le vocabulaire utilisé ou si vous désirez avoir une vision d'ensemble de l'impression sous Ubuntu, consultez la page « Comprendre l'impression sous Ubuntu ».
  • 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 :
    ls /usr/share/cups/model/ | grep CNCUPS


Pour les versions Ubuntu 64 bits, 12.10 et 12.04 LTS

Avec les version 64bits, 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 est remplacé par multiarch. Cette évolution d'Ubuntu n'est pas prise en compte par les drivers Canon.
Il faut donc installer manuellement le paquet ia32-libs de la version 11.10. Cette opération peut paraître complexe, aussi lisez et suivez attentivement les opérations qui vont suivre.
Nota: le paquet ia32-libs, présent dans les dépôts 12.10 et 12.04 est maintenant un paquet de transition qui ne convient pas.

  1. Téléchargez puis installez le paquet ia32.libs de la version 11.10: http://packages.ubuntu.com/oneiric/ia32-libs

  2. 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
Si vous utilisez la méthode ci-dessus (ligne de commande), à l’ouverture du Gestionnaire de mises à jour, le paquet ia32-libs apparaîtra dans la liste des mises à jour, mais comme il est bloqué (hold) vous ne pourrez pas le sélectionner.

Pour les versions Ubuntu 64bits, jusqu'à 11.10 inclus

Installer le paquet ia32-libs présent dans les dépôts de votre version : ia32-libs
Il fournit les bibliothèques 32bits pour les systèmes 64bits, indispensables au fonctionnement des drivers Canon.

Pour la version Ubuntu 11.10 uniquement (32 et 64bits)

La nouvelle version de CUPS n'utilise plus le module usblp3) pour communiquer avec les imprimantes USB.
Pour 11.10 ce module a été "blacklisté" pour empêcher son chargement.
Les drivers Canon n'intégrant pas cette évolution, il faut donc rétablir le chargement du module usblp.

Ouvrez avec les droits d'administration le fichier /etc/modprobe.d/blacklist-cups-usblp.conf et modifier blacklist usblp pour avoir ceci :

# cups talks to the raw USB devices, so we need to blacklist usblp to avoid
# grabbing them
# blacklist usblp

Cette modification permettra au module usblp de créer le répertoire : /dev/usb/lp0 à l'apparition de l'imprimante sur le bus USB.

Malgré cette modification si l'imprimante est allumée avant que le PC ne démarre/redémarre, il peut arriver que le répertoire : /dev/usb/lp0 ne soit pas automatiquement créé (malgré le chargement correct du module usblp).
Dans ce cas même si l'imprimante a été bien installée, elle ne pourra pas imprimer.

Une solution simple consistera alors à débrancher et rebrancher la prise USB de l'imprimante.
Cette action forcera la création du répertoire /dev/usb/lp0 qui a été "ratée" lors de la séquence de démarrage.

Si cette prise USB est difficilement accessible, voici une autre possibilité pour que la création du répertoire /dev/usb/lp0 ne soit pas "ratée" lors de la séquence de démarrage.
Ouvrez avec les droits d'administration le fichier /etc/modules et modifier le pour y ajouter usblp comme ceci :
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

usblp
lp
rtc

Une fois ces opérations effectuées, il faut redémarrer l'ordinateur en laissant l'imprimante allumée.
Normalement le répertoire: /dev/usb/lp0 a bien été créé.

Elle se passe en trois étapes:

  1. Installer la nouvelle imprimante dans CUPS en indiquant quel pilote utiliser,
  2. Indiquer au démon ccpd 4) cette imprimante,
  3. Automatiser la reconnaissance de l'imprimante.

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
Le nom du fichier .ppd doit être exact. Attention donc à bien en respecter la casse5)
Cette méthode remplace avantageusement l'ancienne procédure qui consistait à :
  1. 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
  2. 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
Si vous ne voyez qu'un seul nombre à la fin de la ligne, éditez avec les droits d'administration le fichier /etc/ccpd.conf et ajoutez ceci (remplacez LBP810 par ce que vous aviez indiqué précédemment) :
<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 :

  1. Que le démon ccpd soit lancé ou relancé à chaque mise en service de l'imprimante.
  2. 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", 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.
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.

Sur d'anciennes versions d'Ubuntu il est possible que vous ayez automatisé le lancement de ccpd avec cette commande.
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
  • Pour les versions 12.10 et 12.04 LTS :
    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 6) 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"
Attention, le fichier 70-printers.rules est un fichier système susceptible d'être modifié lors de prochaines mises à jour. Pensez à vérifier l'état de ce fichier si votre imprimante cesse de fonctionner…



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 stop
		sleep 3
		/etc/init.d/ccpd start
    fi
end script

Terminez en enregistrant ce fichier. Le job Upstart est prêt à fonctionner.

Si vous utilisez 11.10 et si vous avez modifié le fichier /etc/modules comme indiqué dans: Pour la version Ubuntu 11.10 uniquement (32 et 64bits), utilisez ceci pour Créez avec les droits d'administration le fichier /etc/init/ccpd-restart.conf
# ccpd-restart.conf = Relance ccpd si l'imprimante est allumée avant le PC.
# Copier dans: /etc/init/
# Pour Ubuntu 11.10 uniquement :
# - Retirer usblp blacklist dans: /etc/modpobe.d/blacklist-cups-usblp.conf
# - Ajouter usblp dans: /etc/modules

description	"stop puis start ccpd démon car la commande: ccpd restart n'est pas fiable"

start on (started module-init-tools and started cups)
stop on runlevel [016]

script
	if [ -e /dev/usb/lp* ]; then
		/etc/init.d/ccpd stop
		sleep 3
		/etc/init.d/ccpd start
	fi
end script

Si vous n'avez pas souhaité modifier le fichier /etc/modules, alors créez le fichier /etc/init/ccpd-restart.conf comme indiqué précédemment.

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.

L'utilisation d'Upstart est conforme au processus d'évolution d'Ubuntu puisqu'à terme il remplacera système V pour gérer la séquence de démarrage.
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 stop
		sleep 3
		/etc/init.d/ccpd start
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


Nota:
Si vous utilisez la version Ubuntu 10.04 ou antérieure, vous devez utiliser ce script système V.
Sur ces versions, Upstart ne gère pas encore le démarrage de CUPS.

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  :

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.

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 7) 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 arrive, 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

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 
 ------------------------------------------------------

Contributeurs: fabux, murex


1)
nommée LBP-xxxx, où xxxx est le numéro d'identification de votre imprimante
4)
démon spécifique à Canon pour la gestion de l'imprimante
5)
minuscule/majuscule
6)
ajoutez un dièse (#) au début
7)
Le Canon Statusmonitor donne accès à certaines fonctionnalités avancées de l'imprimante tel que nombres pages imprimées, niveaux toners, calibrage, nettoyage ou encore mise en veille
  • utilisateurs/murex/brouillons/correctif_02.1350231606.txt.gz
  • Dernière modification: Le 14/10/2012, 18:20
  • par murex