Qui n'a jamais voulu utiliser son scanner USB ou récupérer ces photos sur son appareil photo numérique depuis son compte utilisateur sous Linux?
Une solution simple existe en utilisant hotplug. Hotplug est un utilitaire en mode utilisateur qui permet de détecter les périphériques USB lorsqu'ils sont branchés et d'éventuellement charger des modules pour les faire fonctionner.
Lorsqu'un périphérique USB est branché, Hotplug parcourt les fichiers
ayant l'extension .usermap du répertoire /etc/hotplug/usb pour
chercher la signature du prériphérique USB. Si la signature du périphérique
est tourvée, le script spécifié dans le fichier .usermap est appelé.
Le fichier .usermap est de la forme suivante :
script_a_appele match_flags Vendor ProdID bcdDevice_lo bcdDevice_hi bDeviceClass
bDeviceSubClass bDeviceProtocol bInterface Class
bInterfaceSubClass bInterfaceProtocol driver_info
Les différentes informations sont disponibles dans la section du fichier
/proc/bus/usb/devices correspondant au périphérique.
Je vais présenter deux exemples de configuration : la configuration d'un scanner Epson 1260 et la configuration d'un appareil photo numérique Olympus C-2100UZ. Pour commencer, il faut savoir que chaque périphérique USB a sa propre signature, constituée d'un identifiant de vendeur (Vendor) et d'un identifiant de produit (ProdID). Ces identifiants peuvent être trouvés dans le fichier /proc/bus/usb/devices lorsque le périphérique est branché.
Le scanner Epson 1260 a pour identifiants Vendor=04b8 et
ProdID=011d. Le fichier /proc/bus/usb/devices contient donc la
séquence suivante :
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=ff MxPS= 8 #Cfgs= 1
P: Vendor=04b8 ProdID=011d Rev= 1.00
S: Manufacturer=EPSON
S: Product=EPSON Scanner
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=16ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Sous Debian, sane (logiciel permettant d'utiliser les scanners sous
Linux) installe les fichiers libsane.usermap et libusbscanner. Le
fichier libsane.usermap doit être de la forme suivante :
libusbscanner 0x0003 0xVendor 0xProdID 0x0000 0x0000 0x00 0x00 0x00 0x00
0x00 0x00 0x00000000
Le fichier doit être de la forme suivante (fichier fournit par le paquet
sane de la distribution Debian) :
#!/bin/sh
# This file was installed by the libsane Debian package.
#
# This script changes the permissions and ownership of a USB device under
# /proc/bus/usb to grant access to this device to users in the scanner
group.
#
# Ownership is set to root.scanner, permissions are set to 0660.
#
# Arguments :
# -----------
# ACTION=[add|remove]
# DEVICE=/proc/bus/usb/BBB/DDD
# TYPE=usb
if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
chown root:scanner "$DEVICE"
chmod 0660 "$DEVICE"
fi
Ce script permet de modifier les droits d'accès au périphérique USB via
l'interface /proc. Ainsi, tous les utilisateurs du groupe
scanner pourront utiliser le scanner.
La première chose à faire est de récupérer le signature complète de
l'appareil photo grace au fichier /proc/bus/usb/devices.
Cela donne :
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=ff Prot=ff MxPS= 8 #Cfgs= 1
P: Vendor=07b4 ProdID=0100 Rev= 1.00
S: Manufacturer=OLYMPU
S: Product=C-2100 Ultra Zoom
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Il est ensuite nécessaire de créer un fichier .usermap dans
le répertoire /etc/hotplug/usb pour la détection de l'appareil photo.
J'ai donc créer un fichier olympus.usermap dont le contenu est :
libusbolympus 0x0003 0x07b4 0x0100 0x0000 0x0000 0x00 0xff 0x00 0x00 0xff 0x00
0x00000000
Pour finir, j'ai créé le script libusbolympus dont le contenu est
:
if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
chown root:camera "$DEVICE"
chmod 0660 "$DEVICE"
fi
Ainsi, l'appareil photo peut être utilisé (grace à gphoto2 par exemple) par
tous les utilisateurs du groupe camera.
Dernière modification : le 04/04/2004.