Zpět

Profile Switch (PSwitch)

U svého notebooku Asus M6VA jsem řešil otázku přepínání profilů napájení. Program Power4Gear mi z různých důvodů nevyhovoval, nakonec jsem skončil u RightMark CPU Clock Utility (dále RMClock). Bylo mi však líto, že s tímto programem není možné využít hardwarové tlačítko ("panáček") pro přepínání jeho profilů a že není možné jedinou operací změnit zároveň profil procesoru a nastavení grafické karty PowerPlay.

Druhou část mého problému jsem vyřešil vytvořením programu PSwitch. Tato utilita se spouští s parametrem, který udává profil k aktivování. Kromě aktivování profilu také dokáže zobrazit informační okno utility ATK0100 o vybraném profilu. Programu je přípustné buď přímo zadat číslo profilu nebo klíčová slova "next" (pro následující profil) či "current" (pro znovuaktivování aktuálního profilu).

PSwitch se konfiguruje pomocí INI souboru umístěného ve stejném adresáři jako program. V části [Main] se nastaví základní údaje - počet profilů a které úkony provést (profil RMClocku, profil ATI Catalystu, obrázek ATK0100). Jednotlivé profily pak obsahují údaje, co aktivovat. AtkOsdImageSet a AtkOsdImageIndex odkazuje na obrázek utility ATK0100 (viz obrázky). RMClockProfile je číslem profilu v menu RMClocku, tj. v současné verzi 0=NoManagement, 1=PowerSaving, 2=MaximalPerformance, 3=PerformanceOnDemand. AtiCatalystProfile je názvem profilu vytvořeného v Catalyst Control Center, který se má aktivovat.

Ikony ATK0100 OSD, sada 92
Ikony ATK0100 OSD, sada 92

Ikony ATK0100 OSD, sada 108
Ikony ATK0100 OSD, sada 108

Dalším logickým krokem bylo namapování příkazu "pswitch next" na klávesu "panáčka". Bohužel součást HControl utility ATK0100 neumožňuje namapování libovolného programu, spolupracuje pouze s Power4Gear. Byla proto nutná úprava tohoto programu. Vycházel jsem z nejnovější verze, dostupné na FTP Asusu. Po disassemblování můžeme na adrese 00408c28 nalézt tabulku obsluh zpráv zasílaných od systémového driveru. Tlačítko "panáčka", které původně ukazovalo na 0040783d, kde je obsluha Power4Gear, lze tedy lehce přemapovat jinam. Já jsem využil obsluh kláves "Sx_KEY", které na modelu M6VA evidentně nejsou. "Panáčka" jsem tedy namapoval na S2_KEY s entry pointem 00405f70, při příležitosti úprav jsem také změnil klávesu, kterou se spouští Media Player (00407bd9), na S1_KEY (00405e12). Nastavení programů spouštěných pomocí S1_KEY a S2_KEY je možné v registru, klíč HKLM\ATK0100. Mimochodem, je možné přemapovat také internetovou klávesu z defaultního prohlížeče na libovolný program, příslušnou hodnotou je INTERNET_KEY.

V archivu ke stažení je jednak program PSwitch včetně zdrojových kódů v Delphi, dále ukázka konfiguračního INI souboru a upravená verze programu HControl utility ATK0100. PSwitch je nejjednodušší nahrát do adresáře k ATK0100, tj. c:\windows\atk0100. Před jeho přepsáním je nutné ve správci úloh ukončit proces HControl. Úpravy registru jsou vidět v atk.reg, pokud nepoužíváte WinAmp, můžete S1_KEY přepsat k libovolnému jinému programu. Kromě nastavení PSwitche a patchnutí HControlu je dále nutné správně nakonfigurovat RMClock a v ATI CCC vytvořit profily, v jednom PowerPlay na Optimal Battery Life (pro všechny zdroje), v druhém na Optimal Performance. Podrobnosti a návody lze nalézt zejména na M6VA fóru techsupport.sk, k nastavení RMClocku např. zde. Další nepostradatelnou utilitou pro M6VA je samozřejmě také SpeedFan pro regulaci ventilátorů.

Použité programy a utility: Borland Delphi 5, Win32Dasm v8.93, Resource Hacker, WinSight32, PSPad

Download utility PSwitch 1.0 a patchnutého HControl (ZIP, 80 kB) (starý)

Update 5.6.2006: PSwitch trochu přepsán, OSD se nyní zobrazuje před aktivováním profilu, přidán parametr pro pouhé zobrazení OSD z příkazové řádky (např. "pswitch osd 92 3"), aktivace konkrétního profilu přes parametr "profile". V HControl přemapována klávesa Fn+F2 (Wireless, původně 00408088) na uživatelsky definovatelný program S3_KEY (00406029).

Download utility PSwitch 1.1 a patchnutého HControl (ZIP, 93 kB) (starý)

