Guide d'utilisation d'un scanner

Auteur : Howard Shane

Historique des versions
Version 1.0515-01-2004jhs
Quelques corrections et mises à jour
Version 1.019-08-2003tm
Version initiale, révisée par LDP
Version 0.0407-2003jhs
Version clarifiée, révisée et éditée après demande de retour d'expérience auprès des participants à la mailing list SANE-devel
Version 0.0106-2003jhs
Version brouillon

Résumé

Ce document a été conçu pour décrire les étapes nécessaires pour l'accès à un scanner et son utilisation sur un système tournant sous Linux.


1. Introduction

Ce document a été écrit pour aider l'utilisateur Linux dans le paramétrage de son scanner, y compris les scanner à plat, à main, caméras vidéo, appareils de photographie numérique, périphériques de capture de trames vidéo et cætera. Il n'a pas pour objet de vous indiquer le bon programme pour atteindre un résultat d'image particulier, ni de vous aider à utiliser au mieux les paramètres de votre scanner. Pour cela, il vous suffira de consulter la documentation accompagnant votre application ainsi que le mode d'emploi de votre périphérique.

Enfin, ce document ne répond pas non plus à la question : « Quel scanner choisir ? » La réponse est fonction de ce que vous attendez d'un scanner. Je vous suggère de jeter un oeil à la liste des matériels compatibles Linux au chapitres suivants : Section 2, « Prise en charge générale et type d'interface » et ici, au sein de la FAQ du projet SANE

1.1. Politique de distribution

Copyright 2004 Howard Shane.

Il est permis de copier, distribuer, et de modifier ce document suivant les termes de la licence de documentation libre GNU, version 1.2 ou tout autre version suivante publiée par la Fondation du Logiciel Libre (Free Software Foundation) exempte de Invariant Sections, de texte de couverture, ou de 4e de couverture. Un exemplaire de la license en question peut être trouvée au chapitre suivant : Section 8, « License Libre GNU ».

1.2. Avertissement

L'auteur est dégagé de toute responsabilité par rapport au contenu de ce document. L'utilisation des concepts, exemples et autres éléments de ce document se fera sous votre entière responsabilité. Ce document étant une nouvelle version, il se peut que certaines inexactitudes techniques ou autres provoquent une erreur système, l'endommagement de votre matériel ou la perte irréversible de vos données. Nous vous conseillons la plus grande prudence, et vous avisons que, même si des erreurs sont improbables, l'auteur n'en saurait être tenu responsable d'aucune manière.

Tout copyright réservé, sauf indication contraire. L'utilisation de certains mots dans ce document ne saurait être considérée comme portant atteinte à la validité d'aucune marque ou service.

Nommer certains produits ou marques ne saurait être considéré comme de la publicité.

1.3. Nouvelles versions

Cette version est la version initiale.

La dernière version de ce document est disponible ici.

1.4. Crédits

Je souhaite remercier Oliver Rauch, Henning Meier-Geinitz, Jonathan Buzzard, Laurent-jan, Jochen Eisinger et tant d'autres qui ont participé au développement du projet SANE et/ou ont contribué à la mailing list de ce projet, sans qui ce document aurait eu beaucoup de difficultés à voir le jour, voire n'aurait jamais été édité. J'aimerais aussi remercier les nombreuses personnes qui ont pris le temps de m'envoyer par mail de nouvelles informations et leurs corrections.

Je souhaite aussi remercier Marla pour avoir gentiment supporté que je passe tant de temps à la rédaction de ce projet.

1.5. Retour d'expérience

Merci de m'indiquer vos corrections ou tout élément manquant à l'adresse suivante : . Puisqu'il s'agit de la première version, je suis tout particulièrement intéressé par toute correction. N'hésitez surtout pas à me contacter si j'ai commis une erreur ou si certains éléments nécessitent une mise à jour. Dites-moi aussi s'il existe certains raccourcis, outil ou élément d'information qui pourrait aider les utilisateurs, et mériterait d'être inclus à la présente documentation. Je vous prie de m'en excuser, mais je ne pourrai pas répondre aux questions techniques ou demande d'aide du style « aidez-moi, SVP ! » concernant les scanners ; tout envoi de mail à ce sujet sera orienté vers /dev/null; pour toute source d'aide, y compris les aides en ligne, veuillez consulter le chapitre Section 7.5, « J'ai un scanner Acme Whizzbang, ou d'un autre modèle, et vous n'en avez pas parlé », mais seulement après avoir consulté les pages de ce document dans leur entier. Je ne suis pas un expert en scanner, et je ne possède pas tous les modèles disponibles pour les tester chez moi. Ma contribution au support technique pour les scanners sous Linux se limite à la compilation de ma propre expérience avec les très nombreuses données des autres, afin de donner naissance à un guide pratique succinct mais je l'espère très utile.

1.6. Conventions adoptées dans ce document

Les conventions suivantes ont été adoptées dans ce document et sont détaillées ici pour tous ceux qui n'auraient pas une vision claire de la façon dont on doit utiliser le mode ligne de commande sous Linux, qui se fait presque toujours par console.

Tout d'abord, les noms de fichiers sont indiqués de la façon suivante : /chemin/fichier

Les commandes sous Linux sont exécutées (ou "appelées") sur console, par ce que l'on appelle des "lignes de commande". Si vous êtes en mode non-graphique (mode texte), le prompt vous apparaîtra avec un signe dollar :

