Fedora Core 3 na notebooku Asus M6B00R

Volba toho správného notebooku je velmi těľká věc. Zvláątě, máte-li nějakým způsobem omezený rozpočet. Často je nutné přistoupit k nejrůznějąím kompromisům a vybírat z nabídky méně renomované firmy sestavu, jeľ splňuje za přísluąný peníz vąechny poľadavky. Ve stejné situaci jsem se v březnu ocitl i já. Po dlouhém prohlíľení nejrůznějąích recenzí jsem se rozhodl ke koupi notebooku Asus M6B00R, který se v inkriminované době dal pořídit za necelých 40 000,- Kč (pracovníci rozpočtových organizací jistě pochopí, proč). Stroj splňoval přesně mé poľadavky: vybaven Centrinem disponujícím procesorem na taktovací frekvenci 1,6 GHz, samozřejmě bezdrátovou kartou (Intel 2200 802.11b/g), 512 MB paměti, 60 GB pevným diskem a vypalovačkou DVD+/-R(W). Navíc se dá pořídit bez Windows (a cena je pak skutečně o jednu zbytečnou licenci niľąí). Faktem vąak je, ľe člověk za rozhodnutí instalovat pouze Linux platí tím, ľe si musí systém do značné míry upravit, aby fungovalo vąe, co potřebuje.

Hned na úvod musím podotknout, ľe notebook můľete vyuľít taktéľ jako přehrávač CDček a to i v případě, ľe je vypnutý. Posunutím tlačítka vlevo vepředu se ve vypnutém stavu aktivuje mód CD přehrávače, kdy můľete vysouvat/zasouvat CD mechaniku, pomocí kláves na levé straně CD ovládat a dokonce fungují kombinace Fn+F10 aľ Fn+F12 na ovládání hlasitosti. V tomto módu je přístroj zřejmě schopen přehrávat pouze audio CD, ľádnou z mých kolekcí MP3 neakceptoval.

Celkový pohled na otevřený notebook Pohled shora na zavřený notebook
Zadní část -- zleva: vstup napájení, paralelní port, VGA port, TV-out a 4x USB Pravobok -- zleva: modem, ethernet, firewire, PCMCIA (dole), IrDA a čtečka karet (nad PCMCIA), tlačítka ovládání CD přehrávače a audio vstup/výstup

Protoľe se v nejrůznějąích fórech mnoľí dotazy na zprovoznění Linuxu na noteboocích řady M6, rozhodl jsem se napsat krátký návod s postupem krok za krokem. Odchován RedHatem rozhodl jsem se nainstalovat distribuci Fedora Core 3 (nicméně postupy zde popsané snad půjdou aplikovat i v jiných distribucích). Notebook má totiľ svá jistá specifika.

Instalace

Kdo by si myslel, ľe vloľí instalační CD/DVD do mechaniky, nabootuje a vąechno tak nějak pojede, můľe narazit na dosti zajímavý problém. Empiricky zjiątěno totiľ grafická karta (ATI Mobility Radeon 9100 IGP) nemá z nějakých záhadných důvodů ráda VESA framebuffer, s nímľ s oblibou instalační CD RedHatu/Fedory bootují. Instalátor se pak nedostane přílią daleko. Do bootovacího promptu je třeba pouľít:

linux nofb

Na daląí problémy jsem při instalaci nenarazil. Distribuce pak byla samozřejmě pomocí yum update updatována o nejnovějąí balíčky.

Jádro, ACPI

Notebooky Asus řady M6 (a moľná i jiné) mají svoje zajímavé specifikum: chybné ACPI. Z toho, co jsem vyrozumněl z internetových fór, ACPI-BIOS je kompilován kompilátorem od Microsoftu, který nemá problémy zkompilovat i ne zcela korektní kód. A proto např. funkce vracející stav baterie není zcela korektní. Linux ovąem očekává, ľe ACPI je zcela v pořádku. V logách se pak objeví pár zoufalých kernelových hláąek a dobrá polovina ACPI funkcí nefunguje:

