Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Sorties de root > Udev à la rescousse !

Udev à la rescousse !

Vos périphériques USB sous contrôle

vendredi 13 juillet 2012, par Laurent Ba.

1- Executer un script

Voici un petit "Tip" sur Udev qui m’a bien rendu service,
pour avoir une confirmation visuel que mes 8 périphériques soient
bien chargés par le pilote sur la Raspberry Pi et éviter ainsi, que tout bugue par la suite.

Udev est une solution simple et efficace en espace utilisateur. Il suffit de créer une petite règle qui exécute un programme quand un périphérique est branché ou débranché.

Exemple

En premier pour écrire un règle qui concerne le périphérique "/dev/ttyACMO" il va nous falloir des attributs

$ udevadm info -an /dev/ttyACM0
listing...
looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/tty/ttyACM0':
    KERNEL=="ttyACM0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0':
    KERNELS=="1-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="cdc_acm"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{bInterfaceClass}=="02"
    ATTRS{bInterfaceSubClass}=="02"
    ATTRS{bInterfaceProtocol}=="01"
listing...

Par défaut mon système utilise déjà 2 règles

$ ls /etc/udev/rules.d/
10-vchiq.rules 91-local.rules

Je vais en créer une troisième :

$ touch /etc/udev/rules.d/20-my_cdc_acm.rules

Et l’éditer comme ceci :

#/etc/udev/rules.d/20-my_cdc_acm.rules
ACTION=="add", SUBSYSTEMS=="usb", DRIVERS=="cdc_acm", RUN+="/usr/bin/driver_cdc_acm 2&>>/dev/null"
ACTION=="remove", SUBSYSTEMS=="usb", RUN+="/usr/bin/driver_cdc_acm 2&>>/dev/null"

J’ai pas besoin des logs, mais je trouve que c’est mieux pour l’exemple :)
vous remarquerez que je ne me suis pas embêté pour les attributs non plus et que j’ai placé mon script dans /usr/bin/.

Note : il est aussi possible de lancer un script avant le chargement du périphérique.

2- Ajouter des liens symboliques

Un autre "tip" sympa,
pour trouver son Arduino plus facilement, quand on en a marre de passer son temps à chercher son numéro avant de charger le code.
C’est simple il suffit de lui donner un joli nom.

Voici un exemple de règle pompé sans vergogne sur le site d’Arduino :

SUBSYSTEMS=="usb", ATTRS{product}=="FT232R USB UART", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="arduino arduino_$attr{serial}"
SUBSYSTEMS=="usb", ATTRS{product}=="ARDUINO NANO",    ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="arduino arduino_nano_$attr{serial}"

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.