úterý 29. března 2011

ASUS M2N VM-DH: uspat a probudit se

Před lety jsem si koupil základní desku do počítače od firmy ASUS, jmenovala se (vlastně ještě pořád se jmenuje, pořád slouží) M2N VM-DH. To DH značí Digital Home a to mě na ní fascinovalo - měla vestavěnou na tehdejší dobu výkonnou grafiku nVIDIA 6150, WiFi a hlavně jako příslušenství měla infračervené dálkové ovládání, které dokonce umělo počítač zapnout z vypnutého stavu! Čili to vypadalo jako skvělý základ pro multimediální stroj (v té době jsem teprve začínal koketovat s představou něčeho, co časem vykrystalizovalo v MythTV).

Ačkoliv v MS Windows se tato deska (resp. počítač na ní postavený) uměla usnout (suspend) a zase se probudit v pořádku, tak v Linuxu se mi to NIKDY nepodařilo. Za celé dlouhé roky, kdy jsem to trápil v různých verzích linuxového kernelu i distribucí, se nikdy neprobudila v pořádku, tj. vždycky buďto vytuhla při probouzení, nebo alespoň byl nefunkční obraz (černá tma, monitor nedetekoval signál). Zkoušel jsem všechny možné triky, ale nikdy jsem to neporazil.

Nedávno jsem si usmyslel, že když je problém po probuzení v grafice, tak ta on-board grafika asi stojí za starou bačkoru a pořídil jsem si výkonnou přídavnou grafiku nVIDIA 210 do PCI-E slotu. Všechno jelo dobře, jen probouzení z uspání se stále nedařilo. Nepomohl ani nejposlednější update BIOSu. Zlomil jsem nad tím hůl.

Teď jsem se ale rozhodl pro akci Kulový blesk, spočívající ve velké rošádě domácích počítačů. Jedním z cílů akce je postavit samostatný MythTV backend a umístit ho někam mimo obytné místnosti, jelikož hluk z Tenoru se mi nikdy nepodařilo zcela odstranit a jak větráky stárnou, a harddisky v MythTV stroji přibývají, hladina hučení/šumění/občas_vrzání se v obýváku pořád zvyšuje a je potřeba s tím už rázně zatočit. Potřebuju tedy postavit samostatný server, ale z čeho?

Opět jsem si vzpomněl na svůj pracovní stroj, který by díky integrované grafice byl skvělý základ pro server hučící někde ve sklepě. Dal jsem mu znovu šanci a snad podesáté ho začal cvičit na uspávání a probouzení. Vzdal jsem probouzení s obrazem - u serveru stejně nebude potřeba, a jal se ho cvičit alespoň na obyčejné, ale spolehlivé probuzení z uspání do paměti, a to magickým paketem poslaným po ethernetové síti.

V nainstalovaném Ubuntu 10.10 se nedařilo vůbec - při probouzení vytuhl celý kernel. V aktuálním Debianu 6.0 jsem probudit mohl, ale pouze tlačítkem Power na skříni - klávesnicí ani po síti se nedařilo. Navíc šlo probudit stroj jen jednou, podruhé už to nešlo, skript pm-suspend zůstal už při uspávání někde viset. Ve starším (ale stále báječném) Debianu 5.0 probouzení tlačítkem Power fungovalo spolehlivě - samozřejmě stále bez obrazu, ale na ten už jsem rezignoval. Bohužel pro nový MythTV 0.24 potřebuji nový Debian 6.0 s nejnovějším Qt... Jak tohle vyřeším? Starý kernel v novém Debianu? To nevypadá dobře...

Dost zoufalý jsem se jal hledat, jak je to s tím probouzením ve světě. Zlatý Google nezklamal a našel nějakého panáčka, který právě tuhle desku naučil uspávat a probouzet se tím, že v BIOSu popadl nastavení "Plug and Play OS installed" a VYPL HO! Velmi nadějná stopa! Ovšem jak ironické - tato volba je v BIOSu kvůli MS Windows 95 (první plug&play OS od Microsoftu), Linux je už mnoho let (někdy od verze 2.4) samozřejmě také plug&play. Nicméně právě tato deska tu volbu pro Linux zjevně potřebuje vypnout - nejspíš ty integrované periférie neumí kernel dodneška pořádně zinicializovat... Nadšeně jsem přenastavil BIOS a zopakoval uspávací triatlon, bohužel bez úspěchu - Ubuntu tuhé rovnou, Debiany se chovaly stejně jako dříve. Jak dál s tím serverem tedy?

Dnes ráno jsem se rozhodl konat i přes stávající nejistotu a začal tím, že jsem vyndal z počítače přídavnou grafiku. Tím jsem ho ale rozlobil natolik, až jsem ztratil obraz i na integrované grafice. Když jsem to zkoumal, zjistil jsem, že ta integrovaná grafika už je tak naštvaná, že vůbec nemluví s novým monitorem přes VESA DDC protokol, nic o něm neví, nezná jeho nádherné Full HD rozlišení, zkouší na něj VGA 640x480, monitor se urazí a obraz není žádný. Musel jsem na ni pořádně kleknout, aby se umoudřila - přes vrácenou externí grafiku jsem z monitoru vymáčkl EDID data, uložil do souboru, /etc/X11/xorg.conf instruoval tak, aby integrovaná grafika načetla EDID data ze souboru, tím pochopila, jak krásný monitor je připojený a tak jsem konečně získal zas normální obraz.

To mě velmi povzbudilo a začal jsem znovu, pojedenácté, zkoušet to uspávání. V nainstalovaném Ubuntu 10.10 jsem do /proc/acpi/wakeup jsem jen tak z voleje naechoval "PS2K", na příkazové řádce zadal "sync; sync; pm-suspend", pomodlil se k bohům výpočetní techniky a odpálil to celé Enterem. Počítač okamžitě usnul, tak jsem vydržel chvíli bez dechu a pak jsem jemně klepl do mezerníku klávesnice - a voilá, počítač se probudil i s obrazem!!! Naprosto neuvěřitelný úspěch po letech beznaděje! Přičemž vlastně vůbec nechápu, co se změnilo oproti minulým pokusům - aha, snad jen to nastavení v BIOSu, Plug&Play OS. Nicméně to jsem přece zkoušel už jednou a nepomohlo to, možná souběh s tou přídavnou grafikou? Nevím, neřeším, nepřepínám a jedu!

Pln euforie jsem zkusil ještě jednu drobnost: naechovat MMAC do wakeup, jestli to náhodou nevyřeší probouzení po síti, když ten PS2K vyřešil probouzení klávesnicí. A fakt, počítač se probudil i magickým paketem jako by se nechumelilo!

Souhrn kroků vedoucích k vysněnému cíli:
1) v BIOSu musí být volba "Plug&Play OS installed: NO"
2) integrovaná grafika musí být v dobré náladě, xorg.conf odkazovat na správná EDID data
3) "echo PS2K > /proc/acpi/wakeup" pro probouzení klávesnicí
4) "echo MMAC > /proc/acpi/wakeup" pro probouzení Wake-on-LAN paketem po síti
5) "sync; sync; pm-suspend", pomodlit a jede to! (v Ubuntu 10.10, Debiany jdu teprve zkusit)

Jsem opojen vítězstvím nad hmotou a nenávistí a kola velkého Kulového blesku se roztáčejí...

Žádné komentáře:

Okomentovat