     [ Configuration d'une imprimante Epson Stylus Color II ]

Auteur : Jean-Michel Claude

Bonjour a vous tous Linuxiens et Linuxiennes,

Il y a quelques temps, je postais un petit message pour vous remercier
de m'avoir aider a m'en sortir avec ma nouvelle acquisition:

                        une EPSON Stylus Color II

Cette petite merveille de technologie me permet dorenavant d'imprimer
tout (ou presque) ce que je veux sur l'OS le moins cher du monde :-)

Il etait donc normal de vous communiquer cette experience enrichissante
et laborieuse ;-) Mais n'est-ce-pas la le premier principe de Linux:
configurer pour gagner ?

Ce petit condense sur le sujet est pour la majeure partie tire des
differents mails que beaucoup d'entre vous m'ont aimablement envoye.

Que ces quelques conseils vous aident comme ils m'ont tire d'affaire !
Et encore merci a tous ceux qui m'ont sorti de l'embarras. Sans vous
ce condense n'existerait pas! Soyez en remercies ...


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

I/ LE PREMIER OBSTACLE
----------------------

Dites les copains, vous avez pense a recompiler votre noyau prefere
avec l'option PRINTER = "on" ?

Evidemment cela parait evident! Mais on est jamais trop prevenant ;-)


II/ L'INDISPENSABLE POUR PARTIR DU BON PIEDS
--------------------------------------------

Tout(e) bon(ne) linuxien(ne) que vous etes ce doit (pour ne pas dire:
OBLIGE ;-) de lire tous ce qui est en rapport avec le sujet.

Je ne saurais trop vous recommander:

        a) le genial GUIDE DU ROOTARD d'Eric Dumas, voir le chap. 7.10
        b) le PRINTING-HOWTO - <LA> reference

Ces documents sont accessibles (entre autres) sur ftp.ibp.fr:

        /pub/linux/french/docs/HOWTO.

Si vous avez acces au Web, passez par:

        http://www.loria.fr/linux
        http://www.freenix.fr

        c) les "foires aux questions" (FAQ dans le texte) peuvent vous
           etre utiles. La encore vous pouvez les recuperer sous ibp:

        ftp.ibp.fr:/pub/doc/faqs



III/ SI TU L'AS PAS, T'ES GRILLE :-(
------------------------------------

Bien entendu vous connaissez certainement tous GhostScript (gs pour les
intimes). Ce charmant programme vous permet de faire des merveilles
avec votre imprimante preferee: imprimer du Postscript sans en avoir
l'air... et bien d'autres choses encore.

Encore faut-il avoir la bonne version de gs. En effet la gs3.33, bien
qu'integrant un driver specialement dedie a la machine sous citee ne
permet pas d'imprimer correctement du Postscript, et pour la couleur
vous pouvez toujours attendre ;-)

Il vous faut -au minimum- la version gs3.53. Mais au diable recuperer
cette version miracle. Il faut aller la chercher a la source: dans la
caverne ...d'aladdin :-)

http://www.cs.wisc.edu/~ghost/ghostscript/obtaina.html


Sur ce site, vous devez telecharger 2 archives compressees-gzippees.
*** ATTENTION *** les deux sont indispensables: sinon vous n'arriveriez
pas a les recompiler. Il s'agit de:

ghostscript-3.53.tar.gz         1882k (sources Ghostscript)
et ghostscript-3.53jpeg.tar.gz  443k  (sources librairie JPEG)

Via ftp, voici les adresses correspondantes:

ftp://ftp.cs.wisc.edu/ghost/aladdin/ghostscript-3.53.tar.gz
ftp://ftp.cs.wisc.edu/ghost/aladdin/ghostscript-3.53jpeg.tar.gz

Optionnellement vous pouvez dans la foulee recuperer les polices de
caracteres associees. Mais ce n'est pas necessaire. Les anciennes
(gs 2.6.2 et gs 3.33 sont parfaites); enfin si vous insister:

ftp://ftp.cs.wisc.edu/ghost/aladdin/ghostscript-fonts-std-3.53.tar.gz

Remarque importante:
-------------------

A l'heure ou j'ecris ces lignes, la version de gs a tres certainement
evoluee. Aussi, je vous conseille de toujours recuperer la derniere
version disponible. Ainsi vous beneficierez des dernieres evolutions et
mise a jour des packages 'gs'.

