2009-12-24 9 views
6

Wie programmiere ich die Geschwindigkeit des USB-Ports in Embedded-Geräten, auf denen der Linux-Kernel läuft?USB Port Speed ​​Linux

+2

Dies gehört entweder zu Serverfehler oder Sie müssen angeben, welche Sprache verwendet werden soll. –

+3

Sei nicht albern: Embedded-Geräte haben keine Server-Admins (und auch die Leute, die Code auf ihnen ausführen "Benutzer", so ist es auch keine Superuser-Frage!). Es handelt sich eindeutig um eine Frage zur Embedded ** -Entwicklung **, in der es darum geht, OS-spezifische Funktionen zu programmieren. – caf

+2

Alles, was Sie brauchen, ist lsusb -t – sMyles

Antwort

16

Sie können lesen /sys/bus/usb/devices/usb?/speed - es gibt Ihnen die Busgeschwindigkeit der Root-Hub (s) in Mbps: entweder 1,5, 12, 480 oder 5000. Die ersten beiden zeigen USB1 (niedrige Geschwindigkeit oder volle Geschwindigkeit), die der dritte USB2 und der vierte USB3.

+0

und es heißt 5000, wenn es USB3 ist. Dies sind für Root-Hubs. –

1

Dies hängt eher davon ab, war der Code, der die Informationen ausgeführt werden muss. Wenn Sie das Verhalten eines Kernel-USB-Gerätetreibers basierend auf der Verbindungsgeschwindigkeit ändern möchten, enthält die usb_device-Struktur, die vom USB-Subsystem an den Treiber übergeben wurde, eine Geschwindigkeitsnummerierung. Wenn Sie möchten, dass eine Anwendung im Benutzerbereich die Verbindungsgeschwindigkeit der Geräte erkennt, versuchen Sie, den/sys/bus/usb-Baum zu durchlaufen. Sie sollten Ihr USB-Gerät identifizieren können, indem Sie die Einträge idProduct und idVendor überprüfen. Sobald Sie eine Übereinstimmung haben, wird Ihnen der Geschwindigkeitseintrag geben, was Sie brauchen. Wenn mehrere Geräte angeschlossen sind, müssen Sie möglicherweise eine Möglichkeit finden, die USB-ID mit einem bestimmten Gerät zu verknüpfen. Im Allgemeinen variieren die Zuordnung von USB zu Gerät bei jeder Hot Plug-Unterstützung, unabhängig davon, ob das Gerät eine Seriennummer und das Subsystem bereitstellt, das die Funktionalität des USB-Geräts abstrahiert.