Řešení problému s USB 2.0 a vyšší spotřebou procesoru
Kapitoly článků
V čem to vězí?
Nejprve si povězme, jak vlastně tento problém vzniká. Chyba je kdesi v USB 2.0 ovladači ve Windows XP. Ten nechává při zapojeném USB 2.0 zařízení (které ani nemusí mít nainstalovaný ovladač nebo může být ve správci zařízení zakázáno) trvale běžet komponentu „asynchronous scheduler“ (asynchronní plánovač), díky čemuž je neustále přistupováno do operační paměti, což má za následek, že procesor nikdy nepřejde do úsporného režimu, známého u procesorů Intel jako C3 (těchto stupňů „spícího“ režimu je více a třeba Intel Core Duo má navíc vedle C4 i DC4 - Enhanced Deeper Sleep, ve kterém vysype L2 cache do operační paměti a přestane ji používat, přesněji kontrolovat její integritu dat). Podobné šetřící režimy však naleznete i u jiných procesorů včetně konkurenčních AMD. Nemáme však nyní na mysli technologie, které snižují dynamicky frekvenci procesoru, jako jsou u Intelu EIST a u AMD Cool’n’Quiet, ty celkem v pohodě fungují i se zapojeným USB 2.0 zařízením. Máme nyní na mysli podobné „polospící“ režimy, jako jsou právě C3 u procesorů Intel. Např. u procesorů AMD Athlon XP-M (případně se to dá i u Athlonů XP) se procesor při nezměněné frekvenci také částečně vypíná, není-li vytížen (prakticky jde o totéž, co „spící“ stavy u procesorů Intel).
Potíž je dále i v tom, že problém se neodstraní pouhým zakázáním USB 2.0 zařízení ve správci zařízení. Dokonce procesor nedostane šanci se přepnout do úsporného stavu ani v případě, že vložené zařízení nemá nainstalován ovladač. Velkým problémem je to pak u některých notebooků Asus (W5F a W5A), které mají integrovánu kameru, jež je vnitřně připojena právě přes USB 2.0 rozhraní. Takovou kameru prostě neodpojíte.
Dlužno dodat, že problém se týká výhradně USB 2.0 zařízení, nikoli USB 1.1. Existují údajně i taková USB 2.0 zařízení, kterých se problém netýká. Ta podporují šetřící režim „Selective Suspend“, který dovolí operačnímu systému je vypnout, nejsou-li právě potřeba. Prý je jich však pomikru.
Řešení: Úprava v registru
Oprava od Microsoftu, která je na veřejně nedostupném „Premier Supportu“ už dobře od loňského července, spočívá v jednoduché úpravě registru a kdosi ji 28. ledna jednoduše přepsal do diskusního fóra na serveru slashdot.com. Stačí ve větvi HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USB vytvořit novou „hodnotu DWORD“, nazvat ji EnIdleEndpointSupport, naplnit číslem 1 a restartovat systém. Kdykoli si USB ovladač po startu systému všimne této položky, deaktivuje v případě vloženého právě nevyužívaného USB 2.0 zařízení „asynchronous scheduler“ a procesor tak může v klidu využívat šetřící C3 a podobné stavy. Pro jednoduchost jsme pro vás připravili úpravu registru, kterou stačí zkopírovat do nového textového souboru, tomu pak změnit příponu na .reg a spustit:
REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usb] "EnIdleEndpointSupport"=dword:00000001
Celá věc má jedinou vadu na kráse, která bude nejvíce překážet právě na noteboocích, kde se tolik hledí na spotřebu. Jakmile přepnete počítač (notebook) do režimu spánku (nebo úsporného režimu) a opět probudíte, oprava přestane fungovat a USB 2.0 zařízení opět zapříčiní zvýšenou spotřebu energie. Na tento problém existují v tuto chvíli dva léky. Jeden z nich je opětovný restart systému. Jakmile systém nastartuje od začátku, bude úprava opět účinná. A se druhým vás v průběhu tohoto povídání ještě seznámíme. Jeho kódové jméno je „trik č. 23“.