Hello,

Envoyé par
Aurelienjjj
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 :
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
Partager