Dlaczego system Windows wyświetla powiadomienie „To urządzenie może działać szybciej”, jeśli podłączę je niezgrabnie?

74

Zauważyłem, że zarówno w systemie Windows XP, jak i 7 (i odpowiednio 2 różnych komputerach) udało mi się uzyskać komunikat „To urządzenie może działać szybciej, jeśli podłączysz je do szybkiego portu USB 2.0”, aby wyświetlało się po podłączeniu kabla bardzo powoli (lub trochę wysiłku, wykonując to jedną ręką). Jeśli podłączę go wystarczająco szybko lub normalnie, obiema rękami, nie będzie żadnego powiadomienia. W obu przypadkach wydaje się, że wszystkie takie urządzenia działają normalnie.

Wydaje mi się, że kontakt między drutami zostaje przerwany przez wystarczająco długi czas podczas powolnego / niezgrabnego połączenia, że ​​kontroler USB uważa, że ​​nie jest to 2.0, ale wolniej. Ale dlaczego tak myśli? Albo dlaczego nie mówi tylko „Jesteś kiepski w podłączaniu kabli, odłącz i spróbuj ponownie”?

użytkownik1306322
źródło
Czy urządzenie jest podłączone do klucza USB, a nie bezpośrednio do twojego urządzenia? Jeśli tak, spróbuj podłączyć urządzenie bezpośrednio, a nie osoba trzecia, że ​​tak powiem.
Jest podłączony do tylnego portu kabla wieży biurkowej, więc nie powinien mieć niczego między płytą główną a urządzeniem na drugim końcu.
user1306322
5
Kto do diabła używa obu rąk do podłączenia urządzenia USB?
PNDA
3
@ Cunningham'sLawyer: scenariusz z jedną ręką : wtyczka USB (lub klucz) popycha laptopa wokół stołu podczas próby jednej strony, odwracania go, próbowania jeszcze raz, odwracania, aby w końcu podłączyć. Scenariusz z dwiema rękami : taka sama ilość przewracania, ale druga ręka trzyma nieruchomy laptop.
WoJ,
Czekaj, więc masz porty USB 1 na tych laptopach? 0_0
rahuldottech

Odpowiedzi:

76

Komunikat odnosi się do negocjowania prędkości transmisji danych przy pełnej prędkości (FS) wynoszącej 12 Mbit / s, zamiast szybkości przesyłania danych o wysokiej prędkości (HS) wynoszącej 480 Mbit / s. Uzyskanie tego efektu z portu USB2 musi być naprawdę trudne. Protokół HS USB 2.0 2.0 zostaje ustanowiony po dość skomplikowanych negocjacjach między urządzeniem a hostem, ponieważ początkowo każde urządzenie HS działa jako urządzenie FS.

Normalny proces wygląda następująco:

  1. Urządzenie z obsługą HS podciąga linię D + po otrzymaniu sygnału VBUS z rezystorem 1-1,5 kΩ do 3,3 V. Tak jak zrobiłoby to urządzenie FS.

  2. Port hosta wykrywa wysoki poziom D + =, a po minimum 100 ms opóźnieniu odbicia host potwierdza stan USB_RESET na magistrali, doprowadzając linie D + i D- do ziemi za pomocą sterowników 45 Ω przez 10 lub 50 ms.

  3. Jeśli urządzenie ma FS, nic nie robi i czeka do końca USB_RESET.

  4. Jeśli urządzenie jest HS, napędzałoby D-high za pomocą sterownika HS (źródło 18mA) przez około 1ms. Spowoduje to wytworzenie impulsu o amplitudzie około 800 mV (18 mA przy obciążeniu 45 Ω) o nazwie „Chirp-K”;

  5. Po wykryciu END Chirp-K, jeśli host jest w trybie HS, odsyła ten sygnał z powrotem (ten sam 18mA do własnego obciążenia 45Ω), teraz przez około 50µs. Jeśli jest to host FS, ignoruje Chirp-K i postępuje jak FS.

  6. Następnie, jeśli host jest w trybie HS, przełącza napęd na drut D +, tworząc „Chirp-J”, ponownie na 50µs;

  7. Host powtarza ten naprzemienny wzorzec 50µs przez cały czas trwania stanu USB_RESET (10ms na portach hub, 50ms na portach hub);

  8. Po trzech naprzemiennych chirp-K / J urządzenie rozpoznaje hosta jako HS i przełącza się w tryb HS. Oznacza to włączenie zakończenia HS na końcu urządzenia, co powoduje całkowitą oporność drutu na 22 Ω, a amplituda sygnału ćwierkania spada do 400 mV, do standardowego poziomu sygnalizacji HS.

  9. Host przechodzi z pakietami HS start-of-frame (SOF) i rozpoczyna proces wyliczania w trybie HS.

Teraz nikt nie wie, która część poruszania złamała ten protokół i sprawiła, że ​​host oznaczył port jako FS.

