Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/06/2011, à 14:54

Laserpithium

[Résolu] Permettre à l'utilisateur d'utiliser un périphérique

Bonjour,

Je suis en train de programmer un petit serveur pour de la domotique. Ce serveur émet des commandes sur un port série vers des cartes électroniques.
N'ayant pas de port série sur mon PC, j'ai acheté un convertisseur USB/Série (type Trendnet TU-S9 pour info), qui est bien géré par Linux et apparaît sous la forme de /dev/ttyUSB0.

Cependant, pour envoyer des données sur ce port série, je dois lancer le serveur en temps que root, sinon je me fais jeter (opération non permise).
Que je sois bien clair, la matériel est bien reconnu: en root tout fonctionne très bien, il s'agit ici d'un simple problème de gestion des droits.

J'ai donc décidé de créer une règle udev pour autoriser les utilisateurs à utiliser ce périphérique:
Lorsque l'adaptateur est connecté, on obtient:

$ lsusb
Bus 003 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

J'ai donc créer le fichier:

$ cat /etc/udev/udev.d/27-USBConverter.rules
#Trendnet TU-S9 USB2Serial converter 
SYSFS{idVendor}=="067b", SYSFS{idProduct}=="2303", MODE="0660", GROUP="microchip"

Bien entendu, mon utilisateur courant appartient au groupe "microchip", et j'ai redémarré le PC suite à cette modification.
Malheureusement, cela ne fonctionne pas (je n'ai pas accès au /dev/ttyUSB à moins d'être root).

Quelqu'un pourrait-il m'indiquer où est l'erreur?

Dernière modification par Laserpithium (Le 26/06/2011, à 17:55)


Portable Toshiba P300-220, proc P8300 Core2Duo 4Go RAM CG ATI HD4650 Mobility
Archlinux 64bits
GE>$ d s++:-- a- C++ L+++ P W++(+++) w--@ PE+ Y+ !R tv-() b+++ e+++ r-->r y>y+

Hors ligne

#2 Le 22/06/2011, à 15:25

bishop.sad.clown

Re : [Résolu] Permettre à l'utilisateur d'utiliser un périphérique

dans Rédigez vos règles udev - Doc. Ubuntu à aucun moment il n'apparait de SYSFS{qlq chose} mais plutôt des ATTR{qlq chose}

Pt-être une piste = /

EDIT : Pas taper si j'ai dit un clownerie ! cf la dernière ligne de ma signature... = )


= þ

Dernière modification par bishop.sad.clown (Le 22/06/2011, à 15:26)


@++ , Rob'
→ Trusty x64
Je n'ai pas toujours les réponses mais je les cherche en même temps que vous... =· þ

Hors ligne

#3 Le 26/06/2011, à 17:55

Laserpithium

Re : [Résolu] Permettre à l'utilisateur d'utiliser un périphérique

Bon, j'ai la réponse, je la note ici, cela pourrait toujours servir un jour à quelqu'un...

En fait, un adaptateur USB/Série est reconnu par udev comme un "objet" branché sur le port USB, mais traité ensuite (et en particulier pour tout ce qui est droits) comme un port série (et pas comme un "objet" USB).
Or, il se trouve que pour des raisons datant de la dernière glaciation, les ports séries appartiennent sous GNU/Linux au groupe uucp, pour Unix to Unix Copy Protocol, une vieille relique qui ne sert plus aujourd'hui (sauf cas particuliers bien sûr).
Les règles udev ne semblent pas fonctionner (du moins j'ai tout essayé sans succès), l'appartenance de /dev/ttyUSB0 au groupe uucp semble prioritaire sur les règles udev utilisateurs.

Donc pour résoudre ce problème, plusieurs options:
1) Soit exécuter le code utilisant ce port en root: le plus simple mais le moins recommandé évidemment.
2) Soit ajouter l'utilisateur courant au groupe uucp: après avoir fait quelques recherches sur Google, il semble que ce n'est pas recommandé.
3) Soit changer le propriétaire du /dev/ttyUSB0 de root à votre utilisateur courant (mais alors ne fonctionne que si un seul utilisateur doit accéder au port)
4) Soit changer les droits de /dev/ttyUSB0 à 666 par exemple.


Portable Toshiba P300-220, proc P8300 Core2Duo 4Go RAM CG ATI HD4650 Mobility
Archlinux 64bits
GE>$ d s++:-- a- C++ L+++ P W++(+++) w--@ PE+ Y+ !R tv-() b+++ e+++ r-->r y>y+

Hors ligne