IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Renommer les ports Serials


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut Renommer les ports Serials
    Bonjour

    J'aurais besoin de conseils concernant l'utilisation de ports serial sous Linux. Actuellement, je travaille sur un serveur qui envoie des informations en direction de ports serial/com (l'USB quoi) , passant par une base de données afin de savoir vers quel port envoyer telle ou telle information, et savoir qui communique avec le serveur.

    Malheureusement, au redémarrage du serveur, les ports ne sont plus dans le même ordre (usb0 devient l'usb1 et l'usb1 l'usb0 par exemple), invalidant les redirections des valeurs reçues/envoyées. J'ai pensé qu'il y avait un ordre de repositionnement des ports, mais ça ne semble pas être le cas, les échanges de ports semblant anarchiques.

    Ma question est donc la suivante: y a t-il moyen de renommer les ports de mon serveur de manière à ce que, par exemple, un port réponde toujours au nom "usbX", qu'il soit branché en Xeme position ou pas. Et si ce n'est pas le cas, existe-t-il des alternatives à cela?
    ti
    distribution: Debian Squeeze (sans mode graphique)

    Ps: je ne m'y connais qu'assez peu en Linux, n'hésitez donc pas à me donner des détails sur les commandes à utiliser, ou au moins des liens vers des tutos.

    Merci d'avance!

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Par défaut
    Je ne sais pas si on peut réserver un BUS/Device à l'affectation d'un périphérique usb donné

    mais il est possible de trouver toutes les informations d'un device usb grace à lsusb (en utilisant son identification)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ~ > lsusb -d413c:2003
    Bus 001 Device 004: ID 413c:2003 Dell Computer Corp. Keyboard

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    Je ne sais pas si on peut réserver un BUS/Device à l'affectation d'un périphérique usb donné

    mais il est possible de trouver toutes les informations d'un device usb grace à lsusb (en utilisant son identification)
    Merci pour la commande, je ne connaissais pas. Ca peut toujours servir!

    Citation Envoyé par Obsidian Voir le message
    Les ports série et l'USB n'ont rien à voir entre eux et leurs technologies respectives sont très éloignées. Cela dit, tu parles peut-être d'un adaptateur RS/232 se branchant sur le port USB et étant déclaré comme un port série du côté système.
    Oui, je me suis mal exprimé, mais c'est (a peu près) ça: le serveur est branché via ports USB (a des cartes faites maisons), qui sont considérés comme serial. Je faisais d'ailleurs bien mes tests avec un adaptateur USB-RS232. Les cartes sont reliés aux PC via de l'USB.

    J'ai donc commencé à lire la doc de l'udev, j'ai essayé de faire ma propre config, mais à priori, ça n'a pas l'air de fonctionner, il y a de grandes chances donc que j'ai fait une connerie.

    Pour résumer ma démarche, donc j'ai créé un fichier (nommé "10-local.rules" comme dans l'exemple de l'udev) dans etc/udev/.
    Son contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    KERNEL=="event0", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0024", SYMLINK+="input/event0"  NAME="USB12"
    KERNEL=="event1", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0002", SYMLINK+="input/event0"  NAME="USB40"
    KERNEL=="event2", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="input/event0"  NAME="USB44"
    (Je teste sur 3 ports différents pour tester)
    Avec:
    KERNEL=="event0" -> nom supposé des cartes, trouvé dans /dev/input/
    ATTRS{idVendor}=="8087" -> premiere valeur donnée via lsusb (merci mvvv)
    ATTRS{idProduct}=="0024" -> la seconde valeur donnée via lsusb
    SYMLINK+="input/event0" -> le lien vers le supposé fichier de ma carte, dans /dev/
    NAME="USB40" -> le nom que je souhaiterai donner a mes ports (usb0 ou 1 ne serait pas assez flagrant)

    Voila, je suppose que j'ai du faire une gourde, donc je poste l'explication de ce que j'ai fais. Merci de l'aide en tout cas.

    Edit: Au passage, il faut redémarrer entre chaque modif, ou il existe une commande pour relancer l'udev?

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Par défaut
    Tu dois pouvoir enlever le discriminant Kernel ... avec les identifiants des périphériques tu es sûr de ne pas te tromper.

    Et sinon essaye sans le NAME peut être (tu as oublié la virgule devant sinon)

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 554
    Par défaut
    C'est presque ça, mais le paramètre après « SYMLINK+= » est le nom que tu vas donner à ton lien symbolique (celui-là même que tu essaies de passer avec NAME). Il va automatiquement pointer le bon device.

    Il faut en outre penser à séparer les différentes clauses avec une virgule « , ».

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    Arg.

    Merci de vos aides, j'ai bien vu qu'il y avait quelques problèmes dans mon code (pas de virgule, nom dupliqué, etc), j'ai refais quelques modifications, mais après pas mal de temps à tester... Je commence à baisser les bras. Je me demande s'il n'y a pas un soucis sur le serveur, tout simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #SUBSYSTEM=="tty", ATTRS{Serial}=="A400eNQQ", SYMLINK+="USB42", NAME="Port0"
    #SUBSYSTEM=="tty", ATTRS{iSerial}=="A400eNQM", SYMLINK+="USB43"
    #SUBSYSTEM=="tty", ATTRS{iSerial}=="A400eNJT", SYMLINK+="USB44", NAME="Port2"
    #SUBSYSTEM=="usb", ATTRS{iSerial}=="A400eNQM", KERNEL=="ttyUSB*", NAME="input/Port1", SYMLINK+="USB43"
     
    SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="A400eNQQ", SYMLINK+="MonUSB0"
    Même un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSYSTEMS=="tty", NAME="input/port1"
    Ne fonctionne pas, l'entrée /dev/input/port1 (qui devrait correspondre à ce que je reçois dans mon code, lorsque je fais un port.getname() ) n'apparait pas. Je continue de plancher, et je posterai la réponse si je la trouve, mais je pense qu'il y a un soucis.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Par défaut
    n'hésite pas à parcourir toutes les configurations sous /lib/udev/rules.d

    Déjà tu y trouveras comment tes périphériques sont gérés par défaut.

    Bon courage

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 554
    Par défaut
    Hello,

    Citation Envoyé par Aurelienjjj Voir le message
    J'aurais besoin de conseils concernant l'utilisation de ports serial sous Linux. Actuellement, je travaille sur un serveur qui envoie des informations en direction de ports serial/com (l'USB quoi)
    Les ports série et l'USB n'ont rien à voir entre eux et leurs technologies respectives sont très éloignées. Cela dit, tu parles peut-être d'un adaptateur RS/232 se branchant sur le port USB et étant déclaré comme un port série du côté système.

    Malheureusement, au redémarrage du serveur, les ports ne sont plus dans le même ordre (usb0 devient l'usb1 et l'usb1 l'usb0 par exemple), invalidant les redirections des valeurs reçues/envoyées. J'ai pensé qu'il y avait un ordre de repositionnement des ports, mais ça ne semble pas être le cas, les échanges de ports semblant anarchiques.
    Elle ne sont pas anarchiques mais à partir du moment où tes adaptateurs peuvent être branchés sur n'importe quels ports USB et que ceux-ci peuvent accueillir n'importe quels types de périphérique, il n'y a rien qui permette au système de choisir un ordre plutôt qu'un autre. Dans ce cas, l'allocation est automatique et c'est le premier à s'énumérer qui récupérera le plus petit numéro.

    Ma question est donc la suivante: y a t-il moyen de renommer les ports de mon serveur de manière à ce que, par exemple, un port réponde toujours au nom "usbX", qu'il soit branché en Xeme position ou pas. Et si ce n'est pas le cas, existe-t-il des alternatives à cela?
    Il y en a mais ce n'est pas facile de prime abord. Il faut faire cela au niveau de « udev ». Il faut d'abord choisir un critère de sélection : soit tu as deux adaptateurs distincts et dans ce cas, tu les discrimines avec leur identifiants produit et fabricant comme indiqué par mvvvv, soit ce sont les mêmes et dans ce cas, tu les différencies par les ports sur lesquels ils sont branchés.

    Il faut ensuite écrire la règle udev correspondante. Tu peux effectivement demander à associer un fichier spécial « /dev » donné pour cela, mais c'est un peu pénible parce que ça rentre en conflit avec d'autres règles, ainsi qu'avec les requêtes du pilote lui-même et tu te retrouves parfois avec des fichiers en double. En plus, il faut veiller à ne pas utiliser un nom de fichier habituel car celui peut avoir été déjà affecté.

    Par contre, tu peux aussi demander à ce que le système crée un lien symbolique sur le fichier qu'il aura alloué tout seul ! Ça, c'est le meilleur plan car ça te permet de lui donner un nom explicite et tu sais qu'il pointera toujours le bon fichier quelque soit la manière dont le système a choisi de les répartir.

    À titre d'exemple, voici ce que j'ai fait pour mes joysticks. L'un est un joystick à retour de force, l'autre est en fait un palonnier d'aviation. J'avais besoin d'avoir toujours une vue sur le premier pour faire fonctionner un pilote écrit par mes soins :

    Code udev : Sélectionner tout - Visualiser dans une fenêtre à part
    KERNEL=="js*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c286", SYMLINK+="input/jslogitech3dpro"

    Ces règles vont dans un des fichiers du répertoire /etc/udev/rules.d.

    La marche à suivre est ici : http://www.reactivated.net/writing_udev_rules.html

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Par défaut
    @Obsidian

    n'y a t il pas déjà des règles prédéfinies pour certains périphériques référencés ?

    Je pense aux video0 pour les webcam ou printer pour les imprimantes ?

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Par défaut
    j'ai trouvé :

    tout est sous /lib/udev/rules.d


    tout est expliqué là

    http://doc.ubuntu-fr.org/udev

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 554
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    j'ai trouvé :
    tout est sous /lib/udev/rules.d
    C'est ce que j'ai écrit en bas de mon commentaire, mais ce n'est pas grave.


    tout est expliqué là http://doc.ubuntu-fr.org/udev
    Merci pour la doc en français.

Discussions similaires

  1. Utiliser les ports du PC
    Par trax44 dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 31/12/2010, 17h38
  2. Lister les ports disponibles
    Par belfaigore dans le forum C++Builder
    Réponses: 17
    Dernier message: 07/02/2005, 17h58
  3. Lister les ports com disponible
    Par dyason dans le forum Général Python
    Réponses: 1
    Dernier message: 16/08/2004, 11h35
  4. [C#] Communication avec les ports parallèle et RS232
    Par jejerome dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/07/2004, 23h57
  5. Les ports series sous linux...
    Par barucca dans le forum Matériel
    Réponses: 11
    Dernier message: 29/04/2004, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo