it-swarm.com.de

Warum zeigt Windows die Meldung "Dieses Gerät kann schneller arbeiten" an, wenn ich es ungeschickt anschließe?

Mir ist aufgefallen, dass ich auf beiden Windows XP und 7 (bzw. 2 verschiedenen Computern) die Meldung "Dieses Gerät kann schneller arbeiten, wenn Sie es an einen Hochgeschwindigkeits-USB-2.0-Anschluss anschließen" erhalten konnte nach oben, wenn ich das Kabel sehr langsam anschließe (oder mit nur einer Hand Probleme habe). Wenn ich es schnell genug oder normal mit beiden Händen anschließe, erfolgt keine Benachrichtigung. In beiden Fällen scheinen alle diese Geräte normal zu funktionieren.

Was ich denke, passiert, dass der Kontakt zwischen den Kabeln während einer langsamen/ungeschickten Verbindung für eine ausreichende Zeit unterbrochen wird, die der USB-Controller nicht für 2.0, sondern für langsamer hält. Aber warum glaubt es das? Oder warum heißt es nicht einfach "Sie sind schlecht darin, Kabel anzuschließen, bitte ziehen Sie den Stecker heraus und versuchen Sie es erneut"?

74
user1306322

Die Meldung bezieht sich auf die Aushandlung der alten FS-Datenrate (Full Speed) von 12 Mbit/s anstelle der HS-Datenrate (High Speed) von 480 Mbit/s. Es muss wirklich schwierig sein, diesen Effekt über einen USB2-Anschluss zu erzielen. Das USB2.0-HS-Protokoll wird nach einer ziemlich komplizierten Aushandlung zwischen einem Gerät und dem Host eingerichtet, da anfangs jedes HS-Gerät als FS Gerät fungiert.

Der normale Prozess ist wie folgt:

  1. HS-fähiges Gerät zieht die D + -Leitung nach oben, nachdem es ein VBUS-Signal mit einem Widerstand von 1-1,5 kΩ auf 3,3 V erhalten hat. Genau wie ein FS Gerät.

  2. Der Host-Port erkennt, dass D + = hoch ist. Nach einer minimalen Verzögerung von 100 ms aktiviert der Host den USB_RESET-Status auf dem Bus und treibt sowohl D + als auch D- Leitungen mit 45 Ω-Treibern für 10 oder 50 ms auf Masse.

  3. Wenn das Gerät FS ist, tut es nichts und wartet bis zum Ende von USB_RESET.

  4. Wenn das Gerät HS ist, würde es mit dem HS-Treiber (18mA-Quelle) für ca. 1ms D-High fahren. Dadurch wird ein Impuls mit einer Amplitude von ca. 800 mV (18 mA bei einer Last von 45 Ω) erzeugt, der als "Chirp-K" bezeichnet wird.

  5. Wenn der Host nach dem Erkennen des END von Chirp-K den HS-Modus unterstützt, wird dieses Signal für ca. 50 µs zurückgespeist (gleiche 18 mA in die eigene 45 Ω-Last). Wenn es sich um einen FSHost handelt, ignoriert er das Chirp-K und fährt als FS fort.

  6. Wenn der Host den HS-Modus unterstützt, schaltet er sein Laufwerk erneut für 50 µs auf D + -Draht und bildet "Chirp-J".

  7. Der Host wiederholt dieses abwechselnde 50µs-Muster für die gesamte Dauer des USB_RESET-Status (10ms an Hub-Ports, 50ms an Root-Hub-Ports).

  8. Nach drei abwechselnden Chirp-K/J erkennt das Gerät, dass der Host HS ist, und wechselt selbst in den HS-Modus. Dies setzt voraus, dass die HS-Terminierung am Geräteende eingeschaltet wird, wodurch der Gesamtleitungswiderstand auf 22 Ω und die Chirpsignalamplitude auf 400 mV auf einen Standard-HS-Signalpegel abfällt.

  9. Der Host fährt mit den HS-Start-of-Frame-Paketen (SOF) fort und startet den Enumerationsprozess im HS-Modus.

Nun ist es jedermanns Sache, zu erraten, welcher Teil des Wackelns dieses Protokoll verletzt und den Host veranlasst hat, den Port als FS zu markieren.

76
Ale..chenski

Wenn Sie ein Gerät an einen USB2-Anschluss anschließen, versucht der Computer zunächst, eine Verbindung über das USB2-Datenprotokoll herzustellen.
Wenn dies fehlschlägt, wird erneut versucht, das USB1-Datenprotokoll zu verwenden.

Ich vermute, dass die physische Verbindung (aufgrund des Wackelns der Kontakte) während der USB2-Aushandlung noch nicht stabil ist. Es wird also auf USB1 zurückgegriffen, obwohl es sich bei dem Gerät um ein USB2-Gerät handelt.

Witzigerweise erkennt Windows, dass das Gerät USB2-fähig sein sollte (Informationen, die es vom Treiber erhält), und Windows gelangt zu dem Schluss, dass der USB-Anschluss, an den Sie es angeschlossen haben, ein langsamer USB1-Anschluss war. Windows scheint nicht zu prüfen, ob der Port selbst USB2-fähig ist.
Und deshalb bekommst du die etwas irreführende Fehlermeldung.

P.S. Habe es gerade selbst mit einem Windows 10 Rechner ausprobiert: Gleicher Effekt da.

32
Tonny

Möglicherweise haben Sie es langsam genug eingefügt, dass Windows den Handshake-Vorgang mit dem Controller bereits beendet hat und sich die für die USB 2.0-Kommunikation erforderlichen Kontakte zu diesem Zeitpunkt nicht berührten. Dies könnte dazu führen, dass Windows ein USB 2.0-Gerät als 1.1-Gerät verwechselt Gerät, da es auf den als nur auf USB 2.0 und höher gekennzeichneten Rails keine Antwort geben würde.

0
Stefan