ACPI: Found ECDT
Completing Region/Field/Buffer/Package initialization:.........................................................................................................
Initialized 24/25 Regions 22/22 Fields 28/28 Buffers 31/31 Packages (863 nodes)
Executing all Device _STA and_INI methods:......................................................
54 Devices found containing: 54 _STA, 3 _INI methods
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
PCI: Ignoring BAR0-3 of IDE controller 0000:00:14.1
PCI: Transparent bridge - 0000:00:14.4
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT]
ACPI: Embedded Controller [EC0] (gpe 6)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P2._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 *4 5 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 *10 11 12 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
exoparg2-0436 [13] ex_opcode_2A_1T_1R    : Index value (14) beyond end of buffer (14)
 psparse-1138: *** Error: Method execution failed [\MCTH] (Node ddf05ee8), AE_AML_BUFFER_LIMIT
 psparse-1138: *** Error: Method execution failed [\OSFL] (Node ddf05f28), AE_AML_BUFFER_LIMIT
 psparse-1138: *** Error: Method execution failed [\_SB_.RMEM._CRS] (Node ddf0dca8), AE_AML_BUFFER_LIMIT
  uteval-0158: *** Error: Method execution failed [\_SB_.RMEM._CRS] (Node ddf0dca8), AE_AML_BUFFER_LIMIT
pnp: PnPACPI: METHOD_NAME__CRS failure for PNP0c01
pnp: PnP ACPI: found 12 devices
Linux Kernel Card Services
  options:  [pci] [cardbus] [pm]
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Using ACPI for IRQ routing
** PCI interrupts are no longer routed automatically.  If this
** causes a device to stop working, it is probably because the
** driver failed to call pci_enable_device().  As a temporary
** workaround, the "pci=routeirq" argument restores the old
** behavior.  If this argument makes the device work again,
** please email the output of "lspci" to bjorn.helgaas@hp.com
** so I can fix the driver.
pnp: 00:06: ioport range 0x228-0x22f has been reserved
Machine check exception polling timer started.
Initializing Cryptographic API
evregion-0405: *** Error: Handler for [EmbeddedControl] returned AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.RDC3] (Node ddf16528), AE_TIME
 psparse-1138: *** Error: Method execution failed [\ECIO] (Node ddf18ae8), AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.ACPS] (Node ddf16668), AE_TIME
 psparse-1138: *** Error: Method execution failed [\ACPS] (Node ddf0d528), AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.AC0_._PSR] (Node ddf145e8), AE_TIME
 acpi_ac-0098 [06] acpi_ac_get_state     : Error reading AC Adapter state
evregion-0405: *** Error: Handler for [EmbeddedControl] returned AE_TIME
 dswexec-0446 [15] ds_exec_end_op        : [Store]: Could not resolve operands, AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.SMBR] (Node ddf18e68), AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.BIF0] (Node ddf16d28), AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.BAT0._BIF] (Node ddf141a8), AE_TIME
acpi_battery-0147 [07] acpi_battery_get_info : Error evaluating _BIF
ACPI: Power Button (FF) [PWRF]
ACPI: Lid Switch [LID]
ACPI: Sleep Button (CM) [SLPB]
ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)
evregion-0405: *** Error: Handler for [EmbeddedControl] returned AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.RDC3] (Node ddf16528), AE_TIME
 psparse-1138: *** Error: Method execution failed [\ECIO] (Node ddf18ae8), AE_TIME
 psparse-1138: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.ACPS] (Node ddf16668), AE_TIME
 psparse-1138: *** Error: Method execution failed [\ACPS] (Node ddf0d528), AE_TIME
 psparse-1138: *** Error: Method execution failed [\_PR_.CPU1._PPC] (Node ddf24a28), AE_TIME
acpi_processor-0132 [11] acpi_processor_get_pla: Error evaluating _PPC
acpi_processor-0210 [11] acpi_processor_get_thr: duty_cycle spans bit 4
ACPI: Thermal Zone [THRM] (56 C)
Asus Laptop ACPI Extras version 0.29
  M6R model detected, supported

Existují jisté indicie, ľe jádro 2.6.9 vanilla (ne z distribuce) problémy nedělá. Z nejrůznějąích důvodů jsem ale potřeboval jádro novějąí. Pod čarou dodávám, ľe jsem se pokouąel nabootovat velké mnoľství live-distribucí (Berry Linux, Knoppix, Mandrake Move, SUSE Live) a ľádná z dostupných verzí (by» postavených na jádře 2.6.9) neuměla se ąpatným ACPI správně zacházet. Neinstaloval jsem ľádná Microsoft Windows, takľe ani nevím, jestli pod nimi fungují vąechny ACPI funkce jeątě před instalací ovladačů od Asusu.

