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”?
Odpowiedzi:
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:
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.
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.
Jeśli urządzenie ma FS, nic nie robi i czeka do końca USB_RESET.
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”;
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.
Następnie, jeśli host jest w trybie HS, przełącza napęd na drut D +, tworząc „Chirp-J”, ponownie na 50µs;
Host powtarza ten naprzemienny wzorzec 50µs przez cały czas trwania stanu USB_RESET (10ms na portach hub, 50ms na portach hub);
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.
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.
źródło
FS
to „pełna prędkość” (USB 1.0, 12 Mbit / s),HS
to „wysoka prędkość” (USB 2.0, 480 Mbit / s) iSS
byłoby to „SuperSpeed” (USB 3.0, 5 Gbit / s).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.
źródło
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.
źródło