[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Scanner Epson perfection 640u avec sane



Bonsoir,
  Ci -joint l'explication supere claire de Patrice KARATCHENTZEFF <patrice.karatchentzeff@st.com>...  (posté il y a 5 jours!)

-- 
Remi COLETTA
www.coletta.free.fr

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

But: installer un scanner SCSI sur une distribution Linux. La
documentation d'installation étant très pauvre, ce document permettra
de guider un débutant. La distribution est la Debian 2.2 (mais cela
n'a pas beaucoup d'importance intrinsèquement: ce qui pourra changer
avec votre distribution est généralement l'emplacement des fichiers de
configuration (que vous pourrez retrouver avec locate après avoir mis
à jour votre base de donnée des emplacements avec updatedb.)

Le logiciel pour le scanner sous Linux est sane, que l'on trouve sous
trois formes: libsane, sane et xsane. Il y a libsane-dev pour le
développement aussi.

Le piège à con avec sane est dans sa numérotation de version. La
version courante est la 1.0.4. Mais il y a *beaucoup* de différences
entre les 1.0.x. C'est ce qui m'a piégé...

La page de référence est http://www.mostang.com/sane/

*La* page à lire en premier est
http://www.mostang.com/sane/sane-old-backends.html qui donne en fonction
de la version 1.0.x de sane le nom des scanners supportés. Lisez-la
*avant* d'acheter votre scanner. Ou de faire n'importe quoi.

Par suite, le scanner sera un ARTEC AMS12 avec une ADAPTEC 2940 comme
carte SCSI. La carte SCSI n'est pas celle fournie avec le scanner (qui
n'est supportée qu'à partir du noyau 2.4 dans mon cas).

Donc, si l'on regarde la page précédente, dans mon cas, il faut minimum
sane 1.0.2. Manque de bol, sur la Potato, il y a la 1.0.0.... Il faut
donc recompiler la bonne version de sane. Vous avez deux choix: la
méthode goret: ./configure, make, make install et à votre charge de
gérer cela... ou bien un « backport ». Ce dernier marche sans
problème. Utiliser les paquets sources de « unstable » (tant qu'à
faire...) qui propose la version 1.0.4 de sane.

N-B: cette partie est spécifique à Debian bien sûr.


- récupérez les sources des trois paquets suivants dans unstable (le
plus simple est de les chercher à partir de www.fr.debian.org)

sane-backends_1.0.4-1.diff.gz
sane-backends_1.0.4-1.dsc
sane-backends_1.0.4.orig.tar.gz
sane-frontends_1.0.4-1.diff.gz
sane-frontends_1.0.4-1.dsc
sane-frontends_1.0.4.orig.tar.gz
xsane_0.70-1.diff.gz
xsane_0.70-1.dsc
xsane_0.70.orig.tar.gz

- commencez pas compiler sane-backend (qui va donner la bibliothèque
de développement et la bibliothèque sane proprement dite).

dpkg-source -x sane-backends_1.0.4-1.dsc
cd sane-backend-1.0.4
fakeroot dpkg-buildpackage -b
cd ..
dpkg --control  libsane-dev_1.0.4-1_i386.deb
dpkg --control  libsane_1.0.4-1_i386.deb

Puis installez libsane-dev pour pouvoir compiler les sane-frontend et
xsane. Attention, c'est un gros morceau et sur mon Athlon 750 avec 128
Mo de mémoire, cela mettait la machine à fond.

- commpilez sane-frontend et xsane sur le même modèle que précédemment

- puis installez ensuite les 3 paquets suivants:

libsane_1.0.4-1_i386.deb
sane_1.0.4-1_i386.deb
xsane_0.70-1_i386.deb

C'est bon: le système est à jour... Il est possible que cela réclame
une bibliothèque gtk ou quelque chose de similaire plus à jour car mon
système n'est plus une Potato pure... cela se fera de la même façon
que décrite précédemment.

Bon, on passe maintenant à la carte SCSI: si vous êtes comme moi un
néophyte du SCSI, lisez tout ce qui suit: je passe en revue tout dans
l'ordre...

Premièrement, méfiez-vous: le SCSI coûte la peau du c... et notamment
en câble: vérifiez bien le brochage avant d'acheter... un câble coûte
dans les 250 balles et un adaptateur dans les 200... C'est dégueulasse
mais c'est comme cela.

Branchez votre carte SCSI dans votre PC et allumez votre scanner: puis
allumez votre ordinateur et booter normalement. Si tout se passe bien,
vous devrez voir dans le message de boot (que vous pourrez relire avec
dmesg ultérieurement) la détection de votre carte. Voici ce que j'ai
chez moi:

scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 5.1.31/3.2.4
       <Adaptec AIC-7850 SCSI host adapter>
scsi : 1 host.
  Vendor: ARTEC     Model: AM12S             Rev: 1.06
  Type:   Scanner                            ANSI SCSI revision: 02
scsi : detected total.

Le scsi0 correspond à la carte SCSI détectée et le nombre d'hôtes
correspond à ce que le noyau trouve sur la chaîne SCSI, ici un scanner
ARTEC AM12S.

Pour être sûr que votre carte sera détectée, le plus simple est
d'aller les voir dans les sources du noyau. Ou bien faîtes un « make
xconfig » et regardez dans la partie SCSI. Ou bien (sur Debian) allez
voir dans /boot/config-2.2.17 voir quelles cartes SCSI sont
supportées. Achetez en conséquence.

Chez Debian, toutes les cartes SCSI sont compilées par défaut en
statique dans le noyau, ce qui facilite la tâche. Vous n'aurez besoin
que du module générique de support SCSI qu'est sg. À mettre dans
/etc/modules pour le charger au boot.

Il est possible, voire certain, que vous n'ayez pas d'entrée le bon
message. Pas de panique: il faut procéder par étape. D'abord, la carte
SCSI: il *faut* la faire détecter... cf. les sources du noyau.

Voici où sont rangés les informations importantes après avoir
booté. Dans /proc/scsi, vous trouverez deux répertoires: un contient
le nom de la carte SCSI, ou plutôt le nom du module générique de votre
carte. Dedans, vous trouverez un fichier « 0 » dans lequel se trouve
le même message d'information de la carte que vous avez au boot. Le
second répertoire, sous le nom de « scsi », contient les éléments de
la chaîne SCSI. Vous y trouverez normalement le nom du scanner.

# cat /proc/scsi/scsi  
Attached devices:  
Host: scsi0 Channel: 00 Id: 04 Lun: 00
  Vendor: ARTEC    Model: AM12S            Rev: 1.06
  Type:   Scanner                          ANSI SCSI revision: 02

Pour ma carte SCSI, le module est aic7xxx (c'est le module générique
des Adaptec).

root-/proc/scsi/aic7xxx   
# cat 0
Adaptec AIC7xxx driver version: 5.1.31/3.2.4
Compile Options:
  TCQ Enabled By Default : Disabled
  AIC7XXX_PROC_STATS     : Enabled
  AIC7XXX_RESET_DELAY    : 15

Adapter Configuration:
           SCSI Adapter: Adaptec AIC-7850 SCSI host adapter
                           Narrow Controller at PCI 0/14/0
    PCI MMAPed I/O Base: 0xe9000000
 Adapter SEEPROM Config: SEEPROM not found, using defaults.
      Adaptec SCSI BIOS: Disabled
                    IRQ: 10
                   SCBs: Active 0, Max Active 1,
                         Allocated 15, HW 3, Page 255
             Interrupts: 192
      BIOS Control Word: 0x0000
   Adapter Control Word: 0x0000
   Extended Translation: Disabled
Disconnect Enable Flags: 0x00ff
 Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
    Tagged Queue By Device array for aic7xxx host instance 0:
      {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
    Actual queue depth per device for aic7xxx host instance 0:
      {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:

(scsi0:0:4:0)
  Device using Narrow/Async transfers.
  Transinfo settings: current(0/0/0/0), goal(255/0/0/0), user(25/15/0/0)
  Total transfers 0 (0 reads and 0 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+  
128K+
   Reads:       0       0       0       0       0       0       0      
0
  Writes:       0       0       0       0       0       0       0      
0


Tout ce qui suit ne sert à rien tant que la carte SCSI n'est pas
détectée. Si le scanner lui ne l'est pas, voici comment faire. Dans
tous les cas, jetez-y un coup d'oeil...

Les périphériques SCSI sont gérés par le noyau à partir de
/dev/sg*. Il semblerait que suivant les périphériques, le noyau les
accroche soit à /dev/sg[a-e], soit à /dev/sg[0-5].

Pour tout simplifier, *aucun* de ces fichiers n'existe sous
Potato. Pour les créer, utilisez tout simplement MAKEDEV. En root,

# cd /dev/
# MAKEDEV sg

Normalement, vous devrez avoir  

# ls -l sg*
crw-------    1 root     root      21,   0 mai 13 18:58 sg0
crw-------    1 root     root      21,   1 mai 13 18:58 sg1
crw-------    1 root     root      21,  10 mai 13 18:58 sg10
crw-------    1 root     root      21,  11 mai 13 18:58 sg11
crw-------    1 root     root      21,  12 mai 13 18:58 sg12
crw-------    1 root     root      21,  13 mai 13 18:58 sg13
crw-------    1 root     root      21,  14 mai 13 18:58 sg14
crw-------    1 root     root      21,  15 mai 13 18:58 sg15
crw-------    1 root     root      21,  16 mai 13 18:58 sg16
crw-------    1 root     root      21,   2 mai 13 18:58 sg2
crw-------    1 root     root      21,   3 mai 13 18:58 sg3
crw-------    1 root     root      21,   4 mai 13 18:58 sg4
crw-------    1 root     root      21,   5 mai 13 18:58 sg5
crw-------    1 root     root      21,   6 mai 13 18:58 sg6
crw-------    1 root     root      21,   7 mai 13 18:58 sg7
crw-------    1 root     root      21,   8 mai 13 18:58 sg8
crw-------    1 root     root      21,   9 mai 13 18:58 sg9

Les périphériques au-dessus de 7 servirait à l'Ultra-Wide (?).

Créez les liens entre [a-e] et [0-5]:

# ln -sf sg0 sga
etc.


# ls -l sg[a-e]
lrwxrwxrwx    1 root     root            3 mai 13 19:00 sga -> sg0
lrwxrwxrwx    1 root     root            3 mai 13 19:00 sgb -> sg1
lrwxrwxrwx    1 root     root            3 mai 13 19:00 sgc -> sg2
lrwxrwxrwx    1 root     root            3 mai 13 19:00 sgd -> sg3
lrwxrwxrwx    1 root     root            3 mai 13 19:00 sge -> sg4

Et maintenant, vous pouvez rebooter.

Normalement, vous devriez maintenant voir le scanner.

Faîtes un lien entre le périphérique sur lequel pointe le scanner :

# ln -sf sg0 scanner

Pour le déterminer, faîtes un cat successif des différents sg.  S'il
n'y a pas de message d'erreur, du type « cat: /dev/sg4: Périphérique
non configuré », alors c'est le bon.

Configurez alors votre scanner. Dans Debian, tous les fichiers de
configuration sont dans /etc. En l'occurence /etc/sane.d:

Éditez le fichier correspondant à votre scanner: ici, c'est
artec.conf.

# cat artec.conf
AM12S  
/dev/sg0

(vous devez donc avoir le nom du scanner puis le périphérique sur
lequel il pointe).

Vérifiez les fichiers sane.conf et notamment décommentez (au moins) la
ligne localhost. Adaptez en cas de réseau.

Enfin, vérifiez le fichier dll.conf: il faut que le nom de votre
scanner y soit décommenté.

Maintenant, essayez de détecter votre scanner à la main:

# find-scanner
find-scanner: found scanner "ARTEC AM12S 1.06" at device /dev/scanner
find-scanner: found scanner "ARTEC AM12S 1.06" at device /dev/sg0
find-scanner: found scanner "ARTEC AM12S 1.06" at device /dev/sga

  
Lancez le daemon de sane:

# saned &

Une aide: l'option -d est un peu bavarde en cas de problème.

Puis sous X, tentez de lancer xscanimage.

Normalement, tout devrait bien se passer.

N'oubliez pas de configurer correctement les droits du scanner (via
des groupes) pour y faire accéder un utilisateur quelconque et ne pas
travailler en root.

Bon scan.

PK


-- 
Patrice KARATCHENTZEFF
STMicroelectronics           Tel:  04-76-92-67-95
850, rue Jean Monnet
38926 CROLLES Cedex, France  Courriel: patrice.karatchentzeff@st.com



Reply to: