Le scanner m'a été prèté, c'est un snapscan, type 1212u, dont les références selon le port usb sont les suivantes:
Vendor= 06bd, ProdID= 2061, Rev=1.00
Le portable est un Toshiba Satellite 2770, avec un système linux Debian Potato upgradé en woody à la main,
le noyau ayant été recompilé plusieur fois (actuellement: 2.4.13).
Je suis parti d'un noyau n'ayant pas encore la gestion des ports usb. Il faudra donc recompiler!
Pour commencer, il faut vérifier la composition du gestionnaire du port usb: soit OHCI soit UHCI. Pour savoir
cela, utiliser lspci:
Nous savons donc qu'il faut utiliser le module UHCI lors de la compilation du noyau, et ne pas oublier le module scanner.
Pour tout cela, utilisons les outils debians!
$ /sbin/lspci -v | grep -A2 USB
00:05.2 USB Controller: Intel Corp. 82371AB PIIX4 USB (rev 01) (prog-if 00 [UHCI])
Flags: bus master, medium devsel, latency 64, IRQ 11
I/O ports at ff80 [size=32]
Vous avez redemarré? ça fonctionne? ok, alors on continue.
# cd /usr/src/linux
# make xconfig
# make-kpkg clean
# make-kpkg --revision=voyager.0.3 kernel_image
# make-kpkg --revision=voyager.0.3 modules_image
# dpkg -i kernel-image-2.4.13_voyager.0.3_i386.deb
# init 0
Il faut monter un 'système de fichier usb', mais pour cela, il faut déjà renseigner le fichier /etc/fstab.
Il suffit de l'éditer (avec vi!), et de mettre comme dernière ligne:
puis on peut essayer de monter ça:
none /proc/bus/usb usbdevfs auto 0 0
S'il n'y a pas de message d'erreur, c'est que cela fonctionne.
# mount /proc/bus/usb/
A présent, il faut créer les périphériques pour le scanner usb:
A noter, ici, le (futur) problème de l'acces au scanner. En effet, vous n'aurez pas le droit d'écrire (en fait, d'envoyer des données)
vers le scanner. Il faut donc, soit créer un utilisateur et un group spécial pour le scanner, soit changer les autorisations. Pour
plus de rapidité (je sais, c'est pas bô), j'ai choisi cette méthode:
# mknod /dev/usbscanner0 c 180 48
# ln -s /dev/usbscanner0 /dev/usbscanner
Pas de soucis pour le lien, il n'y a pas de restriction dessus, mais uniquement sur la cible.
# chmod g+rw /dev/usbscanner0
Tout ceci étant fait, passons au test du bus usb, et branchons le scanner
Si tout se passe comme prévu, voici ce que vous devez faire pour 'voir' le périphérique (nous nous limitons au scanner):
Comme d'habitude, vous avez aussi des informations dans /var/log/syslog:
# cat /proc/bus/usb/devices | grep -A4 Vendor
P: Vendor=06bd ProdID=2061 Rev= 1.00
S: Manufacturer=AGFA
S: Product=SNAPSCAN
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbscanner
Si vous voyez votre scanner comme dans les lignes ci dessus, c'est déjà presque gagné.
# tail -13 /var/log/syslog
Mar 8 16:13:14 localhost kernel: uhci.c: root-hub INT complete: port1: 193 port2: 80 data: 2
Mar 8 16:13:14 localhost kernel: hub.c: port 1 connection change
Mar 8 16:13:14 localhost kernel: hub.c: port 1, portstatus 301, change 1, 1.5 Mb/s
Mar 8 16:13:15 localhost kernel: hub.c: port 1, portstatus 103, change 0, 12 Mb/s
Mar 8 16:13:15 localhost kernel: hub.c: USB new device connect on bus1/1, assigned device number 2
Mar 8 16:13:15 localhost kernel: usb.c: kmalloc IF c3ab3500, numif 1
Mar 8 16:13:15 localhost kernel: usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0
Mar 8 16:13:15 localhost kernel: usb.c: USB device number 2 default language ID 0x409
Mar 8 16:13:15 localhost kernel: Manufacturer: AGFA
Mar 8 16:13:15 localhost kernel: Product: SNAPSCAN
Mar 8 16:13:15 localhost kernel: usb.c: usbscanner driver claimed interface c3ab3500
Mar 8 16:13:15 localhost kernel: usb.c: kusbd: /sbin/hotplug add 2
Mar 8 16:13:15 localhost kernel: usb.c: kusbd policy returned 0xfffffffe
Pour utiliser un scanner, il vous faut deux parties:
# cd /usr/local/src/
# tar xzvf /home/admin/tmp/sane-frontends-1.0.7.tar.gz
# tar xzvf /home/admin/tmp/sane-backends-1.0.7.tar.gz
# tar xzvf /home/admin/tmp/xsane-0.84.tar.gz
# cd sane-backends-1.0.7/
# ./configure
# make
# make install
# cd ..
# cd sane-frontends-1.0.7/
# ./configure
# make
# make install
# cd ..
# cd xsane-0.84/
# ./configure
# make
# make install
S'il n'y a pas d'erreur, nous pouvons configurer la librairie sane, dont il faut lui indiquer quel scanner rechercher et ainsi que le périphérique
sur lequel il est connecté.
# agfafirm /usr/local/lib/snapscan_1212U_2.bin /dev/usbscanner
Aprés le chargement, le scanner effectue une initialisation. La lampe du scanner doit se déplacer légèrement et la LED verte doit clignoter pendant 5 à
10 secondes.
$ xsane
Et youpi, ça fonctionne!Pour améliorer le tout, on peut demander à votre linux, au démarrage, de charger le micro code:
Sur ma debian, j'ai installé le paquet usbmgr (
by Shuu Yamaguchi: shuu@wondernetworkresources.com
Ce paquet permet de charger un peripherique à la volée. Il necessite un fichier de configuration, ou il faut spécifier les périphériques que l'on va
connecter (mais il y a déjà une liste assez complète).
Grace à ça, on va lui dire de lancer le script agfafirm à chaque connection du scanner.
La ligne qui gère le snapscan est celle ci:
le mot clef script est suivi du nom du script à exécuter lors du branchement/debranchement du scanner. Vous trouverez mon script
ici
L'avantage de l'usbmgr, c'est que l'on peut avoir plusieurs scanner usb, puisque nous pouvons faire un script pour chacun d'eux.
Par exemple, un script 'firmware_snapscan_1212u' et un script 'firmware_snapscan_touch', et configurer l'execution d'un script en fonction
duscanner detecté (c'est ce que j'ai fait, ayant la possibilité de connecter l'un de ceux là).
# SnapScan 1212U [Agfa]
vendor 0x06bd product 0x0001 script scanner module scanner
# SnapScan 1212U [Agfa]
vendor 0x06bd product 0x2061 script scanner module scanner
Tout ça, c'est bien beau, mais utiliser xsane seul, ce n'est pas toujours très pratique. Il faut lancer xsane, faire le scan, le sauver, et lancer gimp
derrière pour pouvoir retoucher le résultat.
Et bien, nous allons faire en sorte d'utiliser directement xsane dans gimp. Pour cela, il faut simplement faire un lien!
Selon que vous voulez permettre l'utilisation du scanner, à tous les utilisateurs ou juste à vous même, le lien ne sera pas au même endroit:
$ cd ~/.gimp-1.2/plug-ins/
$ ln -s /usr/local/bin/xsane ./xsane
# cd /usr/lib/gimp/1.2/plug-ins/
#$ ln -s /usr/local/bin/xsane ./xsane
Mis à part le noyau à recompiler, ce n'était pas si difficile, et quel plaisir avec usbmgr de changer de scanner en fonction de l'endroit ou l'on est!