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"
Written on September 19, 2018