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.
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:
Und das Skript usb-parse-devpath.pm
:
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
:
Grüße.
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%Ä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.
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%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:)
Tags und Links linux usb ubuntu usbserial identification