Wie erkennt man mehrere USB-serielle Adapter unter Ubuntu 10.1?

8

Ich lese Daten von mehreren identischen USB-seriellen Adaptern unter Ubuntu 10.1.

Gelegentlich ändert sich der / dev / tty-Pfad (z. B. wenn andere USB-Geräte beim Start verbunden sind).

Ich brauche eine Möglichkeit, durch solche Änderungen wiederholt auf denselben Adapter zu verweisen.

Die Geräte haben laut udevadm alle die gleichen Seriennummern.

Ich denke, die wahrscheinlichste Option ist, einen Adapter zu identifizieren, mit dem Port verbunden ist (sie werden nicht bewegt).

Ich kann alle möglichen interessanten / dev-Pfade finden, die funktionieren könnten, aber trotz aller Diskussionen über udev online kann ich keine definitive Aussage darüber finden, ob einige dieser Pfade statisch sind, wenn das Gerät in eine statische gesteckt ist port.

    
user589888 25.01.2011, 23:38
quelle

7 Antworten

9

Es gibt eine Lösung. Es ist besser spät als nie;)

Verwenden Sie die folgende udev -Regel, um /dev/ttyUSB{?} -Geräte dem /dev/usb-ports/%bus_id-%port_id -Link zuzuordnen.

Hier ist mein /etc/udev/rules.d/usb-parse-devpath.rules:

%Vor%

Und das Skript usb-parse-devpath.pm :

%Vor%

Wie Sie sehen, hilft uns das, benannte Links zu /dev/ttyUSB{?} -Geräten zu erstellen und sie in /dev/usb-ports im folgenden Format zu platzieren: bus_id-port_id .

Zum Beispiel gibt der nächste Befehl mir folgendes:

%Vor%

Also, das bus_id ist 3 und port_id ist 1 und jetzt habe ich folgendes in meinem /dev/usb-ports :

%Vor%

Grüße.

    
Ilya Matveychikov 11.05.2011 20:33
quelle
2

Schauen Sie mit $ udevadm info -n /dev/ttyUSB0 -a , an welchen Port Ihr USB-Gerät angeschlossen ist. Die Variable KERNELS eines der Elterngeräte sollte etwa KERNELS == "1-1.2: 1.0" sein.

Erstellen Sie eine udev-Regel:

%Vor%

und Auslöser udev

%Vor%     
mickeyrourkeske 23.07.2013 12:19
quelle
1

Ähnlich wie Ilya Matvejchikovs Antwort ist es eine gute Lösung, udev-Regeln hinzuzufügen, um das zu tun, was Sie mit dem Gerät machen wollen. Wie du, hatte ich ein ähnliches Problem. Ich hatte eine UPS auf einem USB-zu-Multi-Seriell-Adapter und gelegentlich würde das System um die / dev / tty-Nummern umschalten.

Meine Lösung bestand darin, eine Regel zu erstellen, die dem Gerätetyp nach Treiber und Port entspricht, und dann eine symbolische Verbindung zu dem Port zu erstellen, an den meine UPS angeschlossen war. Ich benutzte NUT, um die USV zu überwachen, die immer an den gleichen physischen Port angeschlossen wurde.

%Vor%

Jetzt konfiguriere ich NUT, um immer eine Konstante / dev / nut-ups0 zu verwenden, da der serielle Port und die Regel sich um die korrekte Zuordnung kümmern, wenn das USB-serielle Gerät erkannt wird.

Sie können den Befehl lsusb verwenden, um den tatsächlichen Gerätenamen zu ermitteln, der in der Regel verwendet werden soll, wenn er angeschlossen ist.

    
Suncat2000 02.04.2012 01:32
quelle
1

Ich habe viele USB-zu-Seriell-Geräte mit jedem vielen Ports und den Lösungen oben erwähnt hat es nicht ganz für mich getan.

Der USB "KERNEL" war in meinem Fall nicht genug, aber ich habe die Portnummer gefunden.

Ich bin mir bewusst, dass das, was ich jetzt vorschlage, als ein wahnsinniger Hack betrachtet werden könnte, aber es funktioniert für mich ..
für jetzt ..

Ich würde mich freuen, einen eleganteren Vorschlag zu sehen die etwas ähnliches erreichen ..

Also ... Basierend auf der vorherigen Antwortform Ilya Matveychikov

Datei: /etc/udev/rules.d/usb-parse-devpath.sh

%Vor%

Und Datei: /etc/udev/rules.d/99-usb-serial.rules

%Vor%

Das Ergebnis sieht ungefähr so ​​aus:

%Vor%     
Nicolas Tremblay 06.01.2015 00:21
quelle
0

usb-devices können Ihnen die Portnummer und die Bus / Dev-Enumeration liefern.

    
richmb 24.09.2013 20:16
quelle
0

Auch ich habe dieses Thema gesucht, um herauszufinden, welches physische USB-Gerät einem logischen / Dev-Gerätenamen zugewiesen / verbunden wurde. Nach einigem Probieren hat das also für mich am besten funktioniert:

Sehen Sie, welche logischen ttyUSBx-Geräte existieren (wobei x 0, 1, 2 ... ist):

%Vor%

Zeigen Sie Bus- und Gerätenummern für alle USB-Seriell-Adapter an:

%Vor%

Verwenden Sie abschließend:

%Vor%

Überprüfen Sie nun die udevadm-Ausgabe, um den logischen Gerätenamen dem tatsächlichen physischen Gerät zuzuordnen. Hier mein Eintrag, als ich es gemacht habe:

%Vor%

Also, in meinem Fall ist ttyUSB0 mit dem Gerät auf bus2, device5 verbunden, welches der Future Technology Devices International USB zu Serial Adapter ist; und in ähnlicher Weise ist ttyUSB1 mit dem Gerät auf bus2, device4 assoziiert, welches der USB-zu-Seriell-Adapter von Prolific Technology, Inc. ist.

Und wie bereits erwähnt, der Befehl:

%Vor%

Erhalten Sie die gleichen Informationen in einer einzeiligen Art und Weise. Ich dachte, ich würde die Details posten, die mir helfen zu lernen, wie das Zeug hinter den Kulissen funktioniert ...

Ich hoffe, das war hilfreich:)

    
GOTIL 27.12.2013 21:54
quelle
-1
  

Die Geräte haben alle die gleichen Seriennummern [..]

Der usb-parse-devpath.pm adressiert dies, indem er die Bus- und Port-ID des Adapters verwendet.

    
Turbo J 28.01.2011 17:15
quelle