Doporučuji také nahlédnout na PanKovy stránky, zabývající se úpravami ikon AtkOsd, zobrazováním stavu baterie a dalšími věcmi, které souvicí s ATK0100: Show OSD a upravená sada ikon.

Update 9.7.2006: Vzhledem k tomu, že Sx_KEY jsou mapovány na klávesové zkratky Fn+1 až Fn+5, přemapoval jsem mírně klávesy v HControl. Nyní "panáček" odkazuje na CHAMELEON_KEY (00406498) a Media Player na S5_KEY (0040619b) - jiné speciální klávesy bohužel nebylo možné použít. I tak ale zůstávají S1_KEY až S4_KEY k libovolnému využití - jejich konfikurace je možná v registru. Přemapování klávesy Fn+F2 bylo odstraněno.

PSwitch doznal rozsáhlejších úprav díky PanKovi. Především spolupracuje s novou verzí RMClocku 2.1, kterou je tedy nutno nainstalovat. Dále je nejdříve zobrazen a reaktivován aktuální profil a teprve do dalším stisknutí tlačítka je aktivován následující. Tuto možnost lze vypnout pomocí položky ShowBeforeSwitch v INI souboru, prodleva, po kterou čeká na stisk klávesy pro aktivování dalšího profilu, je nastavitelná přes SwitchDelay. Poslední změnou je rozlišování, zda notebook běží na baterii nebo na síť - RMClock se při změně napájení může přepnout na jiný profil, aktuální profil RMClocku a PSwitche si tedy neodpovídaly.

Download utility PSwitch 1.2 a patchnutého HControl (ZIP, 94 kB) (starý)

Update 8.9.2006: Úpravy PSwitche má tentokráte na svědomí Masolopotor, i když jsem jím zaslaný kód dost upravil. Konečně spolehlivě funguje, že po stisku panáčka se nejdříve zobrazí profil a teprve po nastavené době aktivuje. Pro spouštění PSwitche přibyl v balíku program run z CygUtils - HControl totiž čeká na dokončení programu, což je pro PSwitch problém, proto je nutné ho spouštět asynchronně. Přibyly podrobné komentáře k INI a REG souborům. PSwitch dále umožňuje spolupracovat jak s RMClockem 2.05, tak i 2.1, nová verze je však s M6VA velmi problémová při běhu na baterie. Patch HControlu je stejný jako ve verzi 1.2.

Download utility PSwitch 1.3 a patchnutého HControl (ZIP, 141 kB) (starý)

Update 9.9.2006: Opraveno několik nedostatků, především u funkce ShowBeforeSwitch - viz komentáře v INI souboru. Nyní, je-li ShowBeforeSwitch=1, se po stisku panáčka nejdříve zobrazí aktuální profil, teprve po dalších stiscích cyklují ostatní profily.

Utilita Asus ATK0100 verze 060324 (FTP Asus) (mirror) (ZIP, 745 kB)
Download utility PSwitch 1.4 a patchnutého HControl (ZIP, 141 kB) (starý)

Instalace: Po rozchození Asusáckého ATK0100 ukončete ve správci úloh procesy HControl.exe a AtkOsd.exe. Nakopírujte obsah archivu do složky c:\WINDOWS\ATK0100 a spusťte nový HControl. Dále naimportujte do registru nastavení z atk.reg (po případných úpravách) a nastavte k obrazu svému pswitch.ini. Potřebujete také nastavený RMClock a vytvořené profily v Catalystech.

Update listopad 2006: HControl upravený z nové verze ATK0100 označené 060823. Vytvořena integrovaná verze poslední verze PSwitche (1.4), patchlého HControl a PanKova AtkOsd do verze 060823. Použitelná i na čistou instalaci Windows. PSwitch.ini po nainstalovaní upravit dle svého, do registru to standardně zapíše přímo instalátor, ale do složky ATK0100 do Win se nakopíruje původní atk.reg, které se dá použít na rychlé úpravy.

Integrovaná verze ATK0100 v060823 + PSwitch 1.4 + PanKovo AtkOsd (ZIP, 869 kB) (aktuální)

Update březen 2007: Do utility Profile Switch přidána podpora nových verzí ATI Catalystů (jiné umístění a parametry cli.exe). V archivu ke stažení je samostatná nová verze 1.5, HControl pro M6VA lze použít z integrované verze výše. Také byla vytvořena úprava HControl z balíku ATK0100 pro notebook Asus F2J. Autorem změn v PSwitchi a úprav pro Asus F2J je Ondřej Smola.

Download utility PSwitch 1.5 (ZIP, 59 kB) (aktuální)
Patchnutý HControl pro Asus F2J, vychází z 1043.2.15.64 (ZIP, 48 kB)

Update prosinec 2007: Při přeinstalování systému jsem aktualizoval RMClock na verzi 2.30.1 a zjistil, že byla opět změněna "báze". Nový údaj je 32783 ($800F), tj. správný řádek v INI souboru PSwitche je RMClockBase=32783.