ASUS M6V v Linuxu

Notebook Asus M6V-8012 jsme koupil před měsícem, a zatím jsem s ním spokojen. Skoro všechny součásti se mi pod Linuxem podařilo rozchodit, ale pár dní mi to zabralo. Pomohl mi článek o podobném notebooku a samozřejmě Google.

Instaloval jsem distribuci Gentoo, věci specifické pro Gentoo jsou v návodu označeny. Nebyl potřeba žádný speciální patch do jádra (zkoušel jsem i Vanilla 2.6.12). Zde dávám konfiguraci jádra, které používám (Gentoo s Reiser4 patchem): config-2.6.12-reiser4-r6.

Konfigurace podle lspci

0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03)
0000:00:1b.0 Class 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 04)
0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 04)
0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
0000:00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
0000:00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 04)
0000:01:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
0000:01:01.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3)
0000:01:01.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08)
0000:01:01.2 Class 0805: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)
0000:01:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)
0000:01:01.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 03)
0000:01:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter (rev 05)
0000:03:00.0 VGA compatible controller: ATI Technologies Inc M24 1P [Radeon Mobility X600]

Grafika

V notebook je grafická karta Radeon X600. Situace je taková, že se musíte rozhodnout 3D akcelerací a hibernací, protože s proprietárním ovladačem od ATI hibernace nefunguje. Ja jsem se rozhodl pro open-source ovladač radeon už z principu. Bohužel nelze zároveň použít framebuffer radeonfb, Xka pak vytuhnou hned po startu.

Přepínání VGA výstupu a vypínání podsvícení funguje pomocí programu radeontool (Gentoo: emerge radeontool). Televizní výstup nefunguje, zatím jsem s ním neexperimentoval. Existuje program atitvout, ale ten už několik let není vyvíjen.

WiFi

WiFi funguje s modulem ipw2200 (Gentoo: emerge ipw2200). Pro efekt můžete i zapínat modrou LED diodu indikující spojení zápisem 0 (vypnuto) nebo 1 (zapnuto) do /proc/acpi/asus/wled.

Gentoo specific: Skripty v Gentoo nějak manipulují s vysílacím výkonem karty. Při inicializaci se nastavil výkon 255 a karta se pak nespojila. Musel jsem přidat nastavení výkonu do /etc/conf.d/wireless (spolu se zapínáním diody):

preup()
{
  [ $IFACE = eth1 ] && iwconfig $IFACE txpower 20
  return 0
}

preassociate()
{
  iwconfig $IFACE txpower 20
  return 0
}

postup()
{
  [ $IFACE = eth1 ] && echo 1 > /proc/acpi/asus/wled
  ifmetric $IFACE ${IFACE##eth}
  return 0
}

postdown()
{
  [ $IFACE = eth1 ] && echo 0 > /proc/acpi/asus/wled
  return 0
}

Ethernet

Gigabitová síťová karta v notebooku funguje s ovladačem skge, i když je v jádře označen jako experimentální. S ovladačem sk98lin jsem měl problém při uspávání, neobnovilo se spojení a musel jsem dát ifconfig eth0 down && ifconfig eth0 up. Ovladač nefunguje s mii-tool, ale s ethtool ano.

Ethernet (1000 Mbit)  ---> 
  <*> New SysKonnect GigaEthernet support

Touchpad

Touchpad se chová jako standardní myš, ale pokud byste jej používali s běžným ovladačem, přijdete o většinu schopností. Pro X11 existuje ovladač synaptics (Gentoo: emerge synaptics). Ten umožní používat scrollování (pomocí posuvníku naznačeného na touchpadu) a simulovat prostřední tlačítko (lehké klepnutí 2 prsty) i pravé tlačítko (klepnutí 3 prsty, chvíli trvá než se to člověk naučí). Součástí je i program synclient, kterým lze touchpad nastavovat za běhu - především vypínat a zapínat.

Nastavení touchpadu v /etc/X11/xorg.conf:

Section "InputDevice"
   Identifier "Touchpad"
   Driver "synaptics"
   Option "SendCoreEvents"
   Option "Device" "/dev/input/event1"
   Option "Protocol" "event"
   # Next line required only if you want to disable the mousepad while typing:
   Option "SHMConfig" "on"
   # The rest of the options are NOT required, just a default similar to the Windows drivers with non of the extra features.
   Option "LeftEdge" "1900"
   Option "RightEdge" "5400"
   Option "TopEdge" "1400"
   Option "BottomEdge" "4500"
   Option "FingerLow" "25"
   Option "FingerHigh" "30"
   Option "MaxTapTime" "180"
   Option "MaxTapMove" "220"
   Option "VertScrollDelta" "100"
   Option "MinSpeed" "0.04"
   Option "MaxSpeed" "0.24"
   Option "AccelFactor" "0.0020"
EndSection

Section "ServerLayout"
    InputDevice "Touchpad"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection

Problém: Pokud je při bootu připojena USB myš, je touchpad na /dev/input/event2 místo na /dev/input/event1. Chtěl jsem to obejít tak, že bych do /etc/X11/xorg.conf dal dva touchpady a jeden by se "chytil". Bohužel pak nefungovalo vypínání touchpadu přes synclient.

Zvuk

Zvuková karta Intel High Definition Audio funguje s ALSA až od verze 1.0.9, která je v kernelu 2.6.12. Modul se jmenuje snd_hda_intel.

Advanced Linux Sound Architecture  --->
  PCI devices  --->
    <M> Intel HD Audio

Po nainstalování byl ale zvuk neposlouchatelný, musel jsem provést pár úprav v /etc/asound.conf (nastavit pevnou frekvenci 44100Hz):

pcm.!default {
    type plug
    slave.pcm "output"
}

pcm.output {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:0,0"
        rate 44100
    }
}

pcm.dsp0 {
    type plug
    slave.pcm "output"
}

Tlačítka

Některá tlačítka fungují automaticky díky modulu asus_acpi: vypnutí podsvícení, kontrast displeje, přepínání bluetooth. Funkce dalších tlačítek jsem musel dodefinovat sám.

Tlačítka na vlevo na boku se chovají jako běžné klávesy, pouze je potřeba k nim namapovat symboly (a ty pak nastavit jako klávesové zkratky v přehrávači). K namapování slouží program xmodmap, můj soubor s mapováním vypadá takto:

keycode 144 = XF86AudioPrev
keycode 164 = XF86AudioStop
keycode 162 = XF86AudioPlay
keycode 153 = XF86AudioNext

Tlačítka mezi displejem a klávesnicí a Fn klávesy posílají ACPI události, které zpracovává acpid. Konfiguruje se v /etc/acpi.

Moje konfigurace:

Skripty používají radeontool, synclient, eject a amixer. Před uspáním notebooku se zamyká KDE session přes DCOP - pokud používáte jiný desktop manager, je nutné to zrušit.

Hibernace a řízení spotřeby

V kernelu jsem zapnul skoro všechny volby pod ACPI (včetně sleep states), software suspend a frequency scaling pro Centrino (Enhanced SpeedStep).

Power management options (ACPI, APM)  --->
  [*]   Software Suspend (EXPERIMENTAL)
  ACPI (Advanced Configuration and Power Interface) Support  --->
    [*] ACPI Support
    [*]   Sleep States (EXPERIMENTAL)                                                                  
    <*>   AC Adapter
    <*>   Battery
    <*>   Button
    <*>   Video
    <*>   Fan
    <*>   Processor
    <*>     Thermal Zone
    <*>   ASUS/Medion Laptop Extras
    [*]   Power Management Timer Support
    <*>   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
  CPU Frequency scaling  --->
    [*] CPU Frequency scaling
    <*>   CPU frequency translation statistics
    <*>   'powersave' governor
    <*>   'conservative' cpufreq governor
    <*>   Intel Enhanced SpeedStep
    [*]     Use ACPI tables to decode valid frequency/voltage pairs
    [*]     Built-in tables for Banias CPUs

S těmito moduly bude fungovat zobrazení stavu baterie, teploty procesoru atd. Pokud používáte KDE, zapněte určitě klaptopdaemon, který ukazuje stav baterie a umí spouštět hibernaci apod. Notebook nepodporuje lm_sensors, ale teplotu procesoru lze zjistit přes ACPI v /proc/acpi/thermal_zone/THRM/temperature, program ksensors ji umí zobrazit.

Linux podporuje změnu frekvence procesoru (plynule mezi 800Mhz a 1730Mhz). Já používám dva režimy:

  1. powersave - Minimální frekvence 800Mhz při provozu na baterie
  2. conservative - Automatické řízení frekvence podle potřeby

Režim se přepíná příkazem
  echo režim > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Volitelně můžete v kernelu zapnout userspace governor a nastavovat frekvenci např. pomocí cpufreqd.

Teplota procesoru občas roste až k 85°C. Nevím jestli je to u notebooků normální, ale k žádným chybám nedochází.

Linux podporuje dva režimy spánku: hibernace (suspend to disk pomocí software suspend) a suspend to RAM.

Software suspend se spustí příkazem

  echo disk > /sys/power/state

Celý stav paměti se uloží do swapu a notebook se vypne. Po zapnutí musí jádro dostat parametr resume=swap_partition, aby odtud mohlo stav znovu načíst. Software suspend je spolehlivý, ale poměrně pomalý (skoro stejně jako vypnutí a zapnutí), ale zase se hned vrátíte k rozdělané práci. A kdybych používal dualboot s Windows, mohl bych provést suspend, nabootovat Windows, ukončit je a zase Linux probudit.

Pokud chcete notebook jen rychle uspat a přenést, hodí se suspend to RAM. Příkaz je podobný:

  echo disk > /sys/power/state

Stav všech zařízení se přesune do paměti a vypnou se (včetně procesoru), naživu se drží jen RAM. Notebook pak na baterie vydrží minimálně den. Realita byla bohužel složitější: notebook se neprobudil, ani se nerozsvítil displej. Strávil jsem celý den hledáním na Internetu, než jsem našel boot parametr acpi_sleep=s3_bios. Funguje ale pravděpodobně jen v jádře 2.6.12 (stačí Vanilla), v Knoppixu s 2.6.11 se notebook neprobudil ani s tímto parametrem.

Bohužel ještě není všem potížím konec, zjistil jsem že buď lze použít v Xkách ovladač vesa a na konzoli radeonfb, nebo v Xkách ovladač radeon a konzoli nechat úplně bez framebufferu. Jinak se po probuzení obraz neobnoví (někdy až po druhém uspání a probuzení!). Naštěstí pak lze obvykle notebook korektně vypnout přes SSH.

Poté co jsem nalezl tento parametr byla další komplikace jen drobnost: stisknutí vypínače, kterým se notebook probudí se dostane do systému, a acpid ve výchozí konfiguraci na něj zareaguje vypnutím notebooku. Defaultní skript se musí smazat, ale pozor, po aktualizaci acpid se skript vrací zpátky.

Varování: Po suspend to RAM se musí notebook probouzet se stejnými USB zařízeními jako při uspávání. Stalo se mi že jsem připojil myš a probudil notebook a dvojice USB portů pak nefungovala až do restartu.

Ostatní

Na čtečku karet ovladač není a nejspíš nebude kvůli licenci. Ale moc jsem nehledal, ve foťáku mám Smartmedia a tu čtečka v notebooku neumí.

Bluetooth pravděpodobně funguje (akorát se musí tlačítkem zapnout), ale žádné Bluetooth zařízení nemám, abych to mohl vyzkoušet.

FireWire jsem nezkoušel vůbec, žádné takové zařízení nemám.

Odkazy

Linux on Asus M6N(e) notebooks - diskuzní fórum o podobných noteboocích
List of machines with working S3 - thread v ACPI mailing listu o suspend to RAM

Pokud máte nějaké dotazy ohledně Linuxu na tomto typu notebooků (ne o Linuxu obecně, na to je ABCLinuxu), napište mi na 8an@centrum.cz.