Wie wird die Ausgabe von 'lsusb' interpretiert - Was sind all diese Linux Foundation-Root-Hubs?

18

Ich habe kürzlich beim Beheben eines Headset-Problems etwas über den Befehl lsusb erfahren.

Mein Laptop läuft unter Debian und hat momentan nichts an USB angeschlossen, aber wenn ich den "lsusb" -Befehl ausführe, bekomme ich immer noch einiges an Ausgabe:

root@t500:~# lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 0a5c:2145 Broadcom Corp. Bluetooth with Enhanced Data Rate II
Bus 004 Device 002: ID 08ff:2810 AuthenTec, Inc. AES2810
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0781:b6d0 SanDisk Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Könnte jemand zusammenfassen, was dies im Detail bedeutet?

Die SanDisk-Karte ist nicht über USB, sondern über PCMCIA angeschlossen. Werden sowohl PC-Karten als auch USB-Geräte in lsusb aufgelistet?

Ich habe kein externes Bluetooth angeschlossen. Warum sollte dieses Display?

Warum gibt es einige Root-Hubs 1.1 und einige 2.0? Bedeutet das, dass einige meiner USB-Anschlüsse 2.0 sind und andere nicht?

Was genau ist ein Root-Hub, nur ein leerer USB-Anschluss?

some1
quelle

Antworten:

7

Ein USB-Hub ist ein Gerät, bei dem ein Kabel an einen USB-Anschluss angeschlossen ist, Sie jedoch mehrere USB-Anschlüsse zum Anschließen von Geräten bereitstellen können. Es ist im Wesentlichen ein USB-Multiplexer.

Ein Root-Hub, AFAIK, ist ein interner USB-Hub. Beispielsweise gibt es möglicherweise nur einen USB-Steckplatz in Ihrem Motherboard, aber es gibt mehrere externe Ports, da ein interner Root-Hub an das Motherboard angeschlossen ist. (Das ist natürlich vereinfacht. Ich bin kein Experte für Hardware.)

Das Bluetooth-Gerät ist der Chip in Ihrem Computer, der tatsächlich Bluetooth-Funkverkehr sendet. Wahrscheinlich ist es über einen USB-Anschluss im Gehäuse des Computers angeschlossen.

In Bezug auf die Anzeige von "Linux Foundation" schätze ich, dass dort die Treiber herkommen. Aber ich bin mir nicht sicher.

strugee
quelle
1
Viele Geräte sind als USB-Geräte verkabelt, aber nicht an einen "Port" im Sinne eines Ports angeschlossen, wie wir ihn an der Außenseite des Computers haben. Sie werden nur über USB logisch verbunden (z. B. befinden sich Pfade zwischen dem Gerät und dem USB-Hub möglicherweise direkt auf der Hauptplatine des Systems, z. B. der kabelgebundene Netzwerkanschluss des Raspberry Pi). Sie funktionieren so, als wären sie an Standard-USB-Ports angeschlossen, können aber natürlich nicht entfernt werden.
Jim MacKenzie
21

Der "Root-Hub" ist ein falsches Gerät und repräsentiert den Bus selbst. Es hat immer die Gerätenummer 1 auf dem Bus, auf dem es sitzt. Der "Hersteller" ist immer 1d6b, die "Linux Foundation", aber soweit ich das beurteilen kann, dient dies lediglich dazu, eine "Wurzel" für die "Zweige" des Baums zu erstellen (wie Sie aus lsusb -t ersehen können, wie von vorgeschlagen) Wagner). Die Art des Busses (Version 1.1, 2.0, 3.0) entspricht der Geräte-ID (0001, 0002, 0003).

(Ein subtiler Punkt - es gibt tatsächlich einen "USB Host Controller", der ein physisches Gerät ist - aber es ist KEIN USB-Gerät! Es ist normalerweise ein PCI-Gerät. Zum Beispiel habe ich auf meinem Computer zwei USB-Busse und zwei USB-Host-Controller, die mit dem Befehl lspci angezeigt werden. Sie werden von Intel und nicht von Linux Foundation hergestellt. Ein "USB-Root-Hub" stellt das physische PCI-Gerät dar. Ich glaube, dass die gesamte Sache mit der "Linux Foundation" auf das physische Gerät zurückzuführen ist PCI- und keine USB-Kennungen. Http://www.usblyzer.com/usb-topology.htm )

Das SanDisk-Gerät präsentiert sich der Außenwelt möglicherweise als PCMCIA-Steckplatz (ich nehme an), ist jedoch intern mit USB-Bus 001 verbunden. (Auch hier wird es als Gerät 002 bezeichnet, da der Bus selbst Gerät 001 ist.)

In ähnlicher Weise ist das Bluetooth-Gerät intern (wie beschrieben) und erneut mit einem USB-Bus verbunden, in diesem Fall Bus 004, der ein USB 1.1-Bus (niedrige Geschwindigkeit) ist. Das macht Sinn, da Bluetooth relativ langsam ist. Am selben Bus befindet sich das AuthenTec-Gerät, ein Fingerabdruckscanner, ebenfalls mit niedriger Geschwindigkeit.

Dieser Ausgang zeigt also an, dass Sie über acht (!) Integrierte USB-Busse verfügen, an die drei Geräte angeschlossen sind. Und Sie haben zwei Hochgeschwindigkeits-USB-Busse und sechs Niedergeschwindigkeits-USB-Busse. Einige oder alle dieser Geräte verfügen möglicherweise über externe Anschlüsse zum Anschließen verschiedener externer USB-Geräte. Sie können versuchen, ein Gerät anzuschließen und lsusb erneut auszuführen, um festzustellen, welcher Port mit welchem ​​Bus verbunden ist.

John F
quelle
1
PS - es sieht so aus, als ob MS Windows diese Frage ebenfalls betrügt, indem es die PCI-IDs für die USB-Root-Hubs verwendet. Ich nehme an, es gibt keine gute Lösung, daher ist die "Linux Foundation" eine vernünftige. Die MSW-Lösung kann Konflikte mit einer echten USB-Geräte-ID verursachen und bietet den Vorteil, dass sie in der PCI-Registrierung nachgeschlagen werden kann. (Es stellt sich heraus, dass Intel eine Herstellerkennung von 8086 für USB und PCI hat.)
John F
7

Überprüfen Sie dies

lsusb -t

-t Sichert die Hierarchie der physischen USB-Geräte als Baum

Wagner
quelle