Installation d'imprimante en réseau


Le but de l'opération est d'installer une imprimante non postcript sur un serveur Linux sous Debian Woody, pour que celle-ci soit disponible en réseau pour les stations tournant sous Linux ou sous Windoze. Le logiciel choisi est CUPS. L'imprimante est d'abord une HP DeskJet 670C puis une EPSON Stylus C84. Dans un premier temps on utilise foomatic et le pilote hpijs avec l'imprimante HP. Ensuite, avec l'imprimante EPSON c'est le pilote gimp-print qui est conseillé. Par la suite, on se passe de foomatic pour utiliser les mises à jour de gimp-print qui a sa propre base de données d'imprimantes. Finalement on utilise un pilote spécifique développé pour EPSON par KOWA.


  1. Installation de paquets supplémentaires
    1. Mise à niveau initiale
    2. Complément d'installation
  2. Documentation
  3. Configuration
    1. Foomatic et Cups
    2. Rendre disponible pour SAMBA
    3. Rendre le contrôle disponible pour OpenOffice
  4. Mises à jour de Debian
    1. Mise à jour de gimp-print
    2. Utilitaire de monitoring mtink
  5. Dernières améliorations
    1. Impression à partir de Windoze
    2. Utilisation du pilote KOWA pour Epson

1 Installation de paquets supplémentaires

1 1 Mise à niveau initiale

Installation des paquets foomatic, cups, hpijs, gimpprint et leurs suites,

The following NEW packages will be installed:
cupsys 
cupsys-driver-gimpprint 
cupsys-pstoraster 
foomatic-bin 
foomatic-db 
gimpprint-doc 
hpijs 
libhtml-format-perl 
libhtml-parser-perl 
libhtml-tagset-perl 
libhtml-tree-perl 
libmailtools-perl 
libmime-base64-perl 
libnet-perl libnet-ph-perl 
libnet-snpp-perl 
libnet-telnet-perl 
libslp1
libstorable-perl 
libtext-iconv-perl 
libtimedate-perl 
liburi-perl 
libweakref-perl 
libwww-perl 
libxml-grove-perl 
libxml-parser-perl 
libxml-perl 
libxml-twig-perl
	  0 packages upgraded, 28 newly installed, 0 to remove and 0  not upgraded.
	  Need to get 4178kB/8616kB of archives. After unpacking 30.6MB will be used.

1 2 Complément d'installation

Message à l'installation des paquets :

Foomatic Printfilter Configuration:
a2ps mpage enscript

Les 2 derniers sont installés mais pas a2ps.
Automagic cherche les 3 dans l'ordre.
Automagic

ajout paquets
a2ps + groff (recommandé)

Recommencer la configuration de base :

# dpkg-reconfigure foomatic-bin

**** avertissement ****

Paramétrage de libslp1 (1.0.8a-2) ...
WARNING: The kernel version that you are currently running does not support
multicast. You must use a IP multicast enabled kernel for OpenSLP to
function efficiently.
NOTE: You don't seem to have a multicast route configured. You may need to
add a multicast route by running the command:
route add -net 224.0.0.0 netmask 240.0.0.0 dev 
You can add this command to your network init scripts to do this automatically
at startup.

2 Documentation

http://linuxprinting.org
http://localhost:631

$ zless /usr/share/doc/foomatic-bin/USAGE.gz

3 Configuration

3 1 Foomatic et Cups

# foomatic-configure -Q

besoin de lpstat...
ajout paquets
cupsys-client (lpstat...) on prend également gtklp?

Edition de /etc/cupsd.conf

# cd /etc/cups
# mv cupsd.conf cupsd.conf.ORIG
# cp cupsd.conf.ORIG cupsd.conf
# vi cupsd.conf

Autoriser le partage sur le réseau local

Browsing On
BrowseAddress 192.168.210.255
BrowseDeny All
BrowseAllow 192.168.210.*
BrowseOrder deny,allow

