USB 1.1
Hier haben wir einen alten XP-Computer der nur einen einzelnen USB 1.1 Host-Controller hat. Wie jeder USB-Host-Controller hat er genau einen USB-Root-Hub, dieser hat zwei USB-Ports.
Am Port 1 ist ein USB-Massenspeichergerät angeschlossen, dessen Laufwerk ist auf Z: gemountet.
Obwohl es ein USB-Gerät 2.0 Gerät ist, läuft es mit "Full-Speed", weil es an einen USB 1.1 Hub angeschlossen ist.
USB 2.0
Hier haben wir einen Windows 7 Computer mit Intel P35 Chipsatz dessen ICH7 über einen 8-Port USB 2.0 High-Speed Controller verfügt. Die 8 physischen Ports sind hier aufgeteilt: Die logischen Ports für Low- und Full-Speed-Geräte sind auf vier USB 1.1 Controller mit je zwei Ports verteilt während die acht logischen Ports für USB High-Speed-Geräte an einem "Enhanced" Controller hängen. Warum die USB-1.1-Ports bei allen Herstellern auf mehrere Controller verteilt werden, habe ich noch nicht ergründet.
Eine Möglichkeit abzufragen, welcher USB1-Port zu welchem USB2-Port gehört, gibt es wohl nicht.
USB 2.0 High-Speed-Controller haben typischerweise das Wort "Enhanced" im Gerätenamen. Ab Vista kann man die High-Speed-Unterstützung abfragen - UsbTreeView zeigt das in den "USB Hub Capabilities" im Flag "HighSpeed".
Am Port 1 des Enhanced-Controllers ist ein USB High-Speed Hub angeschlossen, an dessen Port 4 wiederum dasselbe USB-Massenspeichergerät wie oben, dank USBDLM wieder auf Z: gemountet.
Neuere Intel-Chipsätze haben keine USB1-Hostcontroller mehr, stattdessen hat der Chipsatz USB-Standard-Hubs integriert, die ggf. von Low- oder Full-Speed auf High-Speed wandeln. Intel nennt das "Integrated USB 2.0 Rate Matching Hub".
Bei USB3-Controllern erscheinen USB1-Geräte an den High-Speed-Ports.
Die große Anzahl der Ports liegt zum einen am Doppelleben der Ports und zum anderen sind oft nicht alle vom Chipsatz untersützten Ports aus dem Computer herausgeführt.
USB 3.0
Hier sind wir unter Windows 8 mit einem Texas Instrumens USB 3.0 Controller TUSB7340. Windows 8 hat eingebaute Unterstützung für USB 3.0 SuperSpeed und einen erweiteten USB-Stack. Dieser liefert u.a. jetzt für jeden USB-Port dessen unterstützte Geschwindigkeit, so dass UsbTreeView hier in den Port-Icons ein 'H' für High-Speed und ein 'S' für SuperSpeed zeigen kann, auch wenn noch kein Gerät angeschlossen ist. Was leider bis heute fehlt ist die Information über die maximal unterstützte SuperSpeed-Geschwindigkeit (5, 10 oder 20 GBits/s)
Der TUSB7340 ist für vier USB3-Anschlüsse ausgelegt, in jeder Buchse ist ein physischer USB2-Port (die vier Kontakte hinten in der Buchse) und ein USB3-SuperSpeed-Port (die fünf vorn in der Buchse). Die ersten vier aufgelisteten Ports sind die USB2-Ports für Low-, Full- und High-Speed-Geträte während die hinteren vier für SuperSpeed-Geräte zuständig sind.
Im Screenshot sieht man, dass der ausgewählte Port 4 die "CompanionPortNumber" 8 hat. Das heißt dass die Ports 4 und 8 zusammengehören, sich also die Buchse teilen. Der Hersteller könnte das auch anders verdrahten, aber so ist der Plan. An so einer Buchse könnte man mit einem passenden Adapter auch ein USB1/2-Gerät und ein USB3-SuperSpeed-Gerät gleichzeitig betreiben.
USB-C Ports können auch zwei Companion-Ports haben (also eine Gruppe aus einem USB2- und zwei USB3-Ports): Statt je nach Orientierung des USB-C-Steckers die RX/TX-Leitungen umzuschalten sind die 2x5 USB3-Pins einfach an zwei separate USB3-Ports geführt. Spart ein paar Cent, siehe hier: https://richardg867.wordpress.com/2020/02/29/usb-c-done-cheap/
An einigen wenigen Computern, bei denen nur USB3-Ports herausgeführt sind, wurden die Ports so verdrahtet, dass die USB2-Kontakte einer USB3-Buchse nicht mit dem eigentlichen USB3-Controller verbunden sind sondern mit einem anderen, klassischen USB2-Controllers - so funktionieren Maus, Tastatur und USB2-Datenträger während der Installation von Betriebssystem ohne eingebaute Treiber für den neuen USB3-Controller.
USB 3.0 Hub
USB3-Hubs bestehen aus zwei völlig unabhängigen Hubs, einem für USB3-SuperSpeed und einem für USB2-High-, Full- und Low-Speed.
Einzige Gemeinsamkeit ist, dass sie an "Companion-Ports" angeschlossen sind, also Ports die typischerweise im selben physischen Anschluss liegen.
Hier ist Port 20 der Companion-Port von Port 9 und umgekehrt, Port 9 ist in rot farblich hervorgehoben weil es der High-Speed-Port ist, wäre Port 9 ausgewählt wäre Port 20 in blau hervorgehoben, da ein SuperSpeed-Port:
Die Ports des Hubs sind dann auch jeweils Companion-Ports. Welche Ports Companion-Ports sind muss vom Hersteller im BIOS des Mainbords hinterlegt werden. Wenn das Board einen Hersteller und/oder Produkt wie "Default string" meldet, ist nicht damit zu rechnen, dass das korrekt erfolgt ist...
Schließt man einen USB3-Hub an, erscheinen im System zwei Hubs, ein USB3- und ein USB2-Hub. Erscheint nur ein USB2-Hub, ist er vielleicht mit einem USB2-Kabel angeschlossen. Oder es ist eine Produkt-Fälschung - einen USB2-Hub bei dem die USB3-Pins auf einen oder alle Port 1:1 durchgeschaltet sind, das erste angeschlossene USB3-Gerät funktioniert mit SuperSpeed, weitere fallen auf USB2 zurück.
Ein USB3-Gerät versucht zunächst eine stabile Verbindung zum USB3-Hub aufzubauen, wenn dass z.B. wegen eines zu langen oder schlechten Kabels fehlschlägt, wird die USB2-Highspeed-Verbindung versucht, was dann meist funktioniert weil die Anforderungen an Kabel und Kontakte hier deutlich geringer sind. Das Gerät erscheint dann am USB-2.1-Hub und meldet selbst eine USB-Version 2.1 oder 2.0.
Intel Series 8 xHCI Controller
Hier haben wir eine Reihe gelber Ausrufezeichen an einem Intel Series 8 xHCI controller auf einem Asus H81-Plus. Dessen Ports 11 bis 15 haben einen 'connection status' 3 "Device general failure" der zu den Ausrufezeichen im TreeView führt.
Das kommt offenbar daher, dass es höhere Portnummern als tatsächlich vorhandene Ports gibt. In Intels Datenblättern ist ein Register namens MAXPORTS dokumentiert:
"Number of Ports (MAXPORTS)
The value in this field reflects the highest numbered port in the controller, not the actual count of the number of ports. This allows for gaps in the port numbering, between USB2 and USB3 protocol capabilities."
Die Ports 11 bis 15 sind somit eine beabsichtigte Lücke in der Port-Nummerierung. Ab V3.8.5 zeigt UsbTreeView solche Ports (ab Windows 8) nicht mehr. Intels Treiber (die man bis Windows 7 braucht) melden an diesen Ports einfach 'Kein Gerät'.
Gerät antwortet nicht
Hier haben wir ein nicht antwortendes USB-Gerät: Der USB-Port hat ein angeschlossenes Gerät signalisiert, Windows versucht dessen Eingenschaften abzufragen, erhält aber keine Antwort. Somit sind weder Vendor- noch Produkt-ID bekannt, Windows vergibt dann als Geräte-ID USB\VID_0000&PID_000X\ plus Zufalls-Wert.
Entweder ist das Gerät defekt und antwortet nicht oder die Verbindung ist so schlecht, dass die Kommunikation fehlschlägt. Manchmal signalisieren USB-Ports auch ein angeschlossens Gerät obwohl nur ein langes Kabel ohne Gerät angeschlossen ist.
|
|