$
..., ou un dièse :
#
... si vous vous êtes connecté comme super-utilisateur ou si vous disposez des droits correspondants. Vous pouvez aussi accéder à la console dans le système X window, connu autrement sous le nom X ou X11, avec xterm ou un terminal d'émulation similaire. Les commandes à utiliser sur console, mais sitées dans un paragraphe de ce document, se présentent ainsi : faites ceci.

Les commandes ainsi que leur résultat seront représentées par des captures d'écran :

$ date
Sun Jul 27 22:37:11 CDT 2003

Quand une commande apparaît avant un prompt, (par exemple : $ date ci-dessus), il est supposé que la touche [Return] ou [Enter] a été relâchée après la commande, éventuellement suivi du résultat (par exemple une date).

2. Prise en charge générale et type d'interface

Ce document traite de quatre principaux types d'interface scanner: les interfaces SCSI, USB, port parallèle, et IEEE 1394. La plupart des scanners sont compatibles avec Linux, comme indiqué au lien SANE. Mais ce n'est pas la même chose avec TWAIN, avec lequel vous devriez être plus familier si vous avez déjà utilisé un scanner sous un autre système d'exploitation comme Microsoft Windows™. Le protocole le plus récent permet de marier le driver et l'interface utilisateur de façon à ce que sont utilisation soit impossible en dehors de son environnement graphique propriétaire. Ainsi, SANE, ou Utilisation Aisée d'un Scanner ( Scanner Access Now Easy, a été conçu pour une utilisation sous l'environnement Unix, même s'il ne s'y limite absolument pas. Le standard SANE permet la modularité au moment où le driver rencontre l'application, et améliore grandement la flexibilité et la portabilité. Avec SANE , il vous est possible de scanner en ligne de commande, de concevoir votre propre interface pour utiliser les pilotes SANE, accéder à votre (vos) scanner(s) via un réseau, et même contrôler vos caméras et autres périphériques comme indiqué à video4linux pour faire des acquisitions photographiques. Ainsi, SANE est Sain, là où TWAIN ne l'est pas.

NOTE: Avant de poursuivre votre lecture, visitez la page SANE à l'adresse http://www.sane-project.org/sane-mfgs.html pour vérifier la compatibilité de votre scanner. Autrement, vous pouvez consulter la page moteur de recherche des scanners compatibles SANE.

Si vous possédez un périphérique intégré, i.e. qui permet de scanner, imprimer, et envoyer des fax, vous pouvez suivre les étapes suivantes pour le scanner en choisissant la bonne interface, comme si vous l'utilisiez comme un scanner standard. Ceux qui possèdent un HP officejet doivent se reporter au Drivers du projet HP Officejet Linux, qui décrit dans le détail la façon d'obtenir les diverses fonctions de ce périphérique intégré sous Linux.

2.1. Scanners SCSI

Ces scanner sont pilotés par un contrôleur SCSI. De façon générale, on peut partir du principe que tous les scanners SCSI sont compatibles avec Linux, à partir du moment où le SCSI est pris en charge. Vous pouvez consulter Le guide des matériels équipés de contrôleurs SCSI si vous n'êtes pas sûr de la compatibilité de votre matériel SCSI. Si votre contrôleur SCSI a été livré avec le scanner, il y a des chances pour que votre matériel ne soit pas compatible du tout, ou seulement partiellement, le contrôleur SCSI ne possédant pas toutes les fonctions habituelles.

Exécutez la commande man sane-scsi si vous rencontrez des problèmes lors de la configuration de votre scanner SCSI

2.2. Scanners USB

Vous savez probablement déjà à quoi ressemble un connecteur USB et où il se branche. Si vous possédez un scanner USB, il est très probablement compatible avec Linux. Vous trouverez des informations pour rendre actif le sous-système USB ainsi que la prise en charge USB du scanner au chapitre Section 2.5, « Prise en charge par le système d'exploitation ».

2.3. Scanners Port Parallèle

Les scanner port parallèle en général peuvent être mis en service avec un pilote compatible. Cela dit, si votre périphérique possède aussi un port USB (ce qui est le cas dans la majorité des cas pour des scanners récents) et un backend USB qui fonctionne, je vous conseille vivement de l'utiliser prioritairement, la configuration étant plus facile dans ce cas. Si votre scanner n'a qu'une interface port parallèle et un contrôleur propriétaire ou non standard, il se peut que vous n'ayez pas de compatibilité. Si vous trouvez quelque part un pilote pour cette interface port parallèle, allez voir le chapitre Section 2.8, « Scanners port parallèle ».

2.4. IEEE 1394 (Firewire™, i.Link™)

Certains scanner IEEE 1394 sont compatibles au moment où j'écris ces lignes, notamment ceux fabriqués par Nikon et Epson. L'interface IEEE 1394 est prise en charge depuis les versions Linux basées sur la version 2.4 du noyau. Si votre noyau prend en charge l'interface IEEE 1394, veuillez vous rendre au chapitre du fabriquant pour trouver les matériels compatibles SANE Section 2, « Prise en charge générale et type d'interface », et lire les pages d'explications relatives à votre matériel, s'il en existe.

2.5. Prise en charge par le système d'exploitation

Si vous ne disposez pas d'une interface USB, passez au chapitre Section 2.7, « La prise en charge de votre scanner par le noyau Linux ». Si votre équipement dispose d'un port parallèle, passez au chapitre Section 2.8, « Scanners port parallèle ».

2.6. Scanners USB et Libusb