Autoriser les stations du réseau local à accéder à http://antares:631

<Location />
 ...
 Allow From 192.168.210.*

Autoriser les stations du réseau local à accéder à l'administration (Admin) via antares:631 (identification demandée, groupe lpadmin ou root)

<Location /admin>
 ...
 Allow From 192.168.210.*

après chaque modification il faut relancer cupsd pour prendre en compte,

# /etc/init.d/cupsys restart

ou bien avec WEBMIN.

Droit d'accès à l'administration CUPS : Pour faire des modifications, il faut avoir les droits (root ou lpadmin). Ajouter le groupe lpadmin à un utilisateur non root :Ne fonctionne pas avec WEBMIN sous Debian,

Impossible d'enregistrer l'utilisateur : 
samba::useradmin_modify_user failed : Undefined subroutine &samba::get_share 
called at /usr/share/webmin/samba/useradmin_update.pl line 54.

Il faut le configurer «à la main» sans oublier de répéter les groupes auxquels appartient déjà l'utilisateur,

# usermod -G tty,dialout,lpadmin bernard

OK

On peut configurer l'imprimante en utilisant l'administration de CUPS mais sans FOOMATIC!

Interroger la config des queues existantes,

# foomatic-configure -s cups -Q

Sortir la liste des imprimantes supportées pour trouver l'id et le pilote conseillé de celle qui m'intéresse,

# foomatic-configure -O | less
<printer>
    <id>60928</id>
    <make>HP</make>
    <model>DeskJet 670C</model>
    <functionality>A</functionality>
    <driver>hpijs</driver>
    <autodetect>
  <!--no known parport probe information--></autodetect>
    <drivers>
      <driver>cdj670</driver>
      <driver>hpijs</driver>
      <driver>pcl3</driver>
      <driver>gimp-print</driver>
    </drivers>
  </printer>
...

Pour configurer avec foomatic la queue HP de l'imprimante dont j'ai trouvé l'id,

# foomatic-configure -s cups -n HP -N "HP DeskJet 670C" -L "antares LPT1" 
-c file:/dev/lp0 -p 60928 -d hpijs -o PageSize=A4

Pour effacer (éventuellement) la configuration,

# foomatic-configure -s cups -n HP -R

Pour limiter l'accès à cette imprimante au réseau local, ajouter à /etc/cups/cupsd.conf,

<Location /printers/HP>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
AuthType None
Allow From 192.168.210.*
</Location>

Pour changer l'imprimante par défaut,

# /usr/sbin/lpadmin -d HP

Pour interroger l'état des imprimantes et files d'impression en mode ligne, voir les options de lpstat. Pour tuer une édition, voir la commande cancel.