Lorsque vous aurez recupere le necessaire et le suffissant, il vous
faudra effectuer les quelques manips suivantes:

        1) Editez le fichier gp_unix.c (ligne 34) et remplacer:

           extern char *getenv(P1(const char*));

           par:

           extern char *getenv __P ((__const char *__name));

        2) Comme il l'est indique dans la documentation fournie (voir
           et LIRE les fichiers <xxx>.doc ;-), il vous faut modifier
           le fichier gcc-head.mak pour enregistrer le driver de la
           Stylus Color II. Pour ce faire, recherche la ligne ou se
           trouve la chaine commencant par DEVICE_DEVS6 (celle qui
           permet de declarer les imprimantes a jet d'encre).
           A la fin de cette ligne, ajouter st800.dev (pour les
           imprimantes de la serie Stylus 800) et stcolor.dev (pour
           celles de la serie Stylus Color), soit:

        gcc-head.mak:  DEVICE_DEVS6= (...) st800.dev stcolor.dev

        3) Toujours comme indique dans la doc (use.doc si je ne m'abuse)
           executer la commande "tar_cat" ce qui aura pour effet de
           mettre a jour tous les fichiers .mak

        4) A ce niveau, il suffit de lancer la commande "make". Cela
           peut prendre jusqu'a 10 minutes avec un 486DX50/16Mo et un
           peu moins de 5 avec un P120/16Mo.

        5) On y est presque!! ;-)
           A ce stade vous devriez avoir un executable nomme "gs". Pour
           s'executer il doit trouver le fichier gs_init.ps. Pour ce
           faire soit:
                a) vous utiliser l'option -I/<gs-path-directory> pour
                   executer GhostScript,
                b) vous modifiez votre fichier .Xresources et vous
                   ajouter les lignes suivantes:

                ghostview*interpreter:  /<gs-path-directory/gs
                ghostview*arguments:    -I<gs-path-directory>

        6) Bravo, vous avez le droit de prendre la boisson qui vous
           plaira !!


Remarque: vous pouvez loger gs3.53 la ou il vous semble bon. Pour ma 
part, j'ai mis:
        - les executables sous /usr/local/bin
        - les sources sous /usr/local/src/gs3.53
        - les fontes sous /usr/local/lib/fontes/gs3.53

Mais chacun fait ce qu'il lui plait ...


IV - AU SECOURS, CA NE MARCHE TOUJOURS PAS
------------------------------------------

Alors la vous etes impayable! Si vous suivez tous les conseils du Guide
du ROOTARD et du PRINTING-HOWTO, vous devriez imprimer sans difficulte.

Mais, bon, personne n'est parfait (moi en premier), aussi je me permets
de vous donner quelques conseils qui souvent suffiront pour vous sortir
de l'embarras.

1) Dites les copains, les droits d'acces sur les fichiers, c'est hyper
importants!!
Verifiez que vos executables lpr, lpq, lpd, lprm...ont les bons
droits et les bons groupes d'appartenance.

Pendant que vous y etes, jetez aussi un oeil sur vos repertoires de
spool et sur vos filtres (si vous en utiliser)

2) Je vous rappelle que la simple commande:

cat /etc/passwd > /dev/lp[x]   ou x E [0,2]

devrait fonctionner (en tous les cas valider votre chaine d'impression)
avec un fichier /etc/printcap comme celui-ci:

lp|<ma-petite-imprimante-cherie>:\
        lp=/dev/lp[x]: \
        sd=/var/spool/lp[x]: \
        mx#0: \
        sh

3) Juste pour voir, avez vous pensez a demarrer votre daemon
d'impression ? (lpd)
Theoriquement cela est realise sous /etc/rc.d/rc.M (avec une
distribution Slackware)

4) Et, en passant, est-ce que votre imprimante a ete active ?
La encore vous pouvez ajouter la commande suivante :

        /usr/sbin/lpc up <ma-petite-imprimante-cherie>

dans /etc/rc.d/rc.local.


V - MON /ETC/PRINTCAP et MES FILTRES
------------------------------------

Pour l'instant, je n'ai pas encore etudier en profondeur l'utilisation
des filtres magiques (vous savez ce genre de truc sympa qui vous permet
d'imprimer tout type de fichier a l'aide de la meme commande); lorsque
j'aurais bien avancer je pourrais vous proposer un condense.

Pour la petite histoire, sachez que je cogite sur une archive nomme
"magicfilter-1.2.tar.gz".

		[ Quelques semaines plus tard ]

En fait, j'ai tellement cogite sur l'utilisation de MagicFilter que j'ai
fini par l'installer :-) Et cela fonctionne tres bien.

L'installation est facile et sa mise en oeuvre l'ai egalement. Alors
pourquoi ne pas vous aussi utiliser ce package si utile ? ;-)

J'utilise MagicFilter conjointement avec deux filtres
qui me permettent d'imprimer soit en noir/blanc soit en couleur.

Voici donc le contenu de mon printcap, qui me permet d'imprimer
soit en noir et blanc (en utilisant l'imprimante logique "stylus"),
soit en couleur (en appelant l'imprimante "stcolor").

Contenu du /etc/printcap:
------------------------
# Printcap: to be used with the inclosed filter

# Don't forget to place the filter in /etc and make the
/var/spool/lpd/lp
# Directory, and set the lp setting to the proper device.

lp:lp=/dev/lp1:sd=/var/spool/lp1:mx#0:sh
stylus:lp=/dev/lp1:sd=/var/spool/lp1/stylus:mx#0:if=/usr/local/etc/filter.bw:sh
stcolor:lp=/dev/lp1:sd=/var/spool/lp1/stcolor:mx#0:if=/usr/local/etc/filter.color:sh


Avec Magic-Filter 1.2

##################################################################
#! /usr/local/bin/magicfilter
#
# Magic filter setup file for Epson Color Stylus II
#

# PostScript files: use GhostScript to convert to printer format
0       %!              filter  /usr/X11R6/bin/gs
  			-I/usr/local/src/gs3.53 \
                        -q -dNOPAUSE -sDEVICE=stylus \
                        -r720x720 -dnoWeave -sDithering="fsmono" \
                        -sPAPERSIZE=a4 \
                        -dSAFER -sOutputFile=- $ENTETE stcolor.ps -

# DVI files: convert to PostScript using dvips
0       \367\002        fpipe   dvips  -D 360 -R -q -f

# compress'd data
0       \037\235        pipe    gzip  -cdq 

# compressed files (packed, gzip, freeze, and SCO LZH respectively)
0       \037\036        pipe    gzip  -cdq 
0       \037\213        pipe    gzip  -cdq 
0       \037\236        pipe    gzip  -cdq 
0       \037\240        pipe    gzip  -cdq 

# troff documents
0       .so\040         reject  Attempted to print a ".so" troff file.
0       .\?\?\040       fpipe   `/usr/bin/grog  -Tps $FILE` 
0       .\\\"           fpipe   `/usr/bin/grog  -Tps $FILE` 
0       '\\\"           fpipe   `/usr/bin/grog  -Tps $FILE` 
0       '.\\\"          fpipe   `/usr/bin/grog  -Tps $FILE` 
0       \\\"            fpipe   `/usr/bin/grog  -Tps $FILE` 

# ditroff
0       "x T ps"        pipe    /usr/bin/grops 
0       "x T dvi"       pipe    /usr/bin/grodvi 
0       "x T ascii"     pipe    /usr/bin/grotty 
0       "x T latin1"    pipe    /usr/bin/grotty 
0       "x T lj4"       reject  Cannot print LJ4 ditroff files.

# Portable bit-, grey- and pixmaps: convert to PostScript
0       P1\n            reject  Cannot print PBM files on this printer.
0       P2\n            reject  Cannot print PGM files on this printer.
0       P3\n            reject  Cannot print PPM files on this printer.
0       P4\n            reject  Cannot print PBM files on this printer.
0       P5\n            reject  Cannot print PGM files on this printer.
0       P6\n            reject  Cannot print PPM files on this printer.

# PJL: Sorry, this printer doesn't do PJL
0       \033%-12345X    reject  Cannot print PJL files on this printer.
0       "@PJL "         reject  Cannot print PJL files on this printer.
0       @PJL\t          reject  Cannot print PJL files on this printer.
0       @PJL\r          reject  Cannot print PJL files on this printer.
0       @PJL\n          reject  Cannot print PJL files on this printer.

# GIF files: convert to PPM
0       GIF87a          reject  Cannot print GIF images on this printer.
0       GIF89a          reject  Cannot print GIF images on this printer.

# JFIF (JPEG) files: convert to PPM/PGM
0       \377\330\377\340\?\?JFIF\0      reject  Cannot print JPEG/JFIF \
        images on this printer.

# TIFF files (lousy magic!!)
0       MM              reject  Cannot print TIFF images on this
printer.
0       II              reject  Cannot print TIFF images on this
printer.

# BMP files (even lousier magic -- I guess that's what you can expect
# for something out of Microsoft)
0       BM\?\?\?\?\?\?\?\?\?\?\?\?\x0c  reject  Cannot print OS/2 1.x \
        bitmaps on this printer.
0       BM\?\?\?\?\?\?\?\?\?\?\?\?\x40  reject  Cannot print OS/2 2.x \
        bitmaps on this printer.
0       BM\?\?\?\?\?\?\?\?\?\?\?\?\x28  reject  Cannot print Windows 3.x
\
        bitmaps on this printer.

# Sun rasterfiles
0       \x59\xa6\x6a\x95 reject Cannot print Sun rasterfiles on this
printer.

# SGI Imagelib (RGB) files
0       \x1\xda         reject  Cannot print SGI RGB files on this
printer.
0       \xda\x1         reject  Cannot print SGI RGB files on this
printer.

#
# Standard rejects... things we don't want to print
#

# Various archive formats
257     ustar\0         reject  Attempted to print a tar file.
257     "ustar  \0"     reject  Attempted to print a tar file.
0       07070           reject  Attempted to print a cpio file.
0       PK\3\4          reject  Attempted to print a zip file.
20      \xdc\xa7\xc7\xfd reject Attempted to print a zoo file.

# Binaries (Linux): reject with email message
0       \013\1d\0       reject  Attempted to print a compiled binary.
0       \100\1d\0       reject  Attempted to print a compiled binary.
0       \007\1d\0       reject  Attempted to print a compiled binary.
0       \314\0d\0       reject  Attempted to print a compiled binary.
0       \177ELF         reject  Attempted to print an ELF object.
0       \007\001\0      reject  Attempted to print an object file.
216     \021\001\0\0    reject  Attempted to print a core dump file.
0       !<arch>         reject  Attempted to print an archive.
0       =<ar>           reject  Attempted to print an archive.

# Don't confuse this one with troff!
0       .snd            reject  Attempted to print Sun/NeXT audio data.

# wild guesses
# If starts with <ESC>, assume raw printer data
0       \033            cat
# optimistic troff magic
0       .               fpipe   `/usr/bin/grog  -Tps $FILE` 
# wacko troff magic
0       '''             fpipe   `/usr/bin/grog  -Tps $FILE` 

# Default entry -- for normal (text) files.  MUST BE LAST.
default                 text

Pour une impression couleur, il suffit de positionner l'option
'-sDithering' a "fsrgb".

=-=-=-=-=-
Noury BENMANSOUR ajoute :

Ce message s'adresse aux utilisateurs d'une Epson Stylus Color 800.
J'ai galéré pendant plusieurs mois.
En effet, en passant de la RedHat 4.2 à la 5.0 puis à la 5.1,
mon imprimante est devenue tellement lente sous Linux que je ne
l'utilisais plus. Quand on sait que je ne vais sous W95 que quand il me
tombe un oeil :-)
J'ai cherché partout la solution et apparemment plusieurs personnes
avaient le même  problème. NE CHERCHEZ PLUS.
Alan Cox a réglé le problème, mais je ne le savais pas. Un bug est
apparu
dans le noyau 2.0.33 ou 2.0.34 (je ne sais pas). Il a été résolu dans le
2.0.36.
J'ai changé de noyau ce soir et miracle, mon imprimante revit.
Elle fonctionne bien en polling, pas en IRQ. Il semblerait, par
ailleurs,
qu'elle n'aurait jamais fonctionné en IRQ.
J'espère que cette info servira.
Je ne sais pas si d'autres imprimantes sont concernées.
Merci à tous ceux qui m'on aidé, la liste est longue, ils se
reconnaitront ici
-=-=-=-=-=
