« USB-TMC en non root » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
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
<pre>
</syntaxhighlight>Avec le contenu :
sudo nano /etc/udev/rules.d/99-usbtmc.rules
</pre>
 
Contenu :


<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.