Hledáním na internetu se dá najít patch do kernelu, který ąpatné chování ACPI obchází. Stáhnout ho lze např. zde a mé zkuąenosti ukazují, ľe funguje na jádrech do 2.6.10 včetně. Na 2.6.11.x se mi jej sice podařilo aplikovat bez chyb, ale problém s ACPI neřeąil. Chybové hláąky byly sice jiné, ale ACPI stejně nefungovalo. Jinou moľností, neľ patchovat jádro, je moľnost vnutit jádru opravenou DSDT v iniciálním ramdisku. To ovąem znamená, ľe musíte tuto opravenou DSDT tabulku někde sehnat, nebo si ji opravit sami. Jiľ opravenou tabulku se mi pro tento model notebooku sehnat nepodařilo a její přeprogramování se opravdu necítím.

Z důvodů, které není důleľité rozepisovat, jsem se rozhodl opatchovat distribuční jádro a to jeątě distribuční jádro doplněné o Software Suspend 2.

To se dá najít na stránkách Matthiase Henslera a potřeba je sice soubor zdrojáků jádra. Následuje sekvence příkazů, kterou i naprostý BFU je snad schopen vąechno rozchodit (předpokládejme, ľe byl staľen soubor kernel-2.6.10-1.770_FC3_cubbi2_swsusp2.src.rpm). Podotýkám, ľe je samozřejmě potřeba mít nainstalovaný kompilátor a rpmbuild.

su -
wget http://mhensler.de/swsusp/download/kernel-2.6.10-1.770_FC3_cubbi2_swsusp2.src.rpm
wget http://mrhammy2.ath.cx:81/aml_method_exec_hack.patch
rpm -i kernel-2.6.10-1.770_FC3_cubbi2_swsusp2.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp --target=i686 kernel-2.6.spec
cd ../BUILD/kernel-2.6.10/linux-2.6.10/
patch -p1 < /root/aml_method_exec_hack.patch
make oldconfig
# je dobre povolit SWSUSP2 patch pokud chceme počítač uspávat a zbavit se problémů např. s neprobouzením sí»ovky i daląích zařízení
#případně make config|menuconfig|xconfig, pokud chcete dále upravovat konfiguraci jádra
make bzImage modules
make modules_install
make install

V GRUBu se pak objeví daląí poloľka - 2.6.10-prep a to je ta, kterou chceme bootovat. Jádro by pak mělo bez problémů naběhnout včetně ACPI. Ověřit si to můľe zcela kaľdý například tím, ľe mu bude v KDE/GNOME fungovat ukazatel stavu baterie.

Notebook je podporován modulem acpi4asus (dostupný v kaľdém novějąím kernelu) a jeho zprovoznění pak umoľní pouľívat nejrůznějąí ACPI funkce, které přístroj nabízí. Od sledování stavu baterie, po změnu frekvence procesoru za běhu (cpuspeed) a také pouľívání nejrůznějąích klávesových zkratek, které jsou buď dostupné přes přeřaďovač Fn, nebo jako speciálních pět tlačítek nad klávesnicí.

Hodně srandy si uľijete, pokud se pokusíte zprovoznit nejrůznějąí funkční tlačítka, kterými notebook oplývá. Podstatné totiľ je, ľe některá fungují bez problémů, některá s problémy a některá se nepodaří rozchodit vůbec. Jejich společným jmenovatelem je ACPI.

Začněme od těch jednoduąąích: tlačítka, která fungují téměř hned. Mezi ně lze započítat tlačítka manipulující s podsvícením LCD displeje. Ta jsou totiľ obslouľena modulem acpi4asus. Jde konkrétně o kombinace Fn+F5 (ztlumení podsvícení), Fn+F6 (zvýąení intenzity podsvícení) a Fn+F7 (vypnutí/zapnutí podsvícení). Ta fungují bez větąích problémů. Kombinace Fn+F10 (vypnutí/zapnutí systémových reproduktorů), Fn+F11 (sníľení intenzity zvuku), Fn+F12 (zvýąení intenzity zvuku), pět tlačítek nad klávesnicí a čtyři tlačítka CD přehrávače, kterým lze přiřadit libovolnou funkci (jsou to horké ACPI klávesy obslouľené ACPI démonem). Co se mi rozjet nepodařilo (a podle nejrůznějąích ohlasů na internetu to zřejmě ani nejde), je kombinace Fn+F8 (přepínání LCD/externí CRT/TV out).

ACPI tlačítka notebooku a jejich hotkey-kódy

Tlačítka oblouľená ACPI démonem lze jednoduąe konfigurovat pomocí skriptů. Např.:

