Scanners sur interface parallèle
Installation d'un scanner parallèle grâce à SANE
Introduction
Ce document a pour but de décrire l'installation d'un scanner sur port parallèle au sein d'un système GNU/Linux. Pour cela nous allons utiliser SANE (Scanner Access Now Easy), dernière version à ce jour 1.0.5. Pour cet exemple, il s'agit d'un MUSTEK ScanExpress 6000P. Un scanner déjà ancien mais qui me donne toute satisfaction. D'autant plus que l'on me l'a donné ;-)
Pré-requis
- Un systeme GNU/Linux fonctionnel,
- Un scanner supporté par SANE,
- les librairies sane-backends (les pilotes),
- les programmes sane-frontends (les interfaces). A signaler que sane-frontends n'est pas obligatoire si vous envisagez d'utiliser une autre interface comme xsane (http://www.xsane.org) ou quiteinsane (http://sourceforge.net/projects/quiteinsane), d'un autre côté, ils sont trés léger et permettent de tester rapidement l'installation de SANE.
Installation
Si vous disposez d'une distribution récente il y a de fortes chances pour que SANE soit disponible sur les cds de votre distribution. Dans ce cas utilisez votre méthode habituelle pour l'installation.
Exemple pour un systeme basé sur RPM :
rpm -ivh sane-frontends-1.0.5.rpm
Exemple pour une slackware :
Si vous préférez installer à partir des sources copiez celles-ci dans le répertoire de votre choix, /opt par exemple :
cp sane-frontends-1.0.5.tar.gz /opt/sane-frontends-1.0.5.tar.gz
passez dans le repertoire /opt
décompressez-les :
tar zxpvf sane-frontends-1.0.5.tar.gz
passez dans le répertoire sane-backends-1.0.5 nouvellement créé :
compilez de la manière habituelle :
effectuez la même opération pour sane-frontends :
Configuration
Suivant votre distribution, les fichiers de configuration ne se trouvent pas au même endroit.
Il s'agit du fichier dll.conf ainsi que du fichier propre a votre scanner : mustek_pp.conf pour notre exemple.
Ils se trouvent à l'intérieur du dossier sane.d
Pour une Mandrake 8 avec installation des rpm Mandrake :
Pour une slackware 8 avec installation par installpkg :
Pour une installation a partir des sources :
A l'intérieur du répertoire sane.d supprimez toutes les entrées ne correspondant pas à votre scanner. Ne laissez que dll.conf et l'entrée liée à votre matériel, mustek_pp.conf dans notre cas.
éditez le fichier dll.conf et commentez (mettez le symbole # devant une ligne, pour qu'elle ne soit pas prise en compte) ou supprimez toutes les entrées ne correspondant pas à votre matériel. Dans mon exemple il a fallu que je décommente la ligne mustek_pp qui correspond à mon scanner.
Voici pour l'exemple mon fichier dll.conf :
#net
mustek_pp
éditez le fichier correspondant à votre scanner : mustek_pp.conf dans notre cas. Dans la section DEVICES, précisez sur quel port est connecté votre scanner, soit :
- port 0x378 pour un scanner connecté sur lp1
- port 0x278 pour un scanner connecté sur lp2
- port 0x3bc pour un scanner connecté sur lp0
Attention : pour une carte mère avec un seul port parallèle, lp0 correspond à 0x378. Décommentez les entrées correspondant au modèle exact de votre scanner.
Commentez toutes les autres sauf : option io-mode alt_lock, option niceload, option buffer 122400
Voici mon fichier mustek_pp.conf :
# GLOBAL #
# option io-mode [mode] must come before all port< definitions, or it won't
# have the effect you'd expect
# enable this option, if you think your scanner supports the UNI protocol
# note however that this might disable the better EPP protocol
#option io-mode try_mode_uni
# choose between two different ways to lock to port option io-mode alt_lock
# set the maximal height (in lines) of a strip scanned (default: no limit)
#option strip-height 0
# wait n msecs for bank to change (default: 700 msecs)
# if this value is to low, stripes my appear in the scanned image
#option wait-bank 700
# size (in bytes) of scan buffer (default: 1 megabyte)
#option buffer 1048576
# try to avoid to heavy load. Note that this reduces scan speed
option niceload
# Define the time the lamp has to be on before scan starts (default 5 secs)
#option wait-lamp 5
# DEVICES #
# specify the port your scanner is connected to. Possible are 0x378 (lp1)
# 0x278 (lp2) and 0x3bc (lp0)
port 0x378
# the following options are local to this scanner
# WELL KNOWN OPTIONS #
# most scanners only need 200 - 250 msecs to change bank -> try it out
Mustek ScanExpress 6000 P
name SE-6000P
vendor Mustek
option wait-lamp 15
# Mustek ScanExpress 600 SEP
# name SE-600SEP
# vendor Mustek
# option wait-lamp 15
# Mustek ScanMagic 4800 P
# name SM-4800P
# vendor Mustek
# option wait-lamp 15
# Mustek 600 III EP Plus
# name 600IIIEPP
# vendor Mustek
# option wait-lamp 15
# some models only need 5 secs...
# Mustek ScanMagic/Express 1200 ED Plus (this scanner isn't yet supported!!!)
# name SM-1200EDP
# name SE-1200EDP
# vendor Mustek
# this scanner has an optical resolution of 600 dpi
# option use600
# this scanner *must* use option niceload
# option niceload
# Fidelity Imaging Solutions Inc. Gallery 4800
# name Gallery-4800
# vendor Fidelity-Imaging-Solutions
# Viviscan Compact II
# name Compact-II
# vendor Viviscan
# Medion MD9848 (aka Aldi-Scanner)
# name MD9848
# vendor Medion
# option wait-bank 250
# scan maximal 16 lines for one sane_read() call
#option strip-height 16
# we just need 16 lines * 3 (rgb) colors * 300 dpi * 8.5 inch bytes
option buffer 122400
# Enable this option, if you want user authentification *and* if it's
# enabled at compile time
#option auth
# use this option to define the maximal black value for lineart scans
#option bw 127
Utilisation
Après avoir enregistré vos modifications vous pouvez (si vous avez installé sane-frontend) lancer /usr/local/bin/xscanimage. Si tout s'est bien passé vous devez voir apparaître l'interface de gestion de votre scanner.
Vous avez la possibilité de lancer xscanimage comme un plugin de Gimp. Pour cela il suffit de creer un lien symbolique de /usr/local/bin/xscanimage vers le repertoire plug-ins de gimp dans votre repertoire personnel exemple pour l'utilisateur pedro :
Remarques :
Ce document n'est écrit que dans un but indicatif. Ce qui fonctionne chez moi peut ne pas fonctionner chez vous. Lisez les pages man de sane. Allez sur le site de sane : http://www.mostang.com/sane pour en savoir plus sur le matériel supporté et quel type de backend utiliser pour votre propre matériel.
A mon avis xsane (http://www.xsane.org) est plus complet que xscanimage notamment avec le support de la photocopie et la gestion fax. Mais bien sûr cela n'engage que moi.
Merci de me faire part de vos commentaires ou suggestions.
Additif
A la suite de plusieurs courriers reçus depuis la parution de cet article, il apparait que plusieurs problemes se posent encore.
1 . Il faut etre root pour pouvoir utiliser le scanner.
Le principe est simple : utiliser la couche réseau de SANE.
Solution pour Slackware (via inetd)
Ceci doit être compatible (ou presque) avec toute distribution utilisant inetd comme super-daemon.
éditer /usr/local/etc/sane.d/saned.conf et s'assurer que localhost est décommenté
éditer /usr/local/etc/sane.d/net.conf et s'assurer de la même chose
rajouter dans /etc/services " sane 6566/tcp "
rajouter dans /etc/inetd.conf "sane stream tcp nowait root /usr/local/sbin/saned saned "
Voilà ! Maintenant en tant que "user" le scanner apparait comme [net:localhost:mustek_pp:SE-6000P]
Solution pour Mandrake
Pour l'instant je n'en ai pas : Je sais que le principe est le même sauf que la Mandrake utilise xinetd au lieu de inetd mais je n'ai pas encore compris la procedure
Avis aux amateurs!!!!!!!
(Fred):: Je n'ai pas essayé, mais je pense qu'il faut :
créer /etc/xinetd.d/sane tel que :
{
disable = yes
port = 6566
socket_type = stream
wait = no
only_from = localhost
server = /usr/local/sbin/saned
# ce qui suit, doit peut-être être changé.
user = root
log_on_failure += USERID
}
Voilà ! Maintenant en tant que "user" le scanner doit apparaitre comme [net:localhost:mustek_pp:SE-6000P]
2 . Nico m'a fait part d'un probleme sur sa Debian.
Il faut selon lui creer un lien symbolique sur /dev/lp0 (ln -s /dev/lp0 /dev/scanner).
A essayer !
Je voudrais remercier tous ceux qui m'ont ecrit pour me faire part de leurs remarques et de leurs encouragements et par la meme occasion m'excuser de parfois avoir ete
un peu long a repondre mais n'etant pas informaticien de profession je ne peux y consacrer que mon temps libre.