Règle Udev en 3 minutes
Une règle Udev permet au système Linux de créer automatiquement un lien symbolique pointant vers un périphérique défini dans la règle. Cela sert dans le cas de l’USB à avoir une adresse statique pointant toujours vers le même périphérique.
Principe
La règle Udev est un filtre qui s’applique dès la détection d’un périphérique USB.
Procédure
Lancer un terminal avec les messages du systèmes en temps réel :
dmesg -w
Retenir l’endroit où est rendu le système (tapper plusieurs fois sur Entrée pour générer un vide dans l’affichage des messages).
Brancher le périphérique et attendre la fin de la détection de ce dernier par le système.
Couper dmesg (avec Ctrl + c), afin de figer l’affichage des infos nécessaire à la rédaction de la règle.
Editer en mode sudo, un fichier nommé 10-maRegle.rules, dans le dossier /etc/udev/rules.d.
En fonction de l’utilisation, choisir le type de squelette suivant :
# Camera:
KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="", ATTRS{idProduct}=="", ATTRS{serial}=="", SYMLINK+="webcam", MODE="0666", GROUP="dialout"
# Other:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="", ATTRS{idProduct}=="", ATTRS{serial}=="", SYMLINK+="other", MODE="0666", GROUP="dialout"
Remplir les champs vides avec le résultat de dmesg (en utilisant les premières valeurs lues par le système, dans l’ordre chronologique).
Enregistrer le fichier, puis taper la commande suivante afin de recharger les règles udev:
udevadm control –reload
Débrancher puis re-brancher le périphérique USB.
Vérification
Vérifier que la règle est bien effective avec :
ls -lt /dev head
Astuce
Pour un périphérique présent en un seul exemplaire sur le système (cas d’une application où le système n’a besoin que d’une seulle centrale inertielle par exemple), l’astuce est de créer des règles très générales afin que si l’on remplace le composant par un autre, identique (n’ayant donc pas le même numéro de série), la règle puisse s’appliquer. Exemple :
# General:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="", ATTRS{idProduct}=="", SYMLINK+="general", MODE="0666", GROUP="dialout"