Do /etc/acpi/events:

event=hotkey ATKD .*
action=/usr/local/sbin/hotkey.sh %e

a následně do /usr/local/sbin/hotkey.sh např.:

#!/bin/sh

case "$3" in
# vypnuti/zapnuti zvukoveho vystupu
00000032)/usr/bin/amixer set Master toggle
;;
#zvyseni hlasitosti
00000030)/usr/bin/amixer set Master 1+
;;
#snizeni hlasitosti
00000031)/usr/bin/amixer set Master 1-
;;
#klavesy CD prehravace -- presmenovany na ovladani XMMS
00000040)su - michal -c "/usr/bin/xmms -r"
;;
00000043)su - michal -c "/usr/bin/xmms -s"
;;
00000045)su - michal -c "/usr/bin/xmms -t"
;;
00000041)su - michal -c "/usr/bin/xmms -f"
;;
# nad klavesnici klavesa s obalkou
00000050)su - michal -c "export DISPLAY=:0.0;/usr/bin/kmail &"
;;
# nad klavesnici klavesa s e-ckem
00000051)su - michal -c "export DISPLAY=:0.0;/usr/bin/mozilla &"
;;
# nad klavesnici klavesa s Wi-Fi
0000005d)/usr/local/sbin/centrino_check.sh
;;
*)logger "ACPI hotkey $3 is not defined"
;;
esac

V této konfiguraci zůstávají jeątě dvě nevyuľité klávesy nad klávesnicí -- klávesa mající vypínat Touchpad (scan-kód 0000006a a 0000006b) a klávesa PowerGear+ (scankód 0000005c), pro které jsem nenaąel ľádné smysluplné vyuľití. Jako ACPI událost je namapováno téľ otevření nebo zavření víka notebooku (jako událost button/lid). Zrovna tak samozřejmě stisknutí vypínacího/zapínacího tlačítka (jako událost button/power), na které já osobně mám namapováno volání skriptu hibernate:

#/etc/acpi/events/power
event=button/power.*
action=/usr/local/sbin/swsuspend

Pokud si chcete softwarově blikat světýlkama, jsou na přední straně v sadě LEDek dvě modré, které lze ovládat programově. Ve Windows zřejmě fungují jako signalizace zapnuté bezdrátově sítě a přiąedąího emailu. Ovládat je lze jednoduąe zápisem do /proc/acpi/asus/mled a /proc/acpi/asus/wled. Zápisem hodnoty "1" se LEDka rozsvítí, zápisem hodnoty "0" kupodivu zhasne. Toto hraní brzy omrzí, ale dá se s tím uľít i legrace.

Přes ACPI je téľ ovlivnitelná aktuální taktovací frekvence procesoru. To je docela výhodné, nebo» bez vypínání disku při běľné kancelářské práci s procesorem běľícím na 600 MHz notebook vydrľí na baterky přinejhorąím 3,5 hodiny, tak pokud běľí procesor na plné frekvenci (1,6 GHz), bez bateriové energie budete tak během necelých dvou hodin. Pro kontrolu rychlosti CPU v závislosti na aktuální zátěľi pouľívám cpuspeed. Zprovozněno (bez nějakého daląího komentáře) pomocí skriptu:

BASE=/sys/devices/system/cpu/cpu0/cpufreq
if grep -q ondemand $BASE/scaling_available_governors
then
        echo -n "Setting up ondemand CPUfreq governor: "
        echo ondemand > $BASE/scaling_governor
        echo 200000   > $BASE/ondemand/sampling_rate
        echo 5        > $BASE/ondemand/sampling_down_factor
        echo 75       > $BASE/ondemand/up_threshold
        echo 50       > $BASE/ondemand/down_threshold
        echo "Done."
fi

cpuspeed -d -i 10 -t /proc/acpi/thermal_zone/THRM/temperature 79  -a /proc/acpi/ac_adapter/AC0/state

Toto nastavení způsobí, ľe kaľdých 10 sekund se prověří aktuální load a podle toho se pohne s frekvencí procesoru. Agresivnějąí sniľování frekvence pak nastane v případě provozu na baterie a pokud teplota procesoru překrocí 79 stupňů Celsia. Tento skript je dobré dát např. do /etc/rc.d/rc.local.

Grafická karta, X server

Fedora Core 3 přichází s Xorg verze 6.8.2. Pokud se spokojíte s open-source ovladačem radeon (nebo ati), samozřejmě vąe funguje. Jen LCT má poněkud méně typický rozměr 1280x800 bodů a toto rozliąení je třeba do xorg.conf dopsat.