Ce chapitre fut intitulé en son temps « Prise en charge de l'interface USB du scanner par le noyau » (« USB Scanner Kernel Support »), mais l'apparition de libusb a permis de se passer de la compatibilité avec le noyau. Pour plus d'informations, faites la commande man sane-usb. Si vous souhaitez une prise en charge plus conventionnelle par le noyau pour votre scanner USB, passez au chapitre Section 2.7.2, « Noyau, USB et prise en charge de scanners USB ». À ce jour, la plupart des distributions, dans leur forme stable, proposent libusb (certaines l'installent même pas défaut). Ainsi, si votre interface USB n'est pas prise en charge par votre noyau, il vous suffira d'installer le package libusb pour mettre en service votre matériel. Vous devez activer dans le noyau la prise en charge pour votre système de fichier pour les périphériques USB, ce que la plupart des distributions font automatiquement. Pour en être sûr, lancez la commande suivante :

$ cat /proc/filesystems

Vous devez obtenir, entre autres :

nodev   usbdevfs
nodev   usbfs

Il vous sera peut être demandé de monter usbdevfs pour l'activer et consulter les fichiers spécifiques au périphérique, ce que vous pouvez faire en faisant : mount -t usbdevfs none /proc/bus/usb. N'essayez pas d'utiliser libusb alors que la prise en charge par le noyau est active ou en cours de chargement. Vous ne devez les utiliser que l'un après l'autre.

Vous obtiendrez le package libusb dans le format .rpm, .tgz ou .deb à partir de votre distribution Linux. Si vous envisagez de compiler vous-même vos propres binaires SANE à partir d'une source contenant la prise en charge libusb, vous aurez aussi besoin d'installer le package libusb-dev.

2.7. La prise en charge de votre scanner par le noyau Linux

