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