« USB-TMC en non root » : différence entre les versions
Page créée avec « = Passer un périphérique USBTMC en accès non-root sous Linux = Cette page décrit la procédure permettant d'accéder à un instrument USBTMC (USB Test & Measurement Class) sans utiliser le compte root. Cas rencontré avec un multimètre '''Multicomp Pro MP730027''' (OWON XDM3041 rebrandé) apparaissant sous Linux comme : <pre> /dev/usbtmc0 </pre> == Symptôme == Le périphérique est créé avec les droits suivants : <pre> $ ls -l /dev/usbtmc0 crw-----... » |
|||
| Ligne 97 : | Ligne 97 : | ||
== Création de la règle udev == | == Création de la règle udev == | ||
Créer le fichier : | Créer le fichier :<syntaxhighlight lang="bash"> | ||
sudo vi /etc/udev/rules.d/99-usbtmc.rules | |||
< | </syntaxhighlight>Avec le contenu : | ||
sudo | |||
</ | |||
<pre> | <pre> | ||
SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", GROUP="usbtmc", MODE="0660" | SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", GROUP="usbtmc", MODE="0660" | ||
</pre> | </pre>et<syntaxhighlight lang="bash"> | ||
sudo vi /etc/udev/rules.d/99-owon-usb.rules | |||
</syntaxhighlight>avec<syntaxhighlight lang="text"> | |||
SUBSYSTEM=="usb", ATTR{idVendor}=="5345", ATTR{idProduct}=="1234", GROUP="usbtmc", MODE="0660" | |||
</syntaxhighlight> | |||
== Rechargement des règles == | == Rechargement des règles == | ||
| Ligne 117 : | Ligne 117 : | ||
</pre> | </pre> | ||
Débrancher puis rebrancher l'instrument USB. | '''Débrancher puis rebrancher l'instrument USB.''' | ||
Cette étape est importante : les nouvelles permissions sont appliquées lors de la création du périphérique. | Cette étape est importante : les nouvelles permissions sont appliquées lors de la création du périphérique. | ||
Version du 25 juillet 2026 à 21:42
Passer un périphérique USBTMC en accès non-root sous Linux
Cette page décrit la procédure permettant d'accéder à un instrument USBTMC (USB Test & Measurement Class) sans utiliser le compte root.
Cas rencontré avec un multimètre Multicomp Pro MP730027 (OWON XDM3041 rebrandé) apparaissant sous Linux comme :
/dev/usbtmc0
Symptôme
Le périphérique est créé avec les droits suivants :
$ ls -l /dev/usbtmc0 crw------- 1 root root 180, 176 Jul 25 23:03 /dev/usbtmc0
Seul l'utilisateur root peut alors accéder au périphérique.
Les programmes Python utilisant PyVISA ou l'accès direct à /dev/usbtmc0 doivent être exécutés avec :
sudo python3 programme.py
Ce n'est pas souhaitable.
Création d'un groupe dédié
Créer un groupe :
sudo groupadd usbtmc
Ajouter l'utilisateur au groupe :
sudo usermod -aG usbtmc admin
Remplacer admin par votre nom d'utilisateur si nécessaire.
Vérifier :
id
Le groupe doit apparaître dans la liste :
groups=1000(admin),...,1002(usbtmc)
Une reconnexion est généralement nécessaire pour prendre en compte l'appartenance au nouveau groupe.
Première tentative
On pourrait être tenté d'utiliser :
SUBSYSTEM=="usbtmc", GROUP="usbtmc", MODE="0660"
Cependant cette règle ne fonctionne pas sur certaines distributions Linux récentes.
Diagnostic avec udev
Identifier le périphérique :
udevadm info -q path -n /dev/usbtmc0
Afficher les attributs :
udevadm info -a -n /dev/usbtmc0
Dans notre cas :
looking at device ...
KERNEL=="usbtmc0"
SUBSYSTEM=="usbmisc"
Le périphérique n'appartient donc pas au sous-système usbtmc mais au sous-système usbmisc.
C'est la raison pour laquelle la première règle ne fonctionnait pas.
Création de la règle udev
Créer le fichier :
sudo vi /etc/udev/rules.d/99-usbtmc.rules
Avec le contenu :
SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", GROUP="usbtmc", MODE="0660"
et
sudo vi /etc/udev/rules.d/99-owon-usb.rules
avec
SUBSYSTEM=="usb", ATTR{idVendor}=="5345", ATTR{idProduct}=="1234", GROUP="usbtmc", MODE="0660"
Rechargement des règles
Recharger la configuration :
sudo udevadm control --reload-rules
Débrancher puis rebrancher l'instrument USB.
Cette étape est importante : les nouvelles permissions sont appliquées lors de la création du périphérique.
Vérification
Après reconnexion du multimètre :
ls -l /dev/usbtmc0
Le résultat doit être similaire à :
crw-rw---- 1 root usbtmc 180, 176 Jul 25 23:15 /dev/usbtmc0
Le groupe est maintenant :
usbtmc
et les membres de ce groupe peuvent accéder au périphérique sans privilège root.
Test en Python
Exemple minimal :
with open("/dev/usbtmc0", "rb") as dmm:
print("Accès OK")
Sans utiliser :
sudo python3 programme.py
Vérification de l'accès avec PyVISA
Installation :
pip install pyvisa pyvisa-py
Détection des instruments :
import pyvisa rm = pyvisa.ResourceManager() print(rm.list_resources())
Le multimètre doit maintenant être accessible sans exécuter Python en root.
Résumé
Créer le groupe :
sudo groupadd usbtmc sudo usermod -aG usbtmc admin
Créer :
/etc/udev/rules.d/99-usbtmc.rules
avec :
SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", GROUP="usbtmc", MODE="0660"
Puis :
sudo udevadm control --reload-rules
Débrancher/rebrancher l'instrument.
Résultat :
/dev/usbtmc0
est accessible aux utilisateurs du groupe usbtmc sans avoir besoin du compte root.