Jakie ustawienia wprowadzic w rejestrze i CMD zeby windows i usb pracowaly synchronicznie
DisableSelectiveSuspend
, EnhancedPowerManagementEnabled
, ew. HcDisableSelectiveSuspend
. reg add …
, powercfg …
, okazjonalnie devcon
do resetu magistrali.Dlaczego „synchronizacja” bywa zaburzona
• USB host w Windows generuje ramki SOF/µSOF sprzętowo co 1 ms/125 µs; opóźnienia użytkownik zwykle odczuwa przez:
– selektywne usypianie portu,
– przełączanie zegara w tryb oszczędny (ASPM/L1.2),
– przestarzałe sterowniki host-kontrolera lub urządzenia,
– zbyt agresywną politykę zapisu (Quick removal).
Wpisy rejestru (REGEDIT / CMD)
a) Globalne wyłączenie Selective Suspend:
reg add HKLM\SYSTEM\CurrentControlSet\Services\USB /v DisableSelectiveSuspend /t REG_DWORD /d 1 /f
b) Wyłączenie Enhanced Power Management dla konkretnego urządzenia (po znalezieniu jego klucza w {36fc9e60-c465-11cf-8056-444553540000}
):
reg add HKLM\SYSTEM\CurrentControlSet\Control\Class\{36fc9e60-c465-11cf-8056-444553540000}\000N /v EnhancedPowerManagementEnabled /t REG_DWORD /d 0 /f
c) (Sterowniki Intela) Wyłączenie selective suspend na poziomie host-kontrolera:
reg add HKLM\SYSTEM\CurrentControlSet\Services\iusb3xhc /v HcDisableSelectiveSuspend /t REG_DWORD /d 1 /f
d) Uwidocznienie opcji w GUI (jeśli chcemy sterować planami zasilania):
reg add HKLM\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\ \
245d8541-3943-4422-b025-13a784f6c7b0\48e6b7ab-50f1-4287-a9f9-64d5269df0a8 \
/v Attributes /t REG_DWORD /d 2 /f
e) Ładowanie sterownika masowej pamięci przy starcie (jeżeli urządzenie nie wstaje po resume):
reg add HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR /v Start /t REG_DWORD /d 0 /f
Komendy powercfg (szybciej niż GUI)
:: plan bieżący
powercfg -setdcvalueindex SCHEME_CURRENT SUB_USB USBSELECTSUSPEND 0
powercfg -setacvalueindex SCHEME_CURRENT SUB_USB USBSELECTSUSPEND 0
powercfg -setactive SCHEME_CURRENT
Reset magistrali / przeładowanie sterowników – przydatne w diagnostyce
devcon remove "*USB*" & devcon rescan
(DevCon jest częścią Windows Driver Kit).
Polityka zapisu dla dysków USB (lepsza wydajność kosztem konieczności „Bezpiecznego usuwania”):
Menedżer urządzeń → Stacje dysków → Właściwości → Zasady → „Lepsza wydajność”
lub z linii poleceń:
reg add HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR\...\Device Parameters /v WriteCacheEnableOverride /t REG_DWORD /d 1 /f
USB używa schematu ramkowania SOF, a synchronizacja izochroniczna odbywa się w warstwie sprzęt ↔ kontroler ↔ sterownik. System może jedynie przeszkadzać mechanizmami oszczędzania energii; stąd kluczowa rola wyłączenia selektywnego wstrzymywania i agresywnych polityk C-state/L-state.
– Audio USB (interfejsy, mikrofony) – eliminacja trzasków.
– Rejestratory danych/DAQ – stabilny ciągły strumień.
– Dyski zewnętrzne – brak „chwilowych zamrożeń” i wyższe transfery.
DisableSelectiveSuspend=1
– blokuje przejście urządzenia w stan U1/U2 przez system, ale nie zmienia zachowania firmware urządzenia. EnhancedPowerManagementEnabled=0
– omija reguły Windows dotyczące obiektów „idle-ready”, wymuszając starą, prostszą obsługę. powercfg -devicequery wake_armed
pomagają sprawdzić, czy dane urządzenie budzi/zatrzymuje system. Sama magistrala USB jest już sprzętowo „zsynchronizowana”; problemy użytkownika zwykle wynikają z mechanizmów oszczędzania energii i nieoptymalnych sterowników. Wyłączenie Selective Suspend oraz powiązanych funkcji (wpisy DisableSelectiveSuspend
, EnhancedPowerManagementEnabled
, odpowiednie ustawienia powercfg
) wraz z aktualizacją sterowników i dbałością o sprzęt rozwiązuje większość przypadków „rozsynchronizowania” Windows ↔ USB.