Pour imprimer, toutes les options des commandes ligne lp ou lpr et lpoptions peuvent être contrôlées d'une manière plus conviviale par des utilitaires comme kprinter, qtcups, gtklp, etc. Suivant qu'on lance la commande sous root ou sous un user ~, les options sont sauvegardées dans,
/etc/cups/lpoptions (pour tous les utilisateurs)
~/.lpoptions (pour l'utilisateur ~).

Installation de qtcups,

The following NEW packages will be installed:
  libmng1 libqt2 libqtcups2 qtcups
  0 packages upgraded, 4 newly installed, 0 to remove and 0  not upgraded.
  Need to get 0B/2153kB of archives. After unpacking 5740kB will be used.

lpr ne fonctionne pas :

lpr: HP: unknown printer

Le lpr/lpd standard existe toujours malgré l'installation de CUPS. Il faut installer un paquet spécifique pour remplacer les anciennes commandes de lpd par celles de CUPS! Installation du paquet cupsys-bsd en remplacement du paquet lpr,
OK

Les marges physiques ne sont pas correctes! Pas de problème avec la même imprimante gérée par RedHat 9 avec certes des versions de cups, foomatic et hpijs plus récentes. Il y a une différence dans le fichier ppd,
Debian: *ImageableArea A4/A4: "0 0 595 842"
RedHat: *ImageableArea A4/A4: "36 36 559 806"

Avec RedHat, il y a également des paramètres spécifiques dans lpoptions :

Dest lp0 cpi=12 lpi=7 page-bottom=36 page-left=36 page-right=36 page-top=36 scaling=100 wrap=true

Même problème après report des différences sur Debian.

Téléchargement d'un outil d'alignement de marge proposé par linuxprinting.org constitué d'un exécutable à lancer sous root et d'un fichier .ps,
alignmargins align.ps

Cet utilitaire permet de calculer des corrections de marge et les applique dans le fichier ppd à l'aide de directives personnalisées contrôlable par lpoptions et les interfaces qtcups, gtklp, etc.

Le driver hpijs semble ignorer complétement les paramètres! La mise à jour de hpijs semble difficile car il y a trop de dépendances avec gs, etc. Fiasco! A moins de le recompiler dans l'environnement existant...

Outils pour imprimantes HP DeskJet : le paquet djtools offre les utilitaires hpset et djscript...


3 2 Rendre disponible pour SAMBA

Avec WEBMIN sous Debian, j'ai une erreur quand je veux éditer ou créer une imprimante :

Violation de contrôle d'accès : lpadmin::list_printers failed : 
Undefined subroutine &lpadmin::list_printers called at (eval 16) line 2.

Essai de SWAT :

J'utilise xinetd. Il faut ajouter swat à xinetd.conf
Pour cela WEBMIN fait l'affaire! Pour les paramètres, je m'inspire de l'entrée swat en commentaire dans inetd.conf

Relance de xinetd...
Accès OK à http://antares:901

La création de l'imprimante HP ne pose pas de problème. Mettre,
printing: cups
Dans les variables globales, mettre,
printing: cups
printcap name: cups

Dans le cas des stations Windoze, le pilote de l'imprimante doit être installé sur la station cliente. Or, le pilote de la HP DeskJet 670C ne peut être utilisé que si l'imprimante est locale! Quand l'imprimante est distante il faut installer le pilote HP Deskjet 660 color.


3 3 Rendre le contrôle disponible pour OpenOffice

A faire sur les stations du réseau qui ont accès à l'imprimante en IPP et qui utilisent OpenOffice. Lancer l'utilitaire graphique spadmin fourni avec OpenOffice. Selon que spadmin est lancé sous root ou sous un user, la configuration sera faite pour tous ou pour l'utilisateur seul.

La configuration générale est rangée sous,
/usr/lib/openoffice/share/psprint/
La configuration individuelle est rangée sous,
~/.openoffice/user/psprint/

# /usr/lib/openoffice/program/spadmin

Ajouter une imprimante, importer, sélectionner le fichier ppd ou une copie du fichier ppd si l'imprimante n'est pas locale, valider la commande lpr, créer, renommer (par défaut c'est le nom du driver.), refaire propriétés pour les corrections éventuelles et pour vérifier la validité des substitutions de polices. Supprimer éventuellement l'imprimante générique.

On peut commodément télécharger le fichier ppd situé sur un serveur en accédant à http://serveur:631
Cliquer sur l'imprimante, compléter l'URL avec .ppd, envoyer. Le fichier ppd s'affiche. Enregistrer sous un répertoire temporaire.

Avec cups et foomatic, les fichiers ppd sont rangés sous,
/etc/cups/ppd/


4 Mises à jour de Debian

Debian woody fait un peu en retard par rapport à d'autres distributions comme RedHat 9. En ce qui concerne les imprimantes EPSON Stylus, la base de données de Foomatic en est resté à la C80. Pas de C82 et encore moins de C84...

4 1 Mise à jour de gimp-print

Pour mise à jour de Debian woody,
http://gimp-print.sourceforge.net/
propose,
deb http://gimp-print.sourceforge.net/debian woody main
à mettre dans,
/etc/apt/sources.list
mais il ne donne que gs-stp à mettre à la place de gs et gs-common, ce qui ne répond pas à mon problème.


http://people.debian.org/~rleigh/gimp-print/
propose réellement des paquets de mise à jour de gimp-print pour woody :

cupsys-driver-gimpprint_4.2.6-1_i386.deb 13-Jan-2004 13:58   2.6M  
escputil_4.2.6-1_i386.deb                13-Jan-2004 13:58    53k  
foomatic-db-gimp-print_4.2.6-1_all.deb   13-Jan-2004 13:58   419k  
gimp-print_4.2.6-1.diff.gz               13-Jan-2004 13:55     6k  
gimp-print_4.2.6-1.dsc                   13-Jan-2004 14:00     1k  
gimp-print_4.2.6-1_i386.changes          13-Jan-2004 14:00     3k  
gimp-print_4.2.6.orig.tar.gz             13-Jan-2004 18:32   4.8M  
gimp1.2-print_4.2.6-1_i386.deb           13-Jan-2004 13:58   162k  
gimpprint-doc_4.2.6-1_all.deb            13-Jan-2004 13:58   545k  
gimpprint-locales_4.2.6-1_all.deb        13-Jan-2004 13:58   249k  
ijsgimpprint_4.2.6-1_i386.deb            13-Jan-2004 13:58    42k  
libgimpprint1-dev_4.2.6-1_i386.deb       13-Jan-2004 13:58   576k  
libgimpprint1-doc_4.2.6-1_all.deb        13-Jan-2004 13:58   474k  
libgimpprint1_4.2.6-1_i386.deb           13-Jan-2004 13:58   529k  

Paquets actuellement installés :

cupsys-driver-gimpprint_4.2.0-4
escputil_4.2.0-4
foomatic-db_0.20020408-4
gimpprint-doc_4.2.0-4
gimpprint-locales_4.2.0-4
libgimpprint1_4.2.0-4

Installation des nouveaux paquets,

# dpkg -i *.deb

Il faut inclure en plus,

ijsgimpprint_4.2.6-1_i386.deb

mais alors il manque,

libijs-0.34_0.34-1_i386.deb

trouvé difficilement à,
http://debian.nsu.ru/gnome2/dists/woody/gnome2/binary-i386/
car la version courante est maintenant 0.35!

Résumé des paquets installés :

cupsys-driver-gimpprint_4.2.6-1_i386.deb
escputil_4.2.6-1_i386.deb
foomatic-db-gimp-print_4.2.6-1_all.deb
gimpprint-doc_4.2.6-1_all.deb
gimpprint-locales_4.2.6-1_all.deb
ijsgimpprint_4.2.6-1_i386.deb
libgimpprint1_4.2.6-1_i386.deb
libijs-0.34_0.34-1_i386.deb

OK, mais foomatic ne voit toujours rien de mieux que Stylus C80! Pas de C84 ni même de C82...
En revanche l'administration de CUPS (localhost:631) voit les nouveaux pilotes!

Config de C84 sur /dev/lp0 OK!
Malgré le paquet gimpprint-locales, on ne voit que les versions (en) des pilotes...

Mise à jour de la configuration de SAMBA via SWAT (C84 à la place de HP)


4 2 Utilitaire de monitoring mtink

L'utilitaire escputil ne fonctionne pas avec la C84. Il est conseillé d'adopter une application graphique nommée mtink...

Le noyau actuel n'est pas compilé avec le support des fonctions bidirectionnelles du port parallèle... Génération d'un nouveau noyau,

kernel-image-2.4.19_custom.3.b_i386.deb

après ajout des paramètres suivants dans la config du noyau :
Parallel port support (M),
PC-style hardware (M)
IEEE 1284 transfert modes (*)
Character devices,
Parallel printer support (M)
Support for user-space parallel port device drivers (M) PPDEV

Installation de mtink (voir page spécifique)

Avec Debian, j'essaie lesstif comme remplacement de motif. Besoin du paquet lesstif-dev pour la compilation.

antares n'a pas de serveur X donc mtink doit pouvoir s'afficher sur une station du réseau.

$ mtink -display sirius:0

Le fonctionnement direct sur /dev/lp0 n'est pas très stable. Il faut tout de suite supprimer «détection automatique» et forcer la sélection C84 dans les préférences.

Installation de mtinkd :

# mtink-installInitScript

ne donne pas le résultat escompté (rien dans /etc/mtinkd.conf...)
askPrinter /dev/lp0
ne donne rien!

OK après avoir forcé
-name C84 -dev /dev/lp0
dans
/etc/mtinkd.conf

Sur les machine clientes, le mieux est de lancer mtink via ssh en donnant l'adresse de l'écran. Par exemple :
ssh -f antares mtink -display sirius:0
(voir page spécifique pour la mise en oeuvre.)


5 Dernières améliorations

5 1 Impression à partir de Windoze

L'impression à partir d'une station Windoze ne fonctionne pas. Dans le cas ou le pilote de l'imprimante est installé sur la station Windoze, les données sont déjà formatées et émise en RAW. OK après avoir décommenté les lignes octet-stream dans
/etc/cups/mime.types

# Uncomment the following type and the application/octet-stream
# filter line in mime.convs to allow raw file printing without the
# -oraw option.
#
application/octet-stream

et
/etc/cups/mime.convs

# Uncomment the following filter and the application/octet-stream type
# in mime.types to allow printing of arbitrary files without the -oraw
# option.
#
application/octet-stream        application/vnd.cups-raw        0       -

Mettre l'option -oraw dans la ligne de commande lpr de SAMBA, ne donne rien.


5 2 Utilisation du pilote KOWA pour Epson

Avec le pilote C84 l'impression est toujours décalée vers la gauche. Il n'y a pas ce problème avec le pilote C82... D'après le forum Epson sur linuxprinting, ce serait un pb connu en 4.2.6 et il faudrait passer en 4.2.7! Essayé page-left=18 en option sans succès.

Le forum Epson m'apprend l'existence de pilotes Linux pour imprimantes Epson, dits KOWA... Voir les liens,
http://www.epsondevelopers.com/lprint.jsp
http://www.epkowa.co.jp/english/index_e.html

Il y a effectivement un pilote «Photo Image Print System for Linux» ou PIPS pour Epson Stylus C83/C84. Debian n'est pas cité dans les OS supportés mais le paquet rpm fourni pourrait quand même s'installer sous Debian en le traitant avec alien.

Installation du paquet alien et sa suite :

The following NEW packages will be installed:
  alien debconf-utils debhelper html2text librpm4 rpm

Traduction du paquet rpm,

# alien /home/bernard/logiciels/kowa_cups_rh9/pips-sc84_83s-cups-2.6.2-1.i386.rpm

Installation du paquet Debian obtenu avec succès,

# dpkg -i pips-sc84-83s-cups_2.6.2-2_i386.deb

Arrêt de l'existant,

# /etc/init.d/cupsys stop
# /etc/init.d/mtink stop

Création de l'imprimante sous administration CUPS (antares:631)

Nom: sc84_83s, Emplacement..., Description..., Continue
Périphérique: EPSON Inkjet Printer #1 (Photo Image Print System), Continue
Type: EPSON, Continue
Modèle: EPSON Stylus C84/C83 Series, Photo Image Print System (en), Continue

Exploration de ce qui a été installé,

# ls -R /usr/local/EPKowa
/usr/local/EPKowa:
printer  SC84_83S

/usr/local/EPKowa/printer:
ekpd  paper_list.csv

/usr/local/EPKowa/SC84_83S:
cupsopt.csv  inst-rc_d.sh  libsc84_83s.readme  rc.d  readme-sc84_83s-cups  
scripts
/usr/local/EPKowa/SC84_83S/rc.d:
ekpd.debian  ekpd.local.slackware  ekpd.redhat  ekpd.slackware

/usr/local/EPKowa/SC84_83S/scripts:
en.lc  inst-cups-post.sh  ja.lc  setup-cups.sh

Lancement du script de post installation,

# /usr/local/EPKowa/SC84_83S/scripts/inst-cups-post.sh install
Install Message > Described entry of SC84_83S in services.
Install Message > Backup file is /etc/services.bak.
Install Message > Start /usr/local/EPKowa/SC84_83S/setup to change setup.

Lancement du script d'installation cups sans changer les paramètres par défaut,

# /usr/local/EPKowa/SC84_83S/scripts/setup-cups.sh
-----------------------------------------------

           Photo Image Print System

                 Setup script

-----------------------------------------------
Please select locale to use.
Select : en ja
(english) >
It starts to set up of Photo Image Print System.
If this product does not set up, it does not operate correctly.

Please specify the connection of a printer.
(/dev/lp0) >
Please specify the printer name when it is using by lpr.
(sc84_83s) >
Setup is complete. Is it saved?
(Yes/no) > Yes
The following files were changed.
/etc/ekpdrc
/etc/printcap

The following directories were created.
/var/spool/lpd/sc84_83s

It saved. Setup is complete.
Start /usr/local/EPKowa/SC84_83S/setup to change setup.

-----------------------------------------------

Commande pour lancer le moniteur de l'imprimante à partir d'une machine cliente :

$ ssh -f antares ekpstm

Il faut que ForwardX11 soit validé dans la config de sshd sur le serveur.

L'utilitaire ekpstm fournit une interface graphique agréable. Il donne sous forme imagée, l'état de l'imprimante et le niveau des cartouches d'encre. Comme fonction, il ne propose que l'annulation de l'impression en cours. Mais les fonctions techniques comme la vérification et le nettoyage des buses (qui sont proposées par mtink) peuvent très bien être mises en oeuvre à partir des boutons de l'imprimante.

Le démon ekpd fonctionne à peu près sur le même principe que mtink. Il autorise un accès concurrent au port de l'imprimante par l'intermédiaire d'un pipe,
/var/ekpd/ekplp0
Plusieurs copies de ekpd sont lancées. L'écoute se fait sur le port 35586 déclaré sous le nom cbtd dans /etc/services. Un client comme ekpstm ouvre une session sur ce port.

On constate que les filtres d'impression (pstoraster, rastertopips, pipstoprinter) ainsi que ekpd, consomment beaucoup de CP (jusqu'à 100% sur mon petit Pentium Pro 180!). Un peu moins quand on imprime des fichiers bruts préformatés (raw) en provenance de SAMBA, car dans ce cas seul ekpd est sollicité.

Mettre cette imprimante par défaut,

# lpadmin -d sc84_83s

Après reboot, ekpd ne tourne pas. Pourtant init est configuré pour le démarrer au boot... Le lancement de ekpd est placé trop tôt.

# cd /etc/rc2.d
# mv S11ekpd S20ekpd

Avec S20, ekpd démarre avec le gros des troupes et il tient!

Les paramètres de configuration de l'imprimante proposés par le pilote KOWA (voir fichier ppd) sont volontairement simplifiés et présentés de façon concrète. On peut choisir 2 ou 3 qualités d'impression : speed, medium, quality ou speed, quality, pour les différentes qualités de papier disponibles. Ici on ne parle pas en dpi...

Prise en compte par OpenOffice, comme déjà décrit plus haut.

Limitation d'accès au réseau local dans /etc/cups/cupd.conf, comme déjà décrit plus haut.

Mise à jour de la configuration de SAMBA via SWAT (sc83_84s à la place de C84.)


Page Index

Contact : linux@samaxar.org

Page d'accueil de SAMAXAR