Le but de ce projet est d'implémenter un backend SANE pour les scanners à plat basés sur le chipset RTS88xx. Le présent document décrit et explique la procédure à suivre pour pour installer et configurer une version fonctionnelle du paquet. Bien que le but principal ait été d'écrire un backend SANE, pour soulager l'essai et l'expérimentation, un outil d'essai a été également développé, il partage la majeure partie du code avec le backend SANE, mais fournit une interface plus simple et (si tout va bien) facilite la compilation et la configuration, si bien que les erreurs et les bogues sont plus faciles à dépister. Ce projet est encore en phase alpha, il est par conséquent recommandé d'utiliser cet outil de test avant d'essayer de compiler le backend SANE.
Au moment où j'écris ces lignes, le paquet utilise deux manières distinctes pour accéder aux scanners USB:
Le standard sur les systèmes GNU/Linux est de construire le paquet avec les deux méthodes (si possible) et de laisser l'utilisateur choisir lequel utiliser au moment de l'éxécution. Alternativement, l'utilisateur peut vouloir construire avec juste une des deux méthodes, ce qui est parfaitement possible (voir détails plus bas).
Dans tous les exemples suivants, nous utiliserons cette version du paquet: hp4470c-0.14b.tar.gz.
Veuillez noter que cet outil est fourni sans aucune garantie, utilisez-le à vos risques et périls.
Les points suivants devrait être vérifiés avant de tenter d'installer le paquet:
Il vous faudra nécessairement un noyau Linux de la série 2.4 (au moins 2.4.13 pour utiliser la méthode "noyau") avec les options suivantes compilés en tant que modules ou inclus dans le noyau:
Fonctionnalités |
Module |
Notes |
---|---|---|
Support de l'USB - CONFIG_USB |
usbcore.o |
Requis |
Système de fichier USB - CONFIG_USB_DEVICEFS |
n/a |
Requis pour employer la méthode "libusb", facultative autrement |
Support de UHCI (Intel PIIX4, VIA, ...) - CONFIG_USB_UHCI |
usb-uhci.o |
Requis sur les systèmes avec un contrôleur USB UHCI |
Support du Driver Alternatif UHCI (JE) - CONFIG_USB_UHCI_ALT |
uhci.o |
Un driver alternatif pour les contrôleurs USB UHCI (compilez celui-ci ou le précédent, un seul est nécessaire) |
Support de OHCI (Compaq, iMacs, ...) - CONFIG_USB_OHCI |
usb-ohci.o |
Requis sur les systèmes avec un contrôleur USB OHCI |
Support des Scanners USB - CONFIG_USB_SCANNER |
scanner.o |
Requis pour employer la méthode "noyau", non recommandé pour employer la méthode "libusb" |
Pour compiler proprement SANE avec le backend sane_hp_rts88xx, vous devriez enlever toutes les versions de SANE précédemment installés ainsi que tous les paquets relatifs à SANE (merci à Harman Nagra d'avoir signalé ceci).
Depuis sa version 2.3.46, le noyau Linux inclut un système dynamique de fichiers de périphériques appelé "devfs" (device file system). Avec devfs, il n'y a pas besoin de créer de fichiers de périphériques car ils sont automatiquement créés pour vous. Pour les Scanners USB, le périphérique est créé dans le dossier /dev/usb/scannerX où X peut varier de 0 à 15 selon le nombre de scanners connectés au système. Pour voir si vous avez devfs, vérifiez si le fichier .devfsd existe dans le dossier /dev en utilisant cette commande :
bash# ls /dev/.devfsd
Si le fichier .devfsd est listé, alors vous avez devfs et vous pouvez continuer à lire la suite, sinon passez à la section "Sans devfs". Si vous voulez conserver le fichier /dev/usbscanner0 afin de maintenir la compatibilité avec certaines applications, ajoutez les lignes suivantes au fichier /dev/devfsd.conf:
REGISTER ^usb/scanner0$ CFUNCTION GLOBAL symlink usb/scanner0 usbscanner0
UNREGISTER ^usb/scanner0$ CFUNCTION GLOBAL unlink usbscanner0
Si vous avez l'intention d'employer plusieurs scanners simultanément (16 maximum), ajoutez un fichier de périphérique pour chaque scanner, comme ceci:
bash# mknod /dev/usbscanner[X] c 180 [Y]
avec [X] un nombre compris entre 0 et 15, et [Y] = [X] + 48.
Ainsi, pour ajouter 2 scanners USB, utilisez la commande :
bash# mknod /dev/usbscanner0 c 180 48
bash# mknod /dev/usbscanner1 c 180 49
Si vous prévoyez d'utiliser un seul scanner, il est préférable d'utiliser:
bash# mknod /dev/usbscanner0 c 180 48
bash# ln -s /dev/usbscanner0 /dev/usbscanner
Donnez les bonnes permissions aux fichiers /dev/usbscanner[0-15] (n'oubliez pas les permissions de groupe et du monde entier). Les droits en lecture et écriture sont nécessaires pour que cela fonctionne correctement. Par exemple:
bash# chmod 666 /dev/usbscanner0
Bien que le processus de compilation et d'installation de libUSB est hors de portée de ce document, nous vous avertissons sur les points suivants:
Sous GNU/Linux, libUSB nécessite que le système de fichiers USB soit monté au bon endroit (/proc/bus/usb). Pour le monter, tapez ceci:
bash# mount -t usbdevfs usbdevfs /proc/bus/usb/
ou ajoutez la ligne suivante à votre /etc/fstab :
usbdevfs /proc/bus/usb usbdevfs defaults 0 0
Avant d'utiliser libUSB sous GNU/Linux, vous devez décharger le module scanner.o (si il n'est pas compilé comme module, mais intégré au noyau, libUSB ne pourra jamais revendiquer l'accès au scanner auprès de l'interface USB). Pour décharger le module scanner.o, faites la chose suivante:
bash# modprobe scanner vendor=0x3f0 product=0x805 (hp4470c=0x805; hp4400c=0x705; hp3500c=0x2205; hp3570c=0x2005; hp3530c=0x2005)
Sous OpenBSD/FreeBSD/NetBSD, libUSB ne fonctionnera pas correctement si votre noyau est compilé avec le support de uscanner, vous devrez donc recompiler votre noyau en enlevant le support de uscanner.
Extrayez les sources de l'archive comme ceci:
bash# cd /usr/src
bash# tar xvzf /path/to/sources/hp4470c-0.1x.tar.gz
bash# cd hp4470c-0.1x
Pour compiler le paquet avec les deux méthodes d'accès à l'USB, faites juste:
bash# make
Pour voir ce que vous pouvez faire avec l'outil de test:
bash# ./hp4470c -h
Décompresser le code source des backends SANE dans un dossier, et utiliser le script patch-sane.sh fourni avec le paquet (on suppose ici que les sources de SANE sont décompressés dans le dossier parent de l'outil de test):
bash# ./patch-sane.sh ../sane-backend-x.x.x
Si tout va bien, compilez le backend SANE avec les habituels:
bash# ./configure
bash# make
bash# make install
Seulement pour Linux à ce jour?. Je n'ai eu aucun retour.
Si quelquechose ne va pas, nous recommandons de recharger le module du scanner et peut-être aussi le module du contrôleur USB (par exemple, 'modprobe -r scanner' 'modprobe -r uhci' 'modprobe uhci' modprobe 'scanner')
Pour signaler des bogues et faire des suggestions, envoyez-moi un courriel (en anglais). Pour rendre les choses plus faciles, fournissez-nous au moins les informations suivantes:
Version du noyau
Version et révision du paquet
Méthode USB que vous utilisez
Version de libUSB éventuelle