Origine de la doc : http://81.185.5.194/

Les Scanner sous linux

Saned

Comment paramètrer son scanner sous linux pour y acceder en réseau
jeudi 20 octobre 2005.
 

 

Le But ici est d’utiliser le daemon saned pour partager son scanner en réseau

prérequis : sane configuré et opérationnel (cf. Sane)

Pour partager un scanner sur le réseau, nous allons utiliser le daemon saned disponible avec le paquet sane-utils

Nous allons modifier quelques fichiers de configuration :

  • /etc/services
  • /etc/sane.d/saned.conf
  • /etc/sane.d/net.conf (seulement si le serveur est aussi client)
  • /etc/inetd.conf

/etc/services

contentons nous d’ajouter cette ligne pour nommer le port associé à saned


sane-port       6566/tcp   # SANE network scanner daemon
bien que cette étape puisse paraitre futile, elle est strictement nécessaire au bon fonctionnement de saned

/etc/sane.d/saned.conf

Nous allons définir l’ensemble des postes ayant le droit d’accèder au scanner


#
# saned.conf
#
# The contents of the saned.conf  file  is  a  list  of  host  names,  IP
# addresses or IP subnets (CIDR notation) that are permitted to use local
# SANE devices. IPv6 addresses must be enclosed in brackets,  and  should
# always  be specified in their compressed form.
#
# The hostname matching is not case-sensitive.
#
#scan-client.localdomain
xxx.xxx.xxx.xxx
127.0.0.1
#192.168.0.1/29
#[2001:7a8:185e::42:12]
#[2001:7a8:185e::42:12]/64
#
# NOTE: /etc/inetd.conf (or /etc/xinetd.conf) and
# /etc/services must also be properly configured to start
# the saned daemon as documented in saned(8), services(4)
# and inetd.conf(4) (or xinetd.conf(5)).

vous aurez bien sur à remplacer xxx.xxx.xxx.xxx par l’adresse d’un poste client ayant l’autorisation d’acceder au scanner (ajoutez autant de lignes que necessaire)

/etc/sane.d/net.conf

Nous indiquons ici quels sont les postes partageant un scanner C’est la condition nécessaire et suffisante pour accéder à un scanner partagé (penser à installer les paquets sane sur le client)


# This is the net config file.  Each line names a host to attach to.
# If you list "localhost" then your backends can be accessed either
# directly or through the ne?????4????A?t backend.  Going through the net backend
# may be necessary to access devices that need special privileges.
localhost
xxx.xxx.xxx.xxx
ici xxx.xxx.xxx.xxx correspond à l’adresse ip du serveur, ajouter autant de ligne qu’il n’y a de serveurs différents

/etc/inetd.conf

Nous allons indiquer au système comment lancer saned en ajoutant la section suivante


#:SANED: Saned Services
sane-port  stream  tcp nowait  saned.scanner  usr/sbin/saned saned

voilà maintenant il ne nous reste plus qu’à lancer tout ça et tester :


user@machine:~$ sudo /etc/init.d/inetd restart
Restarting internet superserver: inetd.
user@machine:~$ scanimage -L
device `avision:libusb:001:003' is a Hewlett-Packard ScanJet 5300C flatbed scanner
device `net:localhost:avision:libusb:001:003' is a Hewlett-Packard ScanJet 5300C flatbed scanner
user@machine:~$

Nous voyons que notre scanner est accessible en local ou via l’interface réseau.Si ce n’est pas le cas, vérifiez les trois fichiers ci dessus ainsi que la configuration de votre firewall


Comment fonctionnent les scanners sous linux ?

. tout d’abord le scanner est un périphérique du système, et nous allons différencier trois types de scanner :

. je disais donc, les scanners sont des périphériques du système et en tant que tel (sous linux) ils sont associés à un fichier.

. nous avons donc notre périphérique de connecté, le noyau va lui associer un module (driver si vous y tenez) si le noyau n’y arrive pas nous allons l’aider un peu

. ce n’est pas fini, notre module connait maintenant le périphérique, sait le piloter, reste à lui apprendre à dialoguer avec lui. Il nous faut donc un linguiste et son dictionnaire (backend)

Compatibilité

Vous trouverez la liste des scanners compatibles sur le site de sane

Les paquets nécessaires

paramétrage

. une fois installés ces paquets, attaquons nous au paramétrage : . supposons que tout se passe pour le mieux dans le meilleur des mondes : .

user@machine:~$ sane-find-scanner
 # sane-find-scanner will now attempt to detect your scanner. If the
 # result is different from what you expected, first make sure your
 # scanner is powered up and properly connected to your computer.

 # No SCSI scanners found. If you expected something different, make sure that
 # you have loaded a SCSI driver for your SCSI adapter.
 # Also you need support for SCSI Generic (sg) in your operating system.
 # If using Linux, try "modprobe sg".

found USB scanner (vendor=0x03f0 [Hewlett Packard], product=0x0701 [Hewlett Packard ScanJet 5300C/5370C ]) at libusb:001:003
 # Your USB scanner was (probably) detected. It may or may not be supported by
 # SANE. Try scanimage -L and read the backend's manpage.
 # Not checking for parallel port scanners.
 # Most Scanners connected to the parallel port or other proprietary ports
 # can't be detected by this program.
 # You may want to run this program as root to find all devices. Once you
 # found the scanner devices, be sure to adjust access permissions as


user@machine:~$scanimage -L
device `avision:libusb:001:003' is a Hewlett-Packard ScanJet 5300C flatbed scanner

Dans ce cas notre scanner est configuré et prêt à l’emploi

Il arrive que quelques étapes suplémentaires soient nécessaires,

tout d’abord, veillez à ce que votre utilisateur appartienne au groupe scanner, que le device associé au scanner soit accessible par le groupe scanner.

le cas du HP5300C donné en exemple : j’usqu’au versions 2.6 des noyaux linux, il était nécessaire d’activer le support de hp53XXc dans le noyau (nécéssite une recompilation). Avec les dernières versions, il est pleinement supporté par la libusb, et d’ailleur l’option à été retirée du noyau. Je suppose que ce changement n’est pas lié à la version du noyau mais plutôt à l’évolution de sane et de la libusb. Je déconseillerais donc à l’avenir de compiler le module hpusbscsi (option hp53xxc)

le cas des scanners scsi, en supposant que toutes les options ad-hoc du noyau soient activées, il vous faudra commencer par décharger les modules sr_mod et sg de votre noyau