Ale..chenski
źródło
10
Akronimy: FSto „pełna prędkość” (USB 1.0, 12 Mbit / s), HSto „wysoka prędkość” (USB 2.0, 480 Mbit / s) i SSbyłoby to „SuperSpeed” (USB 3.0, 5 Gbit / s).
isanae
4
Zajmując się urządzeniami USB od 16 lat, muszę przyznać, że po raz pierwszy widzę spadek z HS do FS. Normalny protokół na poziomie sterownika wykorzystuje co najmniej dwie kolejne próby potwierdzenia USB_RESET w trakcie wyliczania. To najgorszy przypadek poruszenia przy pierwszym włożeniu, będzie jeden lub dwa dodatkowe USB_RESET zgodnie z opisanym protokołem, więc powrót nigdy nie występuje na poziomie użytkownika. Jednak niektóre współczesne hosty używają sygnalizacji „napędzanej napięciem” zamiast klasycznej sterowanej prądem, więc wszystkie klasyczne kombinacje różnych poziomów wykrywania progów zostają skręcone i może się zdarzyć.
Ale..chenski
21
@isanae Zastanawiam się, kiedy twórcy specyfikacji urządzeń będą mieli zdolność przewidywania, nazywając coś „wolną prędkością”.
wizzwizz4,
7
@ wizzwizz4, gdy celowo i umyślnie chcą, aby ich produkt zawiódł z powodu złego odbioru przez konsumentów.
Dan Neely,
10
@isanae - USB 1.0 obsługuje również „małą prędkość” jako 1,5 Mb / s.
Michael Karas
32

Po podłączeniu urządzenia do portu USB2 komputer najpierw próbuje negocjować połączenie przy użyciu protokołu danych USB2.
Gdy to się nie powiedzie, spróbuje ponownie przy użyciu protokołu danych USB1.

Domyślam się, że fizyczne połączenie (z powodu poruszania stykami) nie jest jeszcze stabilne podczas negocjacji USB2. Więc wraca do USB1, nawet jeśli urządzenie jest urządzeniem USB2.

Zabawne jest to, że system Windows zdaje sobie sprawę, że urządzenie powinno być w stanie obsługiwać prędkość USB2 (informacje otrzymywane ze sterownika), więc system Windows stwierdza, że ​​port USB, do którego został podłączony, był wolnym portem USB1. System Windows nie wydaje się sprawdzać, czy sam port jest zdolny do obsługi USB2.
I dlatego pojawia się nieco mylący komunikat o błędzie.

PS Właśnie wypróbowałem to sam na komputerze z systemem Windows 10: tam taki sam efekt.

Tonny
źródło
To samo czasami zdarza się z urządzeniem USB3 w porcie USB3 ...
davidbak
1
Nie. Szybkość portu USB zależy od sprzętu PRZED włączeniem dowolnego protokołu danych.
Ale..chenski
3
@AliChen Jak się to określa?
gronostaj
Zobacz moją pełną odpowiedź. Oprogramowanie inicjuje polecenie resetowania portu dopiero po zobaczeniu bitu „połączenie z portem” (przerwanie od niego); reszta odbywa się sprzętowo.
Ale..chenski
Z Wikipedii: „Urządzenia USB 2.0 używają specjalnego protokołu podczas resetowania, zwanego ćwierkaniem, aby negocjować tryb wysokiej przepustowości z hostem / hubem. Urządzenie obsługujące HS [USB 2.0] najpierw łączy się jako urządzenie FS [USB 1.0] ( D + osiągnął wysoki), ale po otrzymaniu RESETU USB (zarówno D +, jak i D sterowany przez NIS przez hosta przez 10 do 20 ms) ciągnie D-line wysoki, znany jako ćwierkanie K. ”
Nathan Osman
0

Możliwe, że włożono go na tyle wolno, że system Windows zakończył proces uzgadniania z kontrolerem i że w tym czasie kontakty potrzebne do komunikacji USB 2.0 nie dotykały. urządzenie, ponieważ nie będzie odpowiedzi na szynach oznaczonych jako obecne tylko na USB 2.0 i nowszych.

Stefan
źródło
Czy jest to częsta sytuacja w przypadku urządzeń USB w wersji <2.0, że nadal rozpoznaje połączenie i nie wybiera awarii?
user1306322
8
Może się to zdarzyć w przypadku urządzeń USB3 w porcie USB3, na którym najpierw podłączane są piny USB1 / 2. Ale nie wiem, jak to się może stać z USB1 / USB2. Oba wykorzystują tylko 4 piny, jedną parę do zasilania, jedną parę do danych.
Hennes
@hennes Zgadzam się. Nie ma fizycznego rozróżnienia między USB 1 a 2.
Tonny
1
@Tonny Jestem pewien, że widziałem pewne różnice na niektórych niejasnych markowych urządzeniach USB 1.1 i 2.0, ale przyznaję, że prawdopodobnie się mylę.
Stefan
1
@Stefan Na początku USB było wiele tanich zrywalnych złączy, które miały złe wymiary dla styków. Widziałem niektóre, gdzie każdy z 4 styków we wtyczce miał inną długość i grubość. Nadal trzymam parę w biurze, aby pokazać ludziom, kiedy rozmawiamy o zaletach i wadach zamawiania tanich kabli.
Tonny