La prise en charge par le noyau est impérative pour les interfaces USB, SCSI et port parallèle (si vous n'utilisez pas libusb). Votre noyau doit déjà contenir tout ce qu'il faut pour une prise en charge correcte, le moyen de le savoir étant de lancer la commande dmesg et de vérifier que le driver en question est bien lancé au démarrage. Si vous ne le voyez pas apparaître, c'est que le driver doit être présent sous forme de module, mais pas nécessairement chargé. Pour le vérifier, lancez la commande suivante :

$  ls -R /lib/modules/X.XX/kernel/drivers

où 'X.XX' est le numéro de version de votre noyau. Voici un exemple de résultat obtenu pour un noyau prenant en charge un scanner USB (j'ai supprimé toutes les lignes inutiles pour rester concis):

./usb:
scanner.o
usbcore.o

(un truc pour les débutants : si les infos de dmesg ou dans le module ci-dessus défilent trop vite, complétez la commande avec le 'less' (ou 'more' si vous n'en avez pas assez): ls -R /lib/modules/X.XX/kernel/drivers | less ou alors enregistrez les données en question dans un fichier de la façon suivante: ls -R /lib/modules/X.XX/kernel/drivers > fichier.txt, où 'fichier.txt' contiendra toutes les informations voulues, et sera accessible en lançant la commande cat [fichier] | less.)

The following information is arranged on the basis of scanner interface type. Si votre noyau ne contient pas les éléments de prise en charge adéquats, il vous est toujours possible de le recompiler. Si la compilation d'un noyau ne vous est pas familière, dirigez-vous vers Guide du noyau (Kernel HOWTO) pour plus d'informations.

2.7.1. Prise en charge de scanners SCSI par le noyau

Si, en lançant make config, make menuconfig ou make xconfig etc., vous remarquez que vous disposez d'une interface SCSI, sachez qu'en plus de la prise en charge de votre adaptateur SCSI, vous devez aussi activer la prise en charge des drivers génériques SCSI. De tels drivers génériques sont souvent /dev/sg0, /dev/sg1.... A partir du moment où vous savez déjà si votre carte est prise en charge, après avoir consulté la liste des contrôleurs SCSI pris en charge, tout ce qu'il vous reste à faire, après avoir eu la confirmation que votre noyau prend en charge votre matériel et votre périphérique SCSI, est de charger le(s) module(s) approprié(s) :

# modprobe NOM_DU_MODULE_DE_VOTRE_CARTE

# modprobe sg

...en tant que root. Notez que certains soucis avec la prise en charge de l'émulation ide-scsi (utilisée pour la prise en charge ATAPI-eide CDRW) ont été remontés, empêchant l'accès au scanner ; si votre scanner est effectivement pris en charge et si vous n'arrivez pas à faire fonctionner votre scanner, essayez de décharger le module ide-scsi :

rmmod ide-scsi

...ce problème m'a été remonté pour des noyaux aussi récents que la version 2.4.20+.

2.7.2. Noyau, USB et prise en charge de scanners USB

Pour la prise en charge d'un scanner USB, vous devez disposer d'une prise en charge par le noyau du sous-système USB, que ce soit usb-ohci, usb-ehci, ou tout autre protocole de périphérique USB utilisé par votre système. La prise en charge de l'USB est incluse dans le noyau à partir des versions 2.2. Pour de plus amples informations à propos de la prise en charge USB en général, référez-vous au site du projet USB Linux. Si vous souhaitez accéder à votre scanner par le noyau (au lieu d'utiliser libusb comme indiqué au chapitre Section 2.6, « Scanners USB et Libusb »), aurez besoin d'activer la 'prise en charge de scanner USB', qui, si elle est présente, est visible par la commande dmesg, ou lsmod si le module est chargé. Si vous voulez savoir quels modules sont chargés, tapez ce qui suit :

# lsmod

Comme le montre le prompt ci-dessus, vous devez disposer des privilèges root pour le faire. Le résultat de la commande devrait contenir cela (mais pas seulement) :

cdrom                  29312   0  (autoclean) [sr_mod]
usb-ohci               17888   0  (unused)
usbcore                56768   0  [scanner ibmcam usbvideo usb-ohci]
scanner                 8704   0 

Si scanner n'apparaît pas comme chargé, et si vous savez que votre noyau contient un module de prise en charge de scanner USB, essayez de le charger directement :

# modprobe -v scanner

... ce qui doit vous donner quelque chose du style :

Using /lib/modules/2.4.20/kernel/drivers/usb/scanner.o

En plaçant l'entrée scanner dans /etc/modules (notez que cela varie avec les distributions), le module en question sera automatiquement chargé au démarrage. Vous pouvez alors vérifier le chargement du module en consultant le syslog ou dans le journal de démarrage en faisant : dmesg | less). Vous devez trouver une ligne du style :

May 16 23:17:25 K7 kernel: usb.c: registered new driver usbscanner
May 16 23:17:25 K7 kernel: scanner.c: 0.4.6:USB Scanner Driver

2.8. Scanners port parallèle

Vous savez maintenant que la configuration de scanners port parallèle peut présenter certaines difficultés. Encore une fois, préférez toujours l'interface USB au port parallèle, si vous avez le choix.

2.8.1. Prise en charge par le noyau du port parallèle

Pour les noyaux de type 2.2 et 2.4, le pilote du port parallèle devra être intégré au noyau ou disponible comme module externe (les noyaux standards l'activent par défaut). Je vous conseille de lire les informations générales sur la prise en charge du port parallèle par un noyau Linux avant d'aller plus loin. Pour s'assurer que le module parport est chargé, consultez le fichier dmesg ou faites lsmod comme indiqué plus haut. En lançant la commande dmesg | less vous devriez obtenir, entre autres :

Mar  3 08:00:25 K7 kernel: parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
Mar  3 08:00:25 K7 kernel: parport0: irq 7 detected

Si vous compilez votre propre noyau, activez 'Parallel Port support.' Je vous conseille d'activer 'IEEE 1284 transfer modes,' et si vous disposez d'une architecture de type x86 : 'PC-style hardware.'

Si la commande modprobe retourne un message d'erreur quand vous essayez de charger le module, il vous faudra spécifier l'adresse de votre matériel lors du lancement de modprobe. Les adresses les plus usuelles sont 0x378 pour un système x86 ; 0x278 et 0x3BC pour d'autres ports intégrés ou de type ISA. Les ports parallèle PCI ont souvent des adresses bizarres. On peut activer plusieurs périphériques en utilisant soit le module parport_pc soit le module parport_arc, mais cela dépasse le périmètre de ce guide. ATTENTION : Soyez sûr de l'adresse que vous allez rentrer, sinon votre système deviendra instable, se plantera, ou votre machine implosera.

De préférence, réglez votre port parallèle sur le mode « EPP », ou alors ECP/EPP. Le mode « Bidirectionnel » (aussi nommé « BPP » ou « PS/2 ») peut fonctionner, mais plus lentement. Le mode « Unidirectionnnel » n'est pas adapté au scannage. Ces réglages peuvent être effectués au moyen du BIOS, au moins sur les systèmes x86.

Si votre scanner nécessite la prise en charge du SCSI, il vous faudra faire évoluer votre noyau pour la prise en charge du parport-SCSI. Vous vous aiderez des outils disponibles à l'adresse www.torque.net/parport/ppscsi.html. Si besoin, vous devrez procéder à la manipulation suivante :

  • SCSI support

  • SCSI generic support

  • Prise en charge du module central du contrôleur de votre port parallèle SCSI ppSCSI (t348 pour le APA-348 et T348, t358 pour le APA-358 et T358, epsa2 pour le plus ancient Shuttle EPSA-2, epst pour le Shuttle EPST et APA-1350, onscsi pour le OnSpec 90c26, et sparcsi pour le SparCSI et ParaSCSI)

Une fois la compilation réalisée, il s'agit simplement de charger les bons modules.

3. Accéder et utiliser un scanner

Le chapitre suivant concerne tous les types de scanners. Certains items spécifiques à tel ou tel modèle de scanner sont reportés en fin de chapitre.

3.1. Système de fichiers des périphériques

Devfs ou le « système de fichiers des périphériques » n'est qu'en option pour les noyaux de version antérieure à 2.2. Si vous ne l'avez pas utilisé jusqu'à ce jour, je vous conseille de le prendre maintenant en compte. Il peut vous simplifier énormément la gestion du périphérique. Devfsd, le démon système de fichiers de périphérique, crée et supprime de façon dynamique sur votre système vos périphérique, sans qu'aucune intervention de l'utilisateur ne soit nécessaire. Vous saurez si votre système utilise devfsd si vous lancez la commande ls -f /dev/ et si vous reconnaissez des liens similaires pointant vers un fichier de périphérique ou un « noeud », inclus dans une arborescence logique de sous-répertoires à l'intérieur du fichier /dev. Vous pouvez aussi voir tourner devfsd en tapant dans une fenêtre de commande ps -A pour vérifier les programmes en fonctionnement. Ce démon n'utilise que très peu de mémoire. Si devfsd/devfs tourne correctement, vous pouvez sauter les paragraphes suivants, le processus quelque peu archaïque de création manuelle de noeuds de périphérique vous étant alors inutile. Dans ce cas, il vous suffira de sélectionner le bon raccourci dans le fichier /dev.

Si vous voulez tester devfs, il vous faut activer le système de fichier /dev ('/dev file system') et la fonction 'montage automatique au démarrage' dans le module de configuration du noyau 'Système de fichier ('File Systems'). Et oui, il vous faut absolument recompiler le noyau si vous n'en disposez pas déjà ! ATTENTION : le seul et unique paquet compatible dont vous aurez besoin est 'devfsd'. ATTENTION : Si vous activez devicefs avec le montage automatique au démarrage sans avoir installé le démon devfs, votre système deviendra inbootable !

Devfs ne rend pas obligatoire le changement des droits d'accès utilisateur au périphérique.

Bien évidemment, ces commentaires sur devfs ne font que refléter l'opinion de votre humble serviteur et sont à prendre en tant que tels, notamment si vous êtes débutant et donc peu enclin à recompiler votre propre noyau.

A partir des versions 2.6 du noyau, le démon devfs a été délaissé au profit d'un démon tournant dans l'espace utilisateur (i. e. hors du noyau) connu sous le nom de udev, devfs restant disponible en tant qu'option . Vous trouverez des informations sur udev ici si tant est que vous vouliez jouer avec le feu?

3.2. Créer manuellement des périphériques

Si ni devfs ni devfsd ne tourne, voici ce que vous devrez faire, sauf si vous utilisez déjà libusb pour un scanner USB, auquel cas sautez ce paragraphe et allez au chapitre Section 4, « SANE ». Il y a deux façons de créer manuellement un périphérique. La première est d'utiliser la commande MAKEDEV, l'autre est de créer à la main les n½uds de périphériques.

Le script MAKEDEV est la méthode la plus simple. Il faut alors stocker le résultat dans le fichier /dev ou le répertoire habituel pour les binaires exécutables (/bin,/sbin et ainsi de suite). Je vous conseille de consulter le man MAKEDEV, notamment pour la partie concernant les options des commandes spécifiques aux périphériques, et de vérifier que les chiffres supérieurs et inférieurs sont corrects (référez-vous au prochain paragraphe sur ce sujet, notamment si la commande MAKEDEV ne fonctionne pas).

Un périphérique peut être créé en tant que bloc (comme un driver), que fifo (file-in-file-out, comme dans un console) ou bien qu'une autre lettre représentant un autre matériel. Chaque périphérique est caractérisé par un chiffre inférieur et un chiffre supérieur, un couple de coordonnées qui indique au noyau ce qu'il est et où il se situe. Ces chiffres ne sont pas arbitraires.

3.2.1. Périphériques SCSI

Si vous utilisez un noyau de la génération 2.4, il vous faudra devenir familier avec la procédure d'accès aux interfaces SCSI, et quelle que soit votre version de noyau, il vous faudra lire le man sane-scsi avant de continuer dans ce guide. Quand le système démarre, les fichiers de périphérique générique SCSI sont inspectés puis référencés dans un fichier /dev/sgN, où N est une valeur numérique à partir de zéro. Les chiffres supérieur et inférieur pour les périphériques SCSI sont 21 et 0,1,2,3... respectivement. Vous pouvez trouver quels sont les périphériques d'ores et déjà chargés en exécutant la commandels -l /dev/sg*, ce qui doit vous donner un résultat du style :

crw-------   1 root   sys     21,  0 Jan 06  2003 /dev/sg0
crw-------   1 root   sys     21,  0 Jan 06  2003 /dev/sg1
crw-------   1 root   sys     21,  0 Jan 06  2003 /dev/sg2
crw-------   1 root   sys     21,  0 Jan 06  2003 /dev/sg3
crw-------   1 root   sys     21,  0 Jan 06  2003 /dev/sg4
crw-------   1 root   sys     21,  0 Jan 06  2003 /dev/sg5

Vous aurez alors besoin de créer un fichier /dev/scanner pour établir un raccourci vers un périphérique existant (pour des raisons éclaircies plus bas). Par exemple, si votre scanner est connecté au premier bus scsi (et premier LUN et premier numéro) de votre périphérique d'accueil SCSI, vous devrez le lier au périphérique correspondant :

#  ln -s /dev/sg0 /dev/scanner

3.2.2. Créer manuellement des périphériques USB

Encore une fois, sautez ce chapitre si vous utilisez libusb. Les scanner USB ont un chiffre supérieur de 180 et un chiffre inférieur compris entre 48 et 63 (48, 49, etc., 63). Tout d'abord, consultez le fichier /dev pour voir dans quel répertoire votre distribution a stocké ses répertoires concernant les périphériques USB, certaines distributions stockant ces périphériques sous le nom scanner0, scanner1...etc... dans le répertoire /dev/usb, ou en tant que usbscanner0, usbscanner1... et ainsi de suite, dans le répertoire racine /dev/. Si vous constatez dans le répertoire /dev/ que le scanner a déjà été pris en compte, c'est que le boulot est déjà fait ! Dans le cas contraire, il faudra le créer par vous-même. En tant que superutilisateur, créez un nom pour votre scanner, comme ceci :

# mknod /dev/usbscanner0 c 180 48

...ou si votre distribution présente un sous répertoire '/dev/usb':

# mknod /dev/usb/scanner0 c 180 48

3.2.3. Créer manuellement des périphériques Port Parallèle

Suivez l'exemple ci-dessus pour créer le périphérique générique port parallèle :

crw-------    1 root     root      99,   0 Jun 24 13:47 parport0
crw-------    1 root     root      99,   1 Jun 24 13:47 parport1
crw-------    1 root     root      99,   2 Jun 24 13:47 parport2
crw-------    1 root     root      99,   3 Jun 24 13:47 parport3
crw-r-----    1 root     root       1,   4 Jan  1  1970 port

Il vous faudra sûrement créer les répertoires /dev/port et/ou /dev/parport, suivant le pilote que vous utilisez : soyez donc prêts à recommencer cette étape si votre système vous y oblige.

3.3. Groupes et Privilèges

Il peut être intéressant d'être certain de pouvoir accéder à votre périphérique avec votre compte utilisateur une fois que tous les modules ont été chargés et les noeuds de périphériques créés. Le moyen le plus sûr de faire cela est de donner accès au scanner à un groupe spécifique d'utilisateurs. Sur mon système, les membres du groupe 'vidéo' sont autorisés à utiliser le scanner et les autres périphériques vidéo. Pour cela, il faut tout d'abord modifier les droits de propriété des périphériques dans le fichier /dev de la façon suivante (en tant que root):

# chown root.video /dev/usb/scanner*

...où root.video représente les ayant droit, et regroupe les périphériques concernés. Evidemment, la commande spécifique variera en fonction de votre système et le type de périphérique (/dev/sg* pour les scanners SCSI, etc?). Il est important que vous modifiez les droits de propriété du n½ud de périphérique lui-même et non ceux du raccourcis ; les droits de propriété des raccourcis sont modifiés uniquement en changeant les périphériques ou fichiers père vers lesquels ils pointent.

Pour voir si votre compte utilisateur fait partie du groupe en question, tapez la commande grep -e video /etc/group en tant que root. Cela devrait vous quelque chose du genre :

video:x:44:

...où '44' est le numéro du groupe. Puisque rien ne suit la dernière colonne, on peut ajouter des membres du groupe, par exemple l'utilisateur 'jhs', en tapant la commande :


# adduser jhs  video

Après cela, il suffit de spécifier les droits d'accès en lecture ou écriture pour les périphériques en question, comme ceci :

# chmod g+rw /dev/usb/scanner0

...où g+rw signifie ajouter les accès en lecture (read) et en écriture (write) pour le groupe (group). Pour plus d'information, reportez-vous à la documentation pour chmod (man chmod ou info chmod).

4. SANE

La dernière chose prérequise pour l'utilisation d'un scanner est les pilotes SANE, et éventuellement une interface SANE. Pour le pilote, il s'agit de drivers et d'outils d'accès primaires qui dialoguent avec le scanner. Pour ce qui est de l'interface, il s'agit d'une application graphique pour utiliser le scanner sous X. Seul le pilote est obligatoire pour accéder au scanner, mais une interface graphique est recommandée pour manipuler les images et les visualiser dans un environnement à fenêtres sans avoir à les imprimer.

4.1. Obtenir SANE

Vous pouvez obtenir l'ensemble des pilotes SANE à l'adresse http://www.sane-project.org/source.html, où vous pourrez télécharger les binaires pour la majorité des distributions Linux, ainsi que les codes source. Si vous envisagez de compiler à partir des sources, c'est que vous savez probablement le faire, mais vous pourrez tout de même réactualiser vos connaissances en consultant le Guide de construction d'applications (Software Building HOWTO). Faites bien attention à effacer d'éventuelles anciennes versions de SANE avant d'en installer une version nouvellement compilée. Veillez aussi à obtenir le code source de la version stable la plus récente avant de compiler.

Ceux qui préfèrent installer des binaires, c'est-à-dire pour des distributions utilisant des rpm, téléchargeront les fichiers correspondant et les installeront comme d'habitude :

# rpm -iVh sane-backends-VERSION.rpm

Pour les utilisateur de Debian, il existe un paquet SANE stable (Woody), en phase de test (Sarge) et instable (Sid). Il suffit alors de faire apt-get install sane, quelle que soit la version que vous utilisez.

Ceux qui préfèrent compiler la dernière version de SANE à partir des sources pourront les obtenir à partir de ftp.mostang.com/pub/sane. Il existe une documentation plus approfondie sur la compilation des sources SANE et la façon de refaire fonctionner un scanner SCSI après un plantage, au lien Guide de Laurent-jan écrit à l'origine par Steve Sheriff (les graphiques sont aussi intéressants).

4.2. Configurer SANE

4.2.1. Les pilotes SANE

Quel que soit votre mode d'installation de SANE, SANE sera capable d'identifier les pilotes[1] nécessaires à l'utilisation de votre matériel lorsque vous invoquerez scanimage ou toute autre interface. Si aucun périphérique n'est détecté quand vous lancez la commande scanimage -L ou votre interface, allez sur Section 7, « Dépannages » pour plus d'information.

4.2.2. Réseau

Si vous souhaitez partager votre scanner sur un réseau ou avec une machine à distance, il vous faut éditer le fichier saned.conf dans le répertoire configuration de votre serveur (c'est-à-dire le PC équipé du scanner), ou bien le fichier /etc/sane.d ou encore /usr/local/etc/sane.d. Habituellement, il s'agit de remplacer une entrée de type 'scan-client.somedomain.firm' par l'adresse du client qui souhaite utiliser votre scanner. Si vous le souhaitez, vous pouvez utiliser une adresse IP.

Il vous faudra lancer le démon SANE, ainsi que inetd ou xined sur le serveur. Veuillez vous rapporter à man saned pour effectuer les bons réglages dans inetd.conf ou xined.conf. De plus, il vous faudra ajouter le port 6566 au fichier /etc/services :

sane 6566/tcp 

Sur le PC client, (celui qui n'a pas de scanner), il vous faudra éditer le fichier net.conf pour y ajouter le nom du serveur, i.e., 'scan-server.somedomain.firm.'

Pour la (les) machine(s) client(s), vérifiez bien que l'entrée « net » n'est pas commentée dans le fichier dll.conf.

4.2.3. Utiliser SANE avec un périphérique Video4linux

Quand on parle de périphériques Video4linux, il s'agit de webcams, d'appareils numériques et de périphériques de capture vidéo. SANE peut tous les faire fonctionner. Afin que SANE puisse les utiliser, recherchez le fichier v4l.conf dans le répertoire de configuration (/etc/sane.d ou /usr/local/etc/sane.d). A l'ouverture de ce fichier, vous obtiendrez quelque chose du genre :

# In order to use the v4linux backend you have to give the device
# You can enable multiple lines if
# you really have multible [sic] v4l devices.
#
/dev/bttv0
/dev/video0
/dev/video1
/dev/video2
/dev/video3

La première ligne de l'écran vous décrit tout ce que vous devez savoir : rappelez-vous en lors de la lecture du chapitre concernant les tests matériels. Quel que soit le matériel que vous utilisez, assurez-vous que votre périphérique est non commenté (i.e., le signe # est bien absent devant ou en-dessous de la ligne concernée). Il vous faudra évidemment être sous root pour ce faire. De même, assurez-vous que la ligne concernant votre périphérique dans le fichier dll.conf n'est pas commentée non plus.

5. Tester votre Scanner

Maintenant que vous avez réalisé tout ce que était demandé plus haut, vous pouvez tester votre scanner. Dans ce chapitre, nous supposons que votre scanner est allumé, et branché à votre PC sur la bonne interface. Si vous avez un scanner SCSI ou USB, lancez la commande suivante :

$ sane-find-scanner

...ce qui doit vous trouver et identifier votre scanner, parmi une liste de périphériques possibles. Si cela ne fonctionne pas, essayez scanimage --list-devices ce qui devrait vous donner plus d'informations (il se peut que vous ayez besoin de la faire deux fois). Notez que sane-find-scanner est un utilitaire séparé, qui ne vous garantit pas la compatibilité avec SANE : il s'agit juste de rechercher les périphériques qui s'identifient comme des scanners.

Ensuite, il vous faut tester la capture d'image de votre scanner. Vous pouvez soit utiliser une des interfaces listées au chapitre Section 6, « Interfaces SANE », soit lancer une ligne de commande comme ceci :

$ scanimage -d backend:/dev/scanner --format pnm > outfile.pnm

Si vous utilisez un pilote EPSON, par exemple, la commande doit avoir cette tête :

$ scanimage -d epson:/dev/scanner --format pnm > outfile.pnm

Si vous avez plus d'un scanner, et que vous vous voulez sélectionner celui que vous souhaitez utiliser, il vous faudra ajouter l'option -d. Par exemple, si vous utilisez un scanner Epson et un autre Mustek, il vous suffira d'utiliser les options "-d epson" ou "-d mustek". Le chemin complet vous sera demandé si votre pilote supporte plus d'un scanner. Bien évidemment, la commande /dev/scanner doit être adaptée au périphérique que vous utilisez (et /dev/video0 si vous utilisez un périphérique v4l). Le commutateur --format peut être au format pnm ou tiff (pnm par défaut). Pour des options un peu plus ardues mais bien utiles , allez voir sur man scanimage. Pnm signifie 'portable anymap' : c'est un format d'image courant pour les fichiers graphiques sous Linux, qui peut être converti en presque n'importe quel format d'image avec Imagemagick ou netpbm.

6. Interfaces SANE

Maintenant que votre matériel fonctionne, il vous faut installer une interface d'acquisition adaptée à l'environnement X11, ce qui vous permettra de visualiser vos acquisitions. Mon interface favorite est aussi élégante que fonctionnelle : xsane. Elle est basée sur GTK+, peut sauvegarder les images sous de multiples formats, permet d'envoyer les images acquises vers une imprimante, et sert d'interface à GIMP. Cela permet d'accéder à toutes les fonctionnalités de votre scanner.

GIMP, ou Programme GNU de Manipulation d'Images (Image Manipulation Program), est une application de manipulation d'images exceptionnelle, qui vous intéressera sûrement si vous êtes habitués à des applications de type Photoshop™. Le module xsane est disponible sous forme de package indépendant, suivant votre distribution. Après avoir lancé GIMP, cliquez sur 'Fichier,' puis 'Acquisition' et enfin 'Xsane:device dialog' pour accéder à votre scanner.

Une autre interface très recommendable est Kooka de l'environnemnt Bureau KDE. Son interface est intuitive, et s'intègre tout à fait dans les autres applications KDE. Elle permet en outre de simplifier le traitement de grandes banques d'images.

Xscanimage est une application d'acquisition d'images pour X11, plus simple mais encore performante. Suivant votre distribution, cette interface sera couplée ou non avec des pilotes SANE. Voyez man xscanimage pour plus d'informations.

Vous pourrez obtenir une liste exhaustive des interfaces SANE sur la page des interfaces SANE.

7. Dépannages

7.1. Mon scanner n'est pas reconnu par scanimage ou xsane

Si vous êtes certains d'avoir tout fait correctement jusqu'à maintenant, alors tous les modules concernés sont chargés, tous les fichiers de configuration actifs comme dit plus haut, et vous savez que votre matériel est supporté. Maintenant, vérifiez vos droits d'accès. Pour accéder à votre scanner, vous devez posséder les droits en lecture et écriture. Revenez au chapitre Section 3.3, « Groupes et Privilèges » pour plus d'informations. Si ce n'est pas un problème de droit d'accès, ouvrez le répertoire /etc/sane.d/ (ou /usr/local/etc/sane.d) et éditez le fichier dll.conf, en décommentant tous les pilotes ou autres protocoles (i.e. v4l) dont vous n'avez pas l'utilité.

Si cela ne fonctionne toujours pas, à partir du répertoire contenant les fichiers de configuration SANE, ouvrez le fichier qui porte le nom du pilote de votre scanner. Vous y trouverez en particulier deux entrées, concernant d'une part le type d'interface (scsi ou usb), et le nom de votre périphérique d'autre part. Si vous possédez un scanner USB, il vous faudra commenter la ligne SCSI (faites # devant la ligne en question) et décommenter la ligne USB. Il vous faudra peut-être changer aussi le nom du périphérique, suivant votre distribution (i.e. /dev/usbscanner0 peut devenir /dev/usb/usbscanner0). Comme vous l'aurez constaté, il existe d'autres lignes concernant les options possibles de votre scanner suivant son modèle : si votre scanner ne fonctionne pas suivant vos directives, jetez-y un oeil, ainsi qu'à la documentation accompagnant votre périphérique. Allez voir man sane-scsi ou sane-usb, ou toute autre commande concernant le fabricant de votre scanner (comme sane-plustek, sane-qcam, sane-ricoh, sane-sharp, sane-snapscan, sane-umax etc?). Pour une liste complète, essayez apropos sane. Les protocoles et fabricants disponibles peuvent dépendre de votre version de SANE.

Si tout cela ne vous permet pas de faire fonctionner votre scanner, reportez-vous au chapitre Section 7.5, « J'ai un scanner Acme Whizzbang, ou d'un autre modèle, et vous n'en avez pas parlé ». Si besoin, consultez aussi la page de dépannage de SANE, même si cette dernière est en cours de développement au moment où sont écrites ces lignes.

7.2. Je ne suis pas sûr que mon port USB fonctionne

Présumant que vous disposez des supports usbdevfs et /proc filesystem, lancez la commande suivante : cat /proc/bus/usb/devices. Cela devrait vous indiquer le statut de votre bus USB et des matériels qui y sont connectés, et vous aider à régler votre problème. Si votre scanner est bien supporté, et s'il est listé, vous saurez que le problème provient d'autre chose.

7.3. scanimage ou l'interface que j'utilise ne reconnaît pas le bon scanner

Tout d'abord, cherchez votre fichier de configuration, normalement rangé à l'endroit habituel : /etc/sane.d ou /usr/local/etc/sane.d. En général, si vous avez installé SANE à partir de votre distribution ou d'un binaire obtenu sur la page de SANE, vous le trouverez dans le répertoire /etc, alors que si vous l'avez compilé à partir des sources, vous le trouverez dans /usr/local/etc/sane.d. Copiez-le alors dans ce répertoire-là (cd). Dans le chapitre Section 2, « Prise en charge générale et type d'interface », je vous ai orientés vers la liste des matériels supportés par SANE hardware. Vous y trouverez, parmi la liste des fabricants, la liste des pilotes SANE pour tout modèle, ainsi que les supports disponibles. Dans le fichier /etc/sane.d ou /usr/local/etc/sane.d, vous trouverez des fichiers nommés à peu près de la même façon pour tous les pilotes. Sélectionnez le fichier dll.conf. Il vous donnera la liste des protocoles et des pilotes. Vérifiez que le pilotes de votre scanner n'est pas commenté. Si tel est le cas, il vous faudra, en tant que root, effacer '#.' Si votre problème n'est toujours pas résolu, revenez au paragraphe Section 7.5, « J'ai un scanner Acme Whizzbang, ou d'un autre modèle, et vous n'en avez pas parlé »

7.4. Je ne peux accéder à mon scanner port parallèle qu'en tant que root

Le driver SANE de votre scanner accède normalement directement au port parallèle (via /dev/port). Cela ne fonctionne que sous root pour des raisons de sécurité. Consultez ce Petit Guide écrit par Till Kamppeter pour des explications traitant de ce problème.

7.5. J'ai un scanner Acme Whizzbang™, ou d'un autre modèle, et vous n'en avez pas parlé

Consultez la mailing list et irc channel sur le site web de SANE. Lisez aussi la FAQ SANE qui traite des questions spécifiques à certaines marques.

8. License Libre GNU

Version 1.2, Novembre 2002



[1] NDT : dans la terminologie SANE, on parle de backend, ce qui correspont plutôt à un moteur et qui se traduit litéralement par « dorsal ». Nous avons adopté ici la traduction pilote qui semble plus appropriée.

Site hébergé sur un Cloud Public IKOULA Ikoula