Ich muss den Titel des angeschlossenen USB-Geräts erhalten. Ich kann das mit machen lsusb
.
udev erlaubt einige Ersetzungen, wenn ich Regeln schreibe: Sagen wir, wir können verwenden $kernel
, um den Namen des Geräts abzurufen oder $devpath
um den Pfad zum Gerät abzurufen.
Das Problem ist jedoch, dass lsusb
der folgende String zurückgegeben wird:
Bus 005 Device 032: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Aber udevs Devpath ist:
/devices/pci0000:00/0000:00:1d.0/usb5/5-2
Die Busnummer ist dieselbe ( 5
), aber die Nummern sind unterschiedlich: Device 032
scheint eine logische Nummer zu sein (wenn ich das Gerät wieder anbringe, erhöht sich diese Nummer) und 2
scheint eine physische Gerätenummer zu sein.
Also gibt udev die physische Nummer zurück und ich muss die logische Nummer erhalten. Dann kann ich Daten wie folgt abrufen:lsusb -D /dev/bus/usb/005/032
Also, wie kann ich logische Gerätenummer 032
über physischen Pfad wie erhalten /devices/pci0000:00/0000:00:1d.0/usb5/5-2
?
udev
vs.lsusb
undsys/devices/..
vs./dev/bus/usb/..
und nach Ihrer Antwort zu urteilen, scheinen Sie Bescheid zu wissen :) Vielleicht können Sie etwas Licht in diese beiden Fragen bringen? askubuntu.com/questions/342061/power-on-off-usb-ports und askubuntu.com/questions/498950/…/sys/devices/...
vs/dev/...
:/sys
wird vom Kernel gefüllt, es ist eine Darstellung der tatsächlichen Hierarchie der Kernelgeräte. Udev ist ein User-Space-Daemon, der/sys
Hierarchien und Auffüllungen verwaltet/dev/...
(unter Berücksichtigung von Regeln). Udev ist also vollständig für den/dev
Inhalt verantwortlich.Die akzeptierte Antwort hat mir wirklich nicht viel geholfen. Ich habe endlich einen Weg gefunden, indem ich das idProduct und den idVendor untersucht habe, ob sie existieren. Hier ist ein Shell-Skript
Folgendes bekomme ich auf mein System.
Hier kann ich sehen, dass zum Beispiel
0a5c:21e6
ein Bluetooth-Gerät zugeordnet ist2-1.4
.Für noch mehr Komfort können Sie dies als eine Funktion in Ihrer Shell definieren, so etwas wie
quelle