ModeLine     "1280x800" 83.5 1280 1344 1480 1680 800 801 804 828

Nicméně pod opensourcovým ovladačem se mi nepodařilo rozběhat VGA port, do kterého lze připojit externí monitor nebo datový projektor. Resp. nepodařilo se mi jej rozběhat pod lepąím rozliąením, neľ je 800x600. Pokud chcete lepąí, nezbývá vám, neľ sáhnout po proprietárních ATI ovladačích. Naątěstí bez ohledu na původní skepsi s nimi nemám aľ tak ąílené zkuąenosti, jaké si lze přečíst v nejrůznějąích internetových fórech. Konfigurační soubor vám buď vygeneruje utilitka fglrxconfig (která působí dosti neprůhledným dojmem), nebo stačí nahradit v xorg.conf ovladač ati (nebo radeon) za fglrx. Bohuľel, integrovaná grafická karta není podporována ve 3D a to ľádným z dostupných ovladačů. Nicméně instalace proprietárních ovladačů je nesmírně jednoduchá: stačí stáhnout (distribuováno jako rpm) a nainstalovat. Posléze změnit driver v xorg.conf. A je to.

Rozchození externího monitoru tak, jak si jeho funkci běľný uľivatel představuje (tedy plug-and-play bez restartů), byla tak trochu magie. Přestoľe je v manuálu notebooku jasně napsáno, ľe takto to nefunguje (externí monitor se musí připojovat při bootu), stačí jeden řádek v xorg.conf v sekci devices, který toto umoľní, přestoľe je to v rozporu s manuálem. Relevantní část xorg.conf vypadá takto:

Section "Device"
    Identifier                          "ATI Graphics Adapter"
    Driver                              "fglrx"
    Option "DesktopSetup"               "0x00000100"
    Option "MonitorLayout"              "LCD, CRT"
# MonitorLayout muze obsahovat nasledujici hodnoty:
# AUTO - autodetekce, CRT - zarizeni pres CRT(VGA) port, TMDS - zarizeni pres DVI port, LVDS - snad monitor notebooku
# STV - S-Video port (povinne musi byt pripojen pri bootu). LCD neni v dokumentaci, ale evidentne funguje

Je dobré mít v zásobě nějaké rozumné rozliąení, nebo» drtivá větąina datových projektorů si nebude s 1280x800 rozumět. TV-out se mi přes veąkerou snahu zatím rozběhat nepodařilo a není jisté, zda to vůbec jde.

Pokud hodláte pouľívat uspávání (software suspend libovolné verze), pak vězte, ľe po probuzení se neprobere jednak modul fglrx a i v případě pouľití opensourcového ovladače xv-extension. Pomáhá start druhého X-serveru po probuzení (a třeba jeho opětovné shození). Tato vlastnost se dá poměrně jednoduąe implementovat do uspávacích skriptů.

# /usr/local/sbin/swsuspend
#!/bin/bash
# XMMS je nekompatiblnim programem se swsusp a dela akorad blbosti
killall -9 xmms
/usr/sbin/alsactl store
/usr/local/sbin/centrino_wlan.sh stop
sleep 2
/usr/sbin/hibernate
sleep 4
/sbin/clock --hctosys
/usr/X11R6/bin/X :1 &
DRUHAX=$!
/usr/sbin/alsactl restore
sleep 5
kill $DRUHAX
# po resume je zvukovka nepochopitelne ztisena -- hnuti s mixerem pomuze.
/usr/bin/amixer set Master 1+
/usr/bin/amixer set Master 1-
# artsd po resume obvykle zpusobuje zatizeni systemu na 99 % pri 1600 MHz
sleep 10
killall -9 artsd

Touchpad, jiná ukazovací zařízení

Touchpad je automaticky detekován (funguje s driverem Synaptic) a do konfigurace provedené instalátorem netřeba zasahovat. Taktéľ hotplug funguje velmi dobře, takľe při připojení USB myąky (malá a velmi skladná USB myąka Logitech je dodávána s notebookem) se s ní dá ihned pracovat (pokud tedy funguje USB-subsystém -- viz kapitolka Software suspend). Problém s PS/2 myąí nenastávají, protoľe notebook nemá PS/2 port.

Relevantní část xorg.conf:

# **********************************************************************
# Core Pointer's InputDevice section
# **********************************************************************
Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "IMPS/2"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5"
        Option      "Emulate3Buttons" "yes"
EndSection

Section "InputDevice"
        Identifier  "Synaptics"
        Driver      "synaptics"
        Option      "Device" "/dev/input/mice"
        Option      "Protocol" "auto-dev"
        Option      "Emulate3Buttons" "yes"
EndSection

Připojení na sí» -- ethernet, modem, Wi-Fi

Asus M6B00R je v zásadě vybaven třemi rozhraními pro přístup k sítím. S ľádným nejsou větąí problémy.

Ethernetová karta je postavena na čipsetu Realtek 8139, tudíľ funguje s modulem 8129too a je správně detekována uľ při instalaci.

8139too Fast Ethernet driver 0.9.27
ACPI: PCI interrupt 0000:02:06.0[A] -> GSI 5 (level, low) -> IRQ 5
divert: allocating divert_blk for eth0
eth0: RealTek RTL8139 at 0xe800, 00:00:00:00:00:00, IRQ 5
eth0:  Identified 8139 chip type 'RTL-8101'

Wi-Fi je Intel PRO/Wireless 2200BG a funguje velmi dobře s opensourcovým modulem ipw2200. Jen je třeba nezapomenout, ľe nahráním modulu to nekončí, je třeba jeątě do přísluąné cesty hotplugu rozbalit firmware (/lib/firmware). Na jádrech starąích neľ 2.6.11 má problémy při pouľívání jaderného Software supend (neprobudí se korektně -- viz dále), ovąem jak jiľ bylo napsáno, zatím na 2.6.11 jádrech nepomáhá patch zprovozňující ACPI.

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.1
ipw2200: Copyright(c) 2003-2004 Intel Corporation
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 4
PCI: setting IRQ 4 as level-triggered
ACPI: PCI interrupt 0000:02:07.0[A] -> GSI 4 (level, low) -> IRQ 4
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
divert: allocating divert_blk for eth1

Modem je zařízení ponechané s velkým otazníkem. Zařízení se hlásí jako

00:14.6 Modem: ATI Technologies Inc IXP AC'97 Modem (rev 01)

nicméně si pod tím lze představit leccos. Detekční skript scanModem oznámí, ľe modem můľe být vybaven buď čipem od Agere Systems (Lucent), nebo Conexant nebo od Intelu. Nicméně ani jeden z dostupných driverů se k zařízení nehlásí. Dekomprimací windowsovských ovladačů z přiloľeného CD a chvilkovým hledáním v INF souborech se ukazuje, ľe správným typem bude Agere Systems (Lucent). Kaľdopádně ani s tímto zařízení nefunguje. Nejnadějněji se tváří zřejmě driver slmodemd (vyuľívajícího Alsu), nicméně ani tak se z modemu nepodařilo vyloudit ani vyzváněcí tón.

Zvuk

Zvuková karta je integrována na chipsetu ATI a je tudíľ ovládána ALSA modulem snd_atiixp. Instalátorem je detekována bez problémů.

ACPI: PCI interrupt 0000:00:14.5[B] -> GSI 5 (level, low) -> IRQ 5
ALSA device list:
  #0: ATI IXP rev 0 with AD1980 at 0xfba00000, irq 5
Karta má jediný problém, a to sice ľe po probuzení se Software suspend nevyluzuje ľádné zvuky, přestoľe je vąechno v pořádku a zvuk není ztlumený. Postačí vąak zahýbat s mixerem a jiľ je vąe v pořádku. Tento krok je moľné zadat i do probouzecího skriptu:
/usr/bin/amixer set Master 1+
/usr/bin/amixer set Master 1-

Notebook má integrované dva reproduktory, které vyluzují zvuky v nezvyklé kvalitě (aneb subjektivně mi připadají o třídu lepąí, neľ běľná chrčítka u notebooků se vyskytující). Samozřejmostí je moľnost výstupu přes 3,5mm jack (údajně zvládající i digitální výstup, ale netestováno).

Software suspend

Pokud váą nebaví po restartu neustále obnovovat začatou práci, není nic jednoduąąího, neľ vyuľívat sluľeb Software suspend -- tedy vysypání paměti na disk (do swapu) a po novém zapnutí její relativně rychlé obnovení. Software suspend je v současnosti ve dvou verzích -- jedna je přímo dostupná v kernelu a druhá je dostupná jako patch.

