Contenu | Rechercher | Menus

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.

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

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 la version Ubuntu 64 bits : 13.10

Pour son fonctionnement, le driver Canon CAPT nécessite la gestion des bibliothèques 32bits pour les systèmes 64bits.
Actuellement, ce driver utilise le paquet ia32-libs pour cette gestion. Ce paquet a notamment pour rôle d'installer l'ensemble des bibliothèques 32 bits pour les systèmes 64bits.

Depuis 12.04, Ubuntu utilise une autre technique qui ne repose plus sur ia32-libs et les bibliothèques s'installent différemment.
Comme mentionné au paragraphe 3, avec 12.04, 12.10 et 13.04 il est possible d'installer l'ancien ia32-libs car les dépendances sont encore assurées.

Avec 13.10 certaines dépendances et/ou bibliothèques installées par ia32-libs sont supprimées (lib32asound2 …) et d'autres ont changé de version, ce qui rend pratiquement impossible l'installation de cet ancien paquet ia32-libs avec 13.10 64bits.

Pour cette raison, il ne semble pas possible de faire fonctionner les imprimantes utilisant le driver CAPT sous 13.10 64bits.
En attendant que Canon sorte une nouvelle version du driver qui prendra en charge cette évolution de Debian/Ubuntu (?), le plus simple peut consister à utiliser 12.04LTS (ou 12.10 / 13.04).

FIXME

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é dans 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.

  1. Téléchargez puis installez une version antérieure du paquet ia32.libs: ia32-libs

    Ces deux étapes peuvent être résumées dans un terminal en saisissant par exemple les commandes suivantes :
    sudo apt-get update
    sudo apt-get install lib32asound2 lib32ffi6 lib32bz2-1.0 lib32gcc1 lib32stdc++6 lib32z1 lib32ncurses5 lib32ncursesw5 libc6-i386
    wget http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu//pool/universe/i/ia32-libs/ia32-libs_20090808ubuntu26_amd64.deb
    sudo dpkg -i ia32-libs_20090808ubuntu26_amd64.deb


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

Installation de l'imprimante, toutes versions 32 et 64bits

Elle se passe en trois étapes :

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

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

Le nom du fichier .ppd doit être exact. Attention donc à bien en respecter la casse4)

Si cette méthode ne fonctionne pas, vous pouvez toujours utiliser 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
    sudo chown -R lp:lp /var/ccpd/
  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

Ubuntu 12.04 a blacklisté le module usblp qui crée le lien périphérique /dev/usb/lp0. FIXME
Pour résoudre ce problème exécuter la commande suivante :

sudo gedit /etc/modprobe.d/blacklist-cups-usblp.conf

Et commenter 5) les lignes du fichier pour qu'il ressemble à ceci :

#cups talks to the...
#grabbling them
#blacklists usblp

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

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 LBP5000 par ce que vous aviez indiqué précédemment) :

<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

A ce stade, l'imprimante devrait-être opérationnelle et vous pouvez paramétrez 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.
Ceci demande deux conditions :

  1. Que le démon ccpd soit lancé ou relancé à chaque mise en service de l'imprimante.
  2. 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 cette nouvelle règle, il n'est donc pas nécessaire de le relancer.

Si vous avez utilisé l'installation automatisée utilisant un script BASH, la gestion du démon ccpd ne prend pas en compte les deux conditions ci-dessus, il est simplement lancé à chaque démarrage du PC.
Il est donc nécessaire d'annuler cette action systématique pour ne pas interférer avec la nouvelle règle udev.
Tapez 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 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…


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 :

  • avant que le PC ne soit démarré : La séquence de démarrage d'Ubuntu, lance UDEV avant CUPS. Donc, la règle UDEV que nous venons de créer va détecter l’imprimante et lancera ccpd avant CUPS.
  • 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  :

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


Contributeurs: fabux, murex

1) nommée LBP-xxxx, où xxxx est le numéro d'identification de votre imprimante
3) démon spécifique à Canon pour la gestion de l'imprimante
4) minuscule/majuscule
5) , 6) ajoutez un dièse (#) au début
7) Le Canon Statusmonitor donne accès à certaines fonctionnalités avancées de l'imprimante telles que : nombres pages imprimées, niveaux toners, calibrage, nettoyage ou encore mise en veille

tutoriel/installer_pilote_canon_lbp.txt · Dernière modification: Le 21/01/2014, 13:19 par murex
Le contenu de ce wiki est sous licence : CC BY-SA v3.0