le hotplug de périphériques usb
le problème
comment monter automatiquement un périphérique usb lors de son branchement ?
Manages hot-pluggable hardware under Linux 2.4.
(non testé, mais recommandé par plusieurs utilisateurs sur les news)
ma solution
Cette solution est adaptée aux noyaux linux 2.4.x. Pour la série 2.6, il est plus simple d'utiliser udev
il y a plusieurs étapes
identifier le périphérique
- lancer dans une fenêtre la commande tail -f /var/log/messages | grep usb
- brancher votre périphérique usb
- cherchez dans la fenêtre des log une ligne du style :
Mar 8 17:15:04 lxcti1 kernel: usb.c: USB device 2 (vend/prod 0xd7d/0x280) is not claimed by any active driver.
- votre peripherique est identifié par 2 nombres hexadécimaux : ici 0xd7d pour le "idVendor" et 0x280 pour le "idProduct"
installer hotplug
il faut installer le package hotplug
et s'assurer que le "service" hotplud est lance au démarrage de la machine
configurer le hotplug
configuration
- il faut modifier le fichier /etc/hotplug/usb.usermap, pour lui rajouter le périphérique utilisé, avec une ligne du style :
usb-storage-custom 0x0000 0x0d7d 0x0280 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
- le premier champ est le nom d'un script qui doit se trouver dans le répertoire /etc/hotplug/usb (je vais y venir)
- le troisième champ est le "idVendor"
- le quatrième champ est le "idProduct"
script
deux solutions :
pour les codeurs
le début du fichier /etc/hotplug/usb.agent est une bonne documentation si l'on veut coder soi-même.
pour les autres
Daniel Déchelotte a écrit un script que j'ai modifie, avec une contribution de Dominique Launay : usb-storage-custom,
a placer dans le répertoire /etc/hotplug/usb.
pour cela, il faut ajouter un nouveau fichier de configuration dans le même répertoire.
ce fichier permet d'indiquer quel point de montage utiliser (il est auto-documenté).
pour vérifier le bon fonctionnement, regarder le fichier /var/log/messages, il doit contenir des lignes comme :
Mar 12 08:48:22 lxcti1 usb-storage-custom[2808]: PRODUCT=d7d/280/100
Mar 12 08:48:22 lxcti1 usb-storage-custom[2815]: found periph clef vendID=d7d prodID=280
Mar 12 08:48:22 lxcti1 usb-storage-custom[2818]: /proc/scsi/usb-storage-0 : GUID: 0d7d028000004f341903087b
Mar 12 08:48:22 lxcti1 usb-storage-custom[2823]: found device 0 /dev/sda
Mar 12 08:48:22 lxcti1 usb-storage-custom[2824]: found conf : clef /mnt/usbdisk2 _DEV_2
Mar 12 08:48:22 lxcti1 usb-storage-custom[2829]: mount /dev/sda2 /mnt/usbdisk2 ; retour 0
remarques
ce script est encore en version beta, même s'il marche déjà sur plusieurs de mes machines
le problème majeur est celui de la correspondance usb / périphérique scsi.
les testeurs et les contributeurs sont les bienvenus.
version 0.6 du 29/11/2004
Eric Gerbier
documentation sous licence GNU Free Documentation License