Ta první verze je sice dostupná v libovolném kernelu, ale má jistá omezení. Mé zkuąenosti například ukázaly, ľe co není v jádře, to se velmi obtíľně probouzí zpět k ľivotu. Typicky USB subsystém. Nepomohlo ani odebrání modulů přes suspend a jejich opětovné přidání po resume (to dokonce v 90 % případů vedlo k zatuhnutí počítače). Tento problém se podařilo vyřeąit zakompilováním nekorektně se chovajících modulů přímo do jádra. Ostatně má to smysl -- myą je v portu zasunuta 80 % doby chodu notebooku (jen ve vlaku a autobusu se s myąí ąpatně manipuluje). K opuątění této varianty mně vąak přiměl fakt, ľe se po resume neprobudila wi-fi karta.

Apr 11 14:14:03 eowyn kernel: ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.1
Apr 11 14:14:03 eowyn kernel: ipw2200: Copyright(c) 2003-2004 Intel Corporation
Apr 11 14:14:03 eowyn kernel: ACPI: PCI interrupt 0000:02:07.0[A] -> GSI 4 (level, low) -> IRQ 4
Apr 11 14:14:03 eowyn kernel: ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
Apr 11 14:14:03 eowyn udev[32167]: removing device node '/dev/0000:02:07.0'
Apr 11 14:14:03 eowyn udev[32194]: removing device node '/dev/0000:02:07.0'
Apr 11 14:14:03 eowyn udev[32221]: removing device node '/dev/0000:02:07.0'
Apr 11 14:14:04 eowyn kernel: ipw2200: failed to send TX_POWER command
Apr 11 14:14:09 eowyn last message repeated 4 times
Apr 11 14:14:09 eowyn kernel: ipw2200: Unable to initialize device after 5 attempts.
Apr 11 14:14:09 eowyn kernel: ipw2200: failed to register network device
Apr 11 14:14:09 eowyn kernel: ipw2200: probe of 0000:02:07.0 failed with error -5

Po konzultaci s vývojáři modulu ipw2200 bylo shledáno, ľe je to známá chyba, která by jiľ měla být opravena v jádrech 2.6.11. Nicméně jak jsme psal výąe, s jádrem 2.6.11 nefunguje půlka ACPI funkcí.

Rozhodl jsem se tedy přejít na Software suspend 2 (konkrétně verzi 2.1.7), který uvedenými postupy netrpí. Pouľil jsem jiľ opatchované distribuční jádro (adresa ke staľení je popsána výąe) a problémy s probouzením zařízení ustaly. Navíc mi swsusp2 přijde rychlejąí a má graficky lépe zpracované oba procesy.

Pokud hodláte jádro opatchované pro Fedoru kompilovat a hodláte-li pouľívat při bootu ramdisk (default volba), tak je potřeba sestavený ramdisk mírně upravit. Po klasickém make bzImage modules modules_install install je nutné jako root udělat jeątě následující krátkou proceduru:

cd
mkdir myinitrd
cd myinitrd
gzip -dc < /boot/initrd-2.6.10-prep.img | cpio -i

Pak je třeba editovat soubor init a přidat v počáteční fázi skriptu (po namountování /proc, ale před mountováním jakýchkoli jiných disků, čili v mém případě jako druhý výkonný řádek skriptu) echo > /proc/software_suspend/do_resume. A pak pokračovat příkazem:

find . | cpio -o -c |gzip -9 > /boot/initrd-2.6.10-prep.img

A je to. Samozřejmě je zapotřebí nainstalovat jeątě skript hibernate, který se postará o uspání a posléze probuzení. Stáhnout ho lze opět jako rpm-balík u Matthiase Henslera.

PCMCIA

Přidáno 13. 6. 2005

Notebook je vybaven jedním PCMCIA slotem, které jsou obslouľeny ovladačem Yenta socket. Od počátku jsem neměl přístup k ľádné PCMCIA kartě, takľe jsem jej nemohl otestovat, zda zařízení funguje, nebo ne. Aľ dnes během probírání se vyřazenými notebooky Astronomického ústavu Univerzity Karlovy jsem nalezl dvě PCMCIA karty, které jsem ihned ozkouąel a můľu tedy zodpovědně napsat, ľe PCMCIA slot funguje správně.

Testované karty: 14.4 kpbs modem a 10 Mbit ethernetová karta PLANET. Za vąe mluví výpisy z /var/log/messages:

Jun 13 11:59:13 eowyn cardmgr[2647]: socket 1: Serial or Modem
Jun 13 11:59:13 eowyn kernel: ttyS3 at I/O 0x2e8 (irq = 3) is a 16450
...
Jun 13 12:11:27 eowyn cardmgr[2647]: socket 1: EZLink 4109 Ethernet
Jun 13 12:11:28 eowyn kernel: eth2: NE2000 Compatible: io 0x300, irq 3, hw_addr 00:00:00:00:00:00

Obě zařízení pak bez problémů fungovala, po vloľení se jich „ujme“ udev a hotplug a zařízení správně zprovozní (nahraje přísluąné moduly), zařízení je vhodné softwarově korektně odebrat příkazem cardctl eject.

Závěrem ...

Závěrem snad jen to, ľe hardware, který jsem zde explicitně nepopsal, funguje "tak nějak sám" bez zásahu, nebo jsem ho neměl moľnost otestovat. Čili klávesnice, disk, vypalovačka, paralelní port. IrDa (infračervený port) jsem neměl moľnost vyzkouąet, nebo» nevlastním ľádné vhodné zařízení. Nicméně po nataľení přísluąných modulů (např. pomocí service irda start) dojde k vytvoření nového sí»ového zařízení (irda0), které se zdá komunikativní (jediné, co bylo nutné upravit, bylo zařízení v /etc/sysconfig/irda (DEVICE=/dev/ircomm0)). Slot karet má v sobě integrovanou čtečku pamě»ových karet (zřejmě SecureDigital a podobných). Zařízení je detekováno, nicméně tím to končí, nepodařilo se mi ji zprovoznit. Osobně mě to přílią nebolí, protoľe sám ľádné SD karty nevlastním a pro karty SmartMedia, které pouľívám, čtečka určena není.

Kaľdopádně pokud nejste naprostí začátečníci a dokáľete v linuxu zkompilovat jádro, dokáľete pracovat s vyhledávačem (nejlepąí je google), neměl by být větąí problém rozběhat větąinu hardware, který je v sestavě obsaľen. Osobně mám z notebooku spíąe pozitivní pocity. Působí poměrně robustním dojmem (ąasi má být vyrobena z Mg-Al slitiny), klávesnice je příjemná pro práci, nikde nic nevrľe, displej se zdá býti dosti kvalitním a přestoľe zejména z počátku můľe ąirokoúhlý obraz působit problémy, velice rychle si na něj zvyknete.

A před konečnými odkazy na "literaturu" jeątě pár systémových výpisů:

/sbin/lspci:

00:00.0 Host bridge: ATI Technologies Inc RS300 Host Bridge (rev 02)
00:01.0 PCI bridge: ATI Technologies Inc Radeon 9100 IGP AGP Bridge
00:13.0 USB Controller: ATI Technologies Inc OHCI USB Controller #1 (rev 01)
00:13.1 USB Controller: ATI Technologies Inc OHCI USB Controller #2 (rev 01)
00:13.2 USB Controller: ATI Technologies Inc EHCI USB Controller (rev 01)
00:14.0 SMBus: ATI Technologies Inc ATI SMBus (rev 18)
00:14.1 IDE interface: ATI Technologies Inc: Unknown device 4349
00:14.3 ISA bridge: ATI Technologies Inc: Unknown device 434c
00:14.4 PCI bridge: ATI Technologies Inc: Unknown device 4342
00:14.5 Multimedia audio controller: ATI Technologies Inc IXP150 AC'97 Audio Controller
00:14.6 Modem: ATI Technologies Inc IXP AC'97 Modem (rev 01)
01:05.0 VGA compatible controller: ATI Technologies Inc RS300M AGP [Radeon Mobility 9100IGP]
02:05.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)
02:05.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)
02:05.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 04)
02:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:07.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05)
cat /proc/cpuinfo

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Pentium(R) M processor 1.60GHz
stepping        : 6
cpu MHz         : 600.034
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 apic mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe est tm2
bogomips        : 1191.93

Odkazy

Tuxmobil -- linux na notebookách a jiných přenosných zařízeních

Fedora Core 2 na Asus M6R -- zkuąenosti Jana Kasprzaka

Fórum o problémech linuxu na Asus M6N(e) noteboocích -- mnohé informace jsou pouľitelné téľ pro M6R

Notebook Asus M6B00 a linux -- zkuąenosti Zdeňka Wágnera

Abclinuxu -- diskusní fórum v čeątině, vyjadřuje se tu spousta velmi zkuąených jedinců

Google -- pouľijte, neľ se kdekoli zeptáte