Odpowiedz

Wreszcie rozwiązano problem z rozłączaniem urządzeń USB na Linuksie?

 
Portator
Redaktor

Liczba postów: 10.980
Post: #1
Information 

Wreszcie rozwiązano problem z rozłączaniem urządzeń USB na Linuksie?


Niejeden użytkownik Linuksa klął na producentów przeróżnych urządzeń peryferyjnych podłączanych przez USB, w przekonaniu, że problemy z ich częstym rozłączaniem wynikają bądź to z kiepskiej jakości sterowników, bądź nędznej elektroniki. Dało się to odczuć przy wielu pendrive'ach, które na Linuksie działały znacznie gorzej niż na Windows, ale też i takich urządzeniach jak skanery, które potrafiły w trakcie skanowania nagle się rozłączyć. Ale w wielu wypadkach to nie producenci są winni. To w podsystemie USB linuksowego jądra tkwił błąd, który powodował niewłaściwe działanie sprzętu.

Problem zauważyła dopiero Sarah Sharp z Intela, pełnoetatowa opiekunka sterownika xHCI, pracująca też nad obsługą USB 3.0. We wpisie na Google+ przedstawia szczegóły swojego odkrycia. Otóż najwyraźniej Linux obsługiwał USB 2.0 niezgodnie ze standardem, zgodnie z którym oprogramowanie systemowe odpowiadające za obsługę interfejsu szeregowego powinno zagwarantować urządzeniu 10 ms na wznowienie czasu odzyskiwania (resume recovery time, TRSMRCY), podczas którego nie powinno się wysyłać żadnych sygnałów na dany odcinek magistrali.
Wreszcie rozwiązano problem z rozłączaniem urządzeń USB na Linuksie?
Sharp uważa, że programiści systemu zapewne rozumieli to jako przyzwolenie na próbę dostępu do urządzenia po odczekaniu 10 ms. Sęk w tym jednak, że w specyfikacji wartości zmiennych w tabeli załączonej do dokumentacji USB, 10 ms to dla TRSMRCY wartość minimalna. Oznacza to, że wiele portów może być w stanie wznowienia dłużej niż przez 10 ms, a jeśli w tym czasie jądro systemu będzie próbowało coś z podłączonym urządzeniem robić przez demona khubd, to albo się ono rozłączy, albo zgłosi błędy transmisji.

Według przeprowadzonych przez programistkę Intela testów, z 227 zdarzeń wychodzenia ze stanu uśpienia inicjowanych przez mysz i klawiaturę USB, 163 zajęły mniej niż jedną mikrosekundę, 47 zmieściło się w czasie poniżej 10 ms, ale 17 zajęło ponad 10 ms (a najdłuższe odnotowane opóźnienie wyniosło 17 ms). Tak więc w 8% wypadków zbyt mała wartość zmiennej określającej czas oczekiwania doprowadzała do rozłączeń z urządzeniami. Problem ten daje się najwyraźniej odczuć na chromebookach – Chrome OS bardzo agresywnie zarządza oszczędzaniem energii na USB, a rozłączenia z urządzeniami powodują zauważalne dla użytkownika migotanie interfejsu.

Problem tymczasowo rozwiązano, podnosząc po prostu wartość parametru TRSMRCY do 20. Jednak za wcześniej jeszcze, by odtrąbić sukces, gdyż rozwiązanie tego problemu ujawniło inne. pani Sharp zasugerowała właśnie, że odkryty przez nią błąd dotyczy wyłącznie kontrolera hosta xHCI, i nie jest przyczyną rozłączeń w starszym kontrolerze EHCI.

Więcej informacji można znaleźć na liście dyskusyjnej linux-usb. Przygotowana przez panią Sharp łatka powinna znaleźć się w wersji 3.11 jądra, której wydanie nastąpi najpewniej już we wrześniu tego roku.

Za: dobreprogramy.pl

[Obrazek: 2089620800_1406976151.png]
Windows ❼ Forum

23.08.2013 14:52

Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz

Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
News Windows 10 zainstalowany na 300 mln urządzeń Portator 0 831 06.05.2016 04:18
Ostatni post: Portator
News Windows 10 na 270 mln urządzeń - będzie duża aktualizacja Portator 0 967 31.03.2016 05:37
Ostatni post: Portator
News Znaleziono poważną lukę w Linuksie Portator 0 960 21.01.2016 07:03
Ostatni post: Portator
News Apple przygotowuje własny układ GPU dla urządzeń mobilnych Portator 0 945 11.12.2015 06:36
Ostatni post: Portator
News iOS 9 kontroluje pracę już 66% urządzeń Apple Portator 0 755 06.11.2015 06:09
Ostatni post: Portator
News Bing wreszcie zaczyna zarabiać Portator 0 701 25.10.2015 05:35
Ostatni post: Portator
« Starszy wątek | Nowszy wątek »

Temat został oceniony na 0 w skali 1-5 gwiazdek.
Zebrano 1 głosów.