Les informations contenues dans cette page ne sont aucunement garanties. Je les ai mises à la disposition du plus grand nombre pour rendre service, pas pour lire des reproches. Néanmoins, j'apprécierai grandement toutes les critiques constructives, en particulier, celles liées à mon orthographe déplorable, à ma syntaxe difficile à suivre et aux erreurs qui se sont certainement glissées subrepticement au sein de ce texte. Si vous voyez quelque chose à ajouter, je vous serais reconnaissant de bien vouloir me mailer les modifications que vous apportez à ce document. En plein accord avec l'esprit de liberté qui préside aux développements de linux, faites ce que vous voulez de ce texte, sauf prétendre que c'est vous qui l'avez écrit.
Ce document concerne l'installation d'un scanner et plus spécifiquement d'y-celui que j'ai chez moi : le Snapscan 310 SCSI. En fait, je pense que la procédure est globalement la même quelque soit le scanner, excepté l'application du patch spécifique au Snapscan (évidemment ;-). Ce document est écrit sous la forme d'une seule page, il est, de cette façon, plus facile de le télécharger.
Remarque :
Les scanners USB commencent à être supportés également par Linux. Voir la [usbscan.php3 rubrique correspondante].
Pour installer un scanner SCSI sous Linux vous aurez besoin de :
Note : l'ensemble de la procédure d'installation décrite se déroule avec les droits de root donc faites attention à ce que vous taperez. Certaines parties de la procédure ne nécessitent pas réellement ces droits, mais ce sera plus simple pour moi de décrire l'ensemble de la procédure avec ces droits-ci. Si le coeur vous en dit essayez vous-même de vous passer de ces droits, linux vous préviendra quand vous essayerez de les outrepasser.
Votre distribution vous fournit forcément les sources du noyau. Pour les besoins de l'explication j'utiliserai dans ce document l'exemple de la Mandrake 6.0 ou plus (fonctionne sur une Mandrake 8.0).
1. Il faut monter le CD de votre distribution.
Vous pouvez/devez vous passez de cette étape si vous utilisez supermount.
2. Il faut installer les sources du noyau.
Avec la Mandrake 6.0 les sources du noyau portent le joli nom de : kernel-source-2.2.9-19mdk.i586.rpm. Pour les installer, tapez :
Si vous n'avez pas la Mandrake 6.0, mais une autre distribution basée sur le système de package RPM la procédure est identique. Il faut seulement changer le chemin d'accès aux packages et le nom du package (ce sera toujours quelque chose du type kernel-source*, kernel-src*).
Récupérez les derniers sources du noyau sur ftp://ftp.fr.kernel.org/pub/linux/kernel/v2.4. Ainsi, si des problèmes ont été réglés par les développeurs du noyau, vous bénéficierez de ces améliorations.
Vous les décompressez dans le répertoire /usr/src :
Je ne décrirai rien de particulier, les sources de SANE sont disponibles sur le site de SANE. La version des librairies SANE que j'ai utilisées est la 1.0.5 ; chez moi elles fonctionnent correctement avec la Mandrake 8.0.
Décompressez les sources :
Les sources du patch sont disponibles, sur le site du rédacteur du "backend" du Snapscan
Plusieurs conseils :
Bon maintenant vous avez le patch, décompressez-le :
C'est bon tout est prêt ! On va maintenant configurer votre carte SCSI, [scanner.php3#sane_install passez ce qui suit] si votre carte SCSI est correctement configurée avec le support des périphériques génériques (c'est certainement déjà le cas si vous avez un graveur de CD SCSI correctement configuré).
Vérifions que le noyau que vous utilisez ne contient pas déjà tout ce qu'il faut :
Si le module sg.o existe, après avoir trouvé dans /usr/doc/HOWTO/BootPrompt-HOWTO le nom du module que vous devez charger pour votre carte SCSI, vous pouvez passer à [scanner.php3#scsi_config la section suivante].
Sinon faites ce qui suit :
Pensez à lire la [../kernel/kernel.php3 rubrique noyau].
A partir de maintenant vous devrez tout savoir sur votre carte SCSI : son nom, le numéro de l'interruption (IRQ) ainsi que la plage d'adresse (IO) qu'utilise votre carte SCSI. Toutes ces informations peuvent être obtenues :
Pour certaines cartes, l'interruption et l'adresse sont détectées automatiquement ; si vous avez l'une d'entre elles, vous n'avez pas besoin de vous en soucier ; vous pouvez voir si c'est le cas dans /usr/doc/HOWTO/BootPrompt-HOWTO.
Notez le nom du module correspondant à votre carte SCSI (dans la rubrique <Help> en face de chaque module, le nom est indiqué par :
The module will be called : XXXXXXXX.o
seul le XXXXXXXX nous intéresse, il sera désigné à partir de maintenant par VOTRE-MODULE).
ATTENTION : les cartes AVA 1505 XXX sont reconnues par linux comme étant des cartes AHA152x (nom du module aha152x) ! Certaines sont Plug&Play et paradoxalement plus compliquées à paramétrer avec Linux (cf : [pnp.php3 plug&play]).
Pour faire un peu de ménage :
[root@becane linux]# make clean
Pour que linux y retrouve ses petits :
[root@becane linux]# make dep
Pour créer votre noyau :
[root@becane linux]# make zImage
Pour créer vos modules :
[root@becane linux]# make modules
Pour installer votre noyau (attention cela modifie votre répertoire /boot et lance lilo):
[root@becane linux]# make install
Pour installer vos modules dans le répertoires ad hoc :
[root@becane linux]# make modules_install
[root@becane linux]# reboot
Bon, effectivement il faut rebooter une fois, mais c'est tout, après ce ne sera plus la peine (sauf si vous ajoutez un nouveau périphérique...).
Tout ceci est inutile si vous utilisez la Mandrake ou la RedHat (et certainement la plupart des distributions) car les distributions modernes disposent déjà de tous les modules précompilés. Mais je vous conseille de compiler votre noyau au moins une fois en n'activant que ce que vous utilisez (mais tout ce que vous utilisez : n'oubliez pas les modules ppp - il m'est arrivé de galérer plusieurs heures pour me reconnecter à Internet parce que j'avais oublié ce $*?! de module - , les modules de gestions de l'imprimantes, etc...), de cette façon votre noyau sera adapté à votre configuration et pas à toutes les configurations possibles (ce dont vous devez vous moquez comme de mon premier win$$$).
Maintenant, il vous faut configurer les modules ! Donc, éditez le fichier /etc/modules.conf, ce fichier dit au chargeur de modules de quelle manière doivent être chargés ces modules ; pour gérer votre carte SCSI, il doit contenir (au moins) les lignes suivantes :
ATTENTION : je ne bégaie pas ! VOTRE-MODULE est répété deux fois ! Le premier indique à quel module ce qui suit s'adresse, le second indique quel paramètre passer au noyau lors du chargement de ce module.
Le VOTRE-MODULES est le nom du module que vous avec compilé (le XXXXXXXX que je vous ai dit plus haut de noter). Pour ce qui concerne les options, je n'ai indiqué que celles des cartes compatible aha152x (c'est celle que j'utilise...).
Pour plus d'information sur les options des modules voir les HOWTO qui leur sont consacrés (par exemple : dans /usr/doc/HOWTO/BootPrompt-HOWTO, cherchez VOTRE-MODULE et lisez bien ce qui est écrit, normalement ce sont des options à passer au noyau quand le driver correspondant n'est pas compilé comme un module, mais il se trouve que ce sont les mêmes que celles à passer à modprobe. Pour certaines cartes il n'y a pas d'option : tant mieux c'est que le driver détecte tout tout seul, dans ce cas, seule la ligne "alias" est nécessaire).
Pour ma carte AVA 1505 qui utilise l'interruption 9 et l'adresse 0x340 (ou 340h d'après Win$$$), j'ai inséré les lignes :
Maintenant si tout a bien fonctionné vous devez pouvoir charger le module de votre carte SCSI, allumez votre scanner et tapez :
Si vous n'avez pas de message d'erreur, c'est que vous êtes sur la bonne voie, une petite vérification supplémentaire, pour voir ce que Linux trouve sur votre chaine SCS, tapez :
Là, j'ai mis ce que donne le scanne de ma chaine SCSI. La partie intéressante est celle qui indique que Linux a trouvé un scanner. Que d'efforts pour si peu de chose ! Mais maintenant que tout fonctionne, vous n'aurez plus jamais (à voir...) à tapez ce genre de commandes. C'est tout l'intéret de modifier le fichier /etc/conf.modules : il indique au chargeur de modules les paramètres à passer à ceux-ci.
Remarque : dans les informations qui sont retournées par cat /proc/scsi/scsi :
L'accès à votre scanner se fera par l'intermédiaire de périphériques, aussi appelés devices (les "fichiers" spéciaux contenus dans /dev comme par exemple /dev/hda1 qui permet d'acceder à la partition numéro 1 du dique maitre sur la première nape IDE), mais pour cela il faut qu'ils existent ;-). Normalement, ce doit être déjà le cas, mais vérifions que vous disposez bien de ces devices : les fichiers /dev/sg* :
Si ces devices n'exitent pas il faut les créer !
Bon , ça devrait suffire. Evidemment, votre distribution devrait déjà avoir créé tous ces périphériques (en cas de problème : changez de distribution, c'est pour ça qu'il y en à plusieurs ! ;-)
Remarque : pour ceux que ça intéresse :
crée un fichier spécial (un device) appelé sga dans le répertoire /dev (normalement tous les périphériques sont créé dans ce répertoire) dont l'accès se fera en mode caractère (c'est le paramètre c) dont le numéro de majeur (qui indique de quel type de périphérique il s'agit : ici un périphérique scsi dont l'accès par linux ne se fera pas au travers d'un drivers spécifique) est 21 et le numéro de mineur (qui indique de quel périphérique de ce type il s'agit) est .
Si vous n'avez jamais compilé un programme sous Linux, ne vous effrayez pas, vous allez voir que dans le monde GNU/autoconf tout est simple :
Rendez vous directement dans le répertoire où vous avez mis SANE et ne touchez pas 20.000 francs (pas encore) :
Compilez et installez SANE dans le répertoire /usr/local (note : si gimp 1.1.x est installé, le programme configure croit qu'il s'agit de gimp 1.0.x et essaie de compiler sane avec le support de gimp : ce qui ne marche pas, le mode de fonctionnement de gimp avec les plugins ayant changé entre ces deux versions, il faut donc, le temps de la compilation, déplacer le répertoire /usr/include/libgimp, merci à Yves Chaufour) :
Trouvez où est connecté votre scanner :
Pour permettre à SANE de trouver tout de suite votre scanner, créez un lien vers ce périphérique :
C'est fait !
Normalement, SANE doit maintenant fonctionner sans configuration particulière. Pour le vérifier, il suffit de lui demander d'afficher la liste des scanners qu'il trouve sur votre chaîne SCSI :
Si SANE trouve plusieurs fois votre scanner sur plusieurs périphériques différents, ce n'est pas que Linux dispose de la faculté de multiplier les scanners comme d'autre multiplient les pains : c'est qu'il existe plusieurs périphériques qui ont le même numéro de mineur et de majeur, ou que plusieurs liens ont été créés vers le même périphérique. De toute façon ça n'empêchera pas SANE de fonctionner correctement. Au pire il vous demandera quel scanner vous voulez utiliser.
Remarque : les fichiers de configuration de SANE se trouvent (si vous avez suivi la procédure proposée) en /usr/local/etc/sane.d. Le fichier essentiel est /usr/local/etc/sane.d/dll.conf qui indique à SANE quels sont les scanners à rechercher. Vous pouvez commenter les scanners que vous savez ne pas avoir. Suivant le nom de votre scanner un autre fichier est important : /usr/local/etc/sane.d/VOTRE-SCANNER.conf : il indique à SANE où est potentiellement connecté votre scanner. Il est déconseillé (sauf si vous aimez vous em..d.r) d'enlever l'entrée : /dev/scanner car elle permet de changer rapidement de scanner actif (au cas ou vous en ayez plusieurs) en modifiant seulement le lien /dev/scanner, par contre vous pouvez enlever toutes les autres (si vous avez créé le lien /dev/scanner).
L'utilisation de SANE est très simple. La distribution standard de SANE comporte deux programmes permettant d'utiliser votre scanner : scanimage et son homologue sous X : xscanimage.
Pour ce qui est de scanimage, je vous renvoie à la man page scanimage (1).
Pour utiliser xscanimage tapez :
Une fenêtre apparaît, vous permettant de saisir ou de choisir le fichier de sortie. Le réglage des paramètres est suffisamment simple pour que l'on ne s'y attarde pas. Sachez que les paramètres disponibles dépendent de votre scanner. Vous pouvez choisir la partie de l'image à scanner grace à la fenêtre de prévisualisation.
On peut configurer xscanimage en tant que plugin pour Gimp (pour cela il faut que, avant la compilation de SANE, vous ayez installé les fichiers d'include de gimp dans /usr/include (ou tout autre répertoire qui sera accessible par votre compilateur sans directive particuliére, en effet il y a un bug dans le programme de configuration de sane qui lui empêche - sur ma machine - de trouver ces includes s'ils sont ailleurs, avec la vérité par exmple), ce qui n'est pas automatique. Pour rémédier à cela, faites :
Puis, il suffit de créer un lien entre xscanimage et le répertoire de plugins de gimp :
Et c'est tout, vous relancez gimp et un menu proposant d'acquérir une image apparaît dans Xtns ! En fait ce lien n'est pas celui qu'il faudrait créer si vous voulez que tous les utilisateurs puissent utiliser votre scanner :
ou quelque chose d'approchant serait mieux venu.
Il existe d'autres programmes pouvant utiliser SANE. Je n'en connais que deux : xsane et ksane.
J'ai testé xsane. Personnellement, je continue à utiliser xscanimage pour les scannes simples et xsane pour le reste. Mais bon, tout cela reste affaire de goût, donc ne vous privez pas d'essayer les deux. Les plus de xsane :
Quant à ksane je ne l'ai pas utilisé et je ne sais donc pas ce qu'il vaut. Le développement de ce programme semble être au point mort.
Nous devons cette partie à : Christian Vivet.
sane 6566/tcp # SANE en reseau client
Et bien sur installer sane , xsane sur la machine serveur et sur la machine cliente puis les relancer. Voilà, ce n'est pas très compliqué à mettre en oeuvre et cela marche parfaitement.
Maintenant, quelques trucs
Utilisation depuis un autre compte que celui de root Si vous voulez scanner depuis un autre compte que root, vous devez autoriser l'accès en lecture/écriture au périphérique /dev/sgXXX correspondant à votre scanner :
pour que tout le monde puisse utiliser votre scanner, ou :
pour que seul monuser puisse utiliser votre scanner.
Enfin, pour ceux d'entre vous qui utilisent PAM (par exemple si vous utilisez la RedHat ou la Mandrake ou d'autres ?) vous pouvez aussi configurer le gestionnaire de sécurité PAM en modifiant le fichier /etc/security/console.perms afin de donner le périphérique /dev/sgXXX à l'utilisateur connecté à la console (vous par exemple). Il suffit pour cela, si votre scanner est connecté au périphérique /dev/sgb de rajouter à /etc/security/console.perms les lignes :
Ce qui suit <scanner>= est une expression régulière : vous pouvez mettre /dev/sg[ab] pour autorisé les accès à /dev/sga et /dev/sgb si vous avez plusieurs scanner. Mais faites attention : les /dev/sg* sont aussi les périphériques SCSI dans leur ensemble, donc si vous avez un disque SCSI ou un graveur SCSI l'un des /dev/sg* est celui-ci, vous devez absolument éviter de donner ce périphérique à l'utilisateur qui dispose de la console. Sinon vous aurez a un gros trou dans le sécurité de votre système. (Pour plus de renseignements concernant ceci : voir la manpage console.perms) Ce paragraphe est en version alpha (je ne suis pas absolument sûr que les /dev/sg* soient effectivement tous les périphériques de votre chaîne SCSI, mais dans le doute ne t'abstiens pas ! Surtout que ça ne coute pas cher de faire attention à la sécurité dans ce cas précis. Si quelqu'un en sait plus : qu'il m'écrive, ça m'intéresse.).
Lorque vous le souhaitez, pourvu que vous respectiez la règle suivante : le module correspondant à la carte SCSI sur laquelle est branché votre scanner, ne doit pas être chargé à ce moment là. Pour le vérifier, tapez :
Si cette commande renvoie quelque chose, c'est que votre module est chargé : pour utilisez votre scanner, vous DEVEZ le décharger. Pour cela deux méthodes existent. La méthode Win$$$ : on allume le scanner puis on reboote. La méthode Linux est moins bourrin : vous déchargez juste tous les modules qui utilisent votre carte scsi : sd_mod.o, sg.o et sr_mod.o :
Si vous obtenez un message d'erreur, c'est que soit ce module n'est pas chargé, soit l'un des modules est utilisé par un processus en cours de fonctionnement. Trouvez lequel, tuez-le, recommencez. Puis vous pouvez lancer xscanimage comme d'habitude. Il devrait trouver votre scanner (les modules nécessaires se chargeront alors automatiquement).
Le fichier /usr/local/etc/sane.d/dll.conf sert à dire à SANE quels sont les scanners dont il doit vérifier la présence dans votre chaîne SCSI. Vous pouvez commenter toutes les lignes qui ne correspondent pas à votre scanner (en les commençant par #).
Dans ce fichier, on trouve deux lignes qui ne correspondent pas réellement à des scanners : net et pnm.
Quelques ressources concernant les scanners (mailez-moi pour que je rajoute vos liens) :
@ Retour à la rubrique Matériel
Copyright © 19/11/1999, Frédéric Bonnaud
![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |