9
votes

Comment identifier plusieurs adaptateurs USB-série sous Ubuntu 10.1

Je lis les données de plusieurs adaptateurs de série USB identiques sous Ubuntu 10.1.

À l'occasion, le chemin de leur / dev / tty change (par exemple, si d'autres périphériques USB sont connectés au démarrage).

J'ai besoin d'un moyen de faire référence à plusieurs reprises à la même adaptateur à travers de tels changements.

Les appareils ont tous les mêmes numéros de série, selon Udevadm.

Je pense que l'option la plus probable est d'identifier un adaptateur par lequel le port qu'il est connecté (ils ne sont pas déplacés).

Je peux trouver toutes sortes de chemins intéressants / dev qui pourrait fonctionner, mais malgré toutes les discussions sur Udev Online, je ne peux pas localiser une déclaration définitive sur le point de savoir si certaines de ces chemins sont statiques si l'appareil est branché dans une statique. Port.


1 commentaires

J'ai trouvé cette réponse superutilisateur très utile: SuperUserSer.com/a/536648/27510


7 Réponses :


-1
votes

Les appareils ont tous les mêmes numéros de série [..]

L'USB-PARSE-DevPath.PM s'adresse à cela en utilisant l'ID de bus et de port de l'adaptateur.


0 commentaires

9
votes

Il y a une solution. Il vaut mieux tard alors jamais;)

Utilisez la règle suivante udev à mapper / dev / ttyusb {?} dans les ports / dev / usb /% bus_id-% port_id lien.

voici mon /etc/udev/rules.d/usb-parse-devpath.rules: xxx

et le USB-PARS-DevPath.pm script: xxx

Comme vous pouvez le constater. Nous pour créer des liens nommés vers / dev / ttyusb {?} et placez-les au / dev / usb-ports dans le format suivant: BUS_ID-PORT_ID < /code >.

Pro exemple, la commande suivante me donne les suivantes: xxx

donc, le bus_id est < Code> 3 et port_id est 1 et j'ai maintenant suivi dans mes ports / dev / usb : XXX

Cordialement.


3 commentaires

J'ai trouvé que changer les éléments d'impression $ [$ I + 1] pour imprimer $ éléments [$ i + 2] est plus utile ici; Étant donné que les deux ports USB sur le devant de mon ordinateur semblaient mapper de «1-1» sous le premier!


@JamesMuscat: Merci pour votre réponse.


Parlez de l'ingénierie! action == "Ajouter", Kernel == "TTYUSB [0-9] *", Symlink + = "USB-Ports / TTY-% S {../ BUSNUM} -% s {../ devpath}" fait la même chose.



2
votes

Compte tenu de la réponse d'Ilya Matvejchikov, une bonne solution consiste à ajouter des règles UDev pour faire ce que vous voulez avec l'appareil. Comme vous, j'avais un problème similaire. J'ai eu une hausse sur un adaptateur USB à plusieurs séries et que le système passe parfois autour des numéros / dev / tty.

Ma solution consistait à créer une règle pour correspondre au type de périphérique par pilote et port, puis Créez un lien symbolique sur le port vers lequel mon onduleur était attaché. J'ai utilisé l'écrou pour surveiller l'onduleur, qui a toujours été branché dans le même port physique. xxx

maintenant je configure l'écrou pour toujours utiliser une constante / dev / noise-ups00, comme Le port série et la règle s'occupe de la mappage correctement lorsque le périphérique série USB est reconnu.

Vous pouvez utiliser la commande LSUSB pour déterminer le nom du périphérique réel à utiliser dans la règle lorsqu'il est branché.


0 commentaires

2
votes

look avec $ udevadm info -n / dev / ttyusb0 -a quel port votre périphérique USB est branché. Les noyaux variables de l'un des périphériques parents doivent être quelque chose comme les noyaux == "1 -1.2: 1.0 ".

créer une règle UDev: xxx

et déclencher udev xxx


0 commentaires

0
votes

Les périphériques USB peuvent vous obtenir le numéro de port et le bus / développement.


0 commentaires

0
votes

J'ai aussi cherché à ce sujet pour trouver un moyen de trouver quel périphérique USB physique a été attribué / connecté à un nom de périphérique logique / dev. Donc, après quelques essais et erreurs, c'est ce qui a fonctionné le mieux pour moi:

Voir quels périphériques TTYUSBX logiques (où X est 0, 1, 2 ...): P>

$ usb-devices


0 commentaires

1
votes

J'ai beaucoup d'USB à des appareils série avec chaque em> de nombreux ports et des solutions mentionné ci-dessus ne l'a pas tout à fait fait pour moi.

Le "noyau" USB n'était pas suffisant dans mon cas, mais j'ai trouvé le numéro de port. P>

Je suis conscient que ce que je propose maintenant peut être considéré comme un piratage insensé, Mais ça marche pour moi ..
pour l'instant .. p>

Je serais vraiment ravi de voir une suggestion plus élégante Cela accomplit quelque chose de similaire .. p>

SO ... Basé sur le formulaire de réponse précédent Ilya Matveychikov P>

fichier: /etc/uev/roules.d/usb-parrse-devpath.sh p> xxx pré>

et fichier: /etc/udev/rules.d/99-usb-serial.rules

# ls -l /dev/TTYUSBs

lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435100 -> ../ttyUSB20
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435101 -> ../ttyUSB21
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435102 -> ../ttyUSB22
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435103 -> ../ttyUSB23
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435104 -> ../ttyUSB24
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435105 -> ../ttyUSB25
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435106 -> ../ttyUSB26
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_435107 -> ../ttyUSB27
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436100 -> ../ttyUSB28
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436101 -> ../ttyUSB29
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436102 -> ../ttyUSB30
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436103 -> ../ttyUSB31
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436104 -> ../ttyUSB32
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436105 -> ../ttyUSB33
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436106 -> ../ttyUSB34
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport416_436107 -> ../ttyUSB35
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport4_4341100 -> ../ttyUSB38
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport4_4341101 -> ../ttyUSB39
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport4_4342100 -> ../ttyUSB36
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport4_4342101 -> ../ttyUSB37
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Edgeport8_421100 -> ../ttyUSB2
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Edgeport8_421101 -> ../ttyUSB3
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Edgeport8_422100 -> ../ttyUSB4
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Edgeport8_422101 -> ../ttyUSB5
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport8_423100 -> ../ttyUSB18
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Edgeport8_423101 -> ../ttyUSB19
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Edgeport8_424100 -> ../ttyUSB0
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Edgeport8_424101 -> ../ttyUSB1
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_431100 -> ../ttyUSB6
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_431101 -> ../ttyUSB7
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_431102 -> ../ttyUSB8
lrwxrwxrwx. 1 root root 10 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_431103 -> ../ttyUSB9
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_432100 -> ../ttyUSB10
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_432101 -> ../ttyUSB11
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_432102 -> ../ttyUSB12
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_432103 -> ../ttyUSB13
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_433100 -> ../ttyUSB14
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_433101 -> ../ttyUSB15
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_433102 -> ../ttyUSB16
lrwxrwxrwx. 1 root root 11 Jan  5 18:46 ttyUSB_Keyspan_USA-49WG_433103 -> ../ttyUSB17
résultat ressemble à quelque chose comme ceci: p> xxx pré> p>


0 commentaires