Acer Extensa 3001WLMi

Aus wiki.archlinux.de

Hardware

CPU: Pentium M 715 1,5GHz (Dothan)
RAM: 512MB
Grafik: Mobility Radeon 9700
Touchpad: Synaptics

für die restliche Hardware hier die Ausgabe von "lspci"

00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:01.0 PCI bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to AGP Controller (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]
02:02.0 Ethernet controller: Broadcom Corporation BCM4401 100Base-T (rev 01)
02:04.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)
02:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
02:06.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller
02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller

Kernel

Da der XServer mit dem freien ATI Treiber abstürzt, muss die "tickless kernel" Funktion deaktiviert werden. Das macht man, indem man in der /boot/grub/menu.lst nohz=off zu der Kernel Zeile hinzufügt. Zum Beispiel so:

kernel /vmlinuz26 root=/dev/sda8 ro nohz=off vga=790

Für ein korrekt funktionierendes Speed-Stepping muss ein selbst kompilierter Kernel verwendet werden. (siehe CPU Frequenz)

CPU Frequenz

Für die CPU Frequenz Skalierung gibt es zwei Möglichkeiten bzw. Kernel Module. (acpi_cpufreq und speedstep-centrino)

acpi_cpufreq

Das Modul acpi_cpufreq muss geladen werden. Am besten in die /etc/rc.conf eintragen. Bei meinem Modell habe ich noch das Problem, das aufgrund einer fehlerhaften DSDT Tabelle nicht die richtigen, zur Verfügung stehenden Frequenzen erkannt werden. Die maximale Frequenz, die erkannt wird, ist 1,6GHz, obwohl es nur eine 1,5GHz CPU ist. Damit die CPU nicht ständig übertaktet wird, habe ich die maximale Frequenz auf 1,4GHz eingestellt. (Das ist die nächst kleinere die erkannt wird) Dazu habe ich diesen eintrag in der /etc/rc.local stehen.

echo 1400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

Außerdem habe ich den Scaling Governor auf ondemand gesetzt. Ebenfalls in der /etc/rc.local

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Die verfügbaren Frequenzen stehen in /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies und die verfügbaren Governors in /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies.

  • korrigierte DSDT Tabelle

Mit einer reparierten DSDT Tabelle, die die richtigen Frequenzen enthält, lässt sich das Problem beheben. Dazu muss die reparierte DSDT Tabelle in den Kernel kompiliert werden (überschreiben der DSDT per initrd ist mit dem aktuellen mkinitcpio nicht mehr möglich).

Hier ist der Quell-Code meiner reparierten DSDT.
Der Code kann mit iasl kompiliert werden. Einfach in einer Datei (z.B. dsdt.dsl) speichern und mit

iasl -tc dsdt.dsl

kompilieren. Die Datei dsdt.hex ist dann die Datei, die zum einkompilieren in den Kernel verwendet wird.


Kernel Konfiguration für DSDT:

Device Drivers -->
        Generic Driver Options -->
                [ ] Select only drivers that don't need compile-time external firmware
Power Management and ACPI Options -->
        [*] ACPI (Advanced Configuration and Power Interface) Support -->
                (/pfad/zu/dsdt.hex) Custom DSDT Table file to include

bzw.

CONFIG_ACPI_CUSTOM_DSDT_FILE="/pfad/zu/dsdt.hex"
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_STANDALONE=n

Wenn alles geklappt hat, sollte sich, nach dem nächsten Rechnerstart mit dem neuen Kernel, in der dmesg Ausgabe so etwas wie Table [DSDT] replaced by host OS finden.

speedstep-centrino

Neben dem acpi_cpufreq Modul gibt es noch das (als veraltet ausgegebene) speedstep-centrino Modul. Mit einem Patch für dieses Modul ist es auch möglich ohne reparierte DSDT Tabelle die CPU Frequenz Skalierung mit den richtigen Frequenzen zum laufen zu bekommen.

Aber auch hier muss ein Kernel selber kompliliert werden. Ein weiterer Vorteil dieser Methode ist, das man in dem Patch auch die CPU Spannungen ändern kann. Damit ist dann auch "undervolting" möglich, was zu einem deutlich leiserem / weniger laufenden Lüfter führt (linux-phc funktioniert nicht).

In dem Patch gibt es zwei kommentierte struct Definitionen 'undervolt values' und 'undervolt values 2' mit Spannungswerten, die mit meiner CPU laufen. Bei 'undervolt values 2' sind die Spannungen gegenüber 'undervolt values' nochmal geringer. Um eines der beiden zu verwenden einfach das struct mit den standard Werten kommentieren und das gewünschte auskommentieren. Oder eigene Werte testen.


Kernel Konfiguration:

Power Management and ACPI Options -->
        CPU Frequency scaling -->
                  [*] CPU Frequency scaling  
                  [*]   Enable CPUfreq debugging  
                  <*>   CPU frequency translation statistics
                  [ ]     CPU frequency translation statistics details
                        Default CPUFreq governor (performance)  --->
                  -*-   'performance' governor
                  <M>   'powersave' governor
                  <M>   'userspace' governor for userspace frequency scaling 
                  <M>   'ondemand' cpufreq policy governor
                  <M>   'conservative' cpufreq governor
                  ...
                  ...    
                  <*>   Intel Enhanced SpeedStep (deprecated)
                  -*-     Built-in tables for Banias CPUs 
                  ...
(alle anderen nicht auswählen)

Der Patch wurde mit kernel-2.6.35 bis 2.6.37 getestet. Die Datei befindet sich in den kernel-sourcen unter arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c

Auch hier habe ich den Scaling Governor auf ondemand gesetzt. Wieder über die /etc/rc.local

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

LAN

Das Kernel Modul für das LAN Interface heißt b44.


WLAN

Das Kernel Modul für das WLAN Interface heißt ipw2200. Neben dem Modul muss noch das Firmware Paket installiert werden.

pacman -S ipw2200-fw


Grafik Treiber

Für die Mobility Radeon 9700 (RV350) muss der freie radeon Treiber installiert werden.
siehe: ATI#Open-Source-Treiber

Vom proprietären Treiber (Catalyst) wird die Karte nicht mehr unterstüzt.

TV Out

Den TV-Ausgang habe ich mit dem freien radeon Treiber und xrandr zum laufen bekommen.

Voraussetzungen

Der TV-Ausgang funktioniert nur mit deaktiviertem KMS korrekt. Da der aktuelle XServer (1.9.3.901) mit dem freien radeon Treiber bei deaktiviertem KMS nur funktioniert wenn das Modul 'glx' nicht geladen wird, muss man dies verhindern. Dazu kann man zum Beispiel eine Datei 10-modules.conf in /etc/X11/xorg.conf.d/ anlegen, die dies hier enthält:

Section "Module"
  Disable "glx"
EndSection

Ausserdem muss man einen virtuellen Screen einrichten. Ebenfalls mittels einer Datei in /etc/X11/xorg.conf.d/ mit diesem Inhalt:

Section "Screen"
   Identifier "Default Screen"
   DefaultDepth     24
   SubSection "Display"
       Depth     24
       Modes    "1280x800"
       Virtual   2080 800
   EndSubSection
EndSection

TV-Ausgang aktivieren

Der Ausgang kann nun mit diesen Befehlen aktiviert werden:

xrandr --output S-video --set load_detection 1
xrandr --addmode S-video 800x600
xrandr --output S-video --set tv_standard pal
xrandr --output S-video --set tv_horizontal_size 2
xrandr --output S-video --set tv_horizontal_position -5
xrandr --output S-video --mode 800x600
xrandr --output S-video --right-of LVDS 

TV-Ausgang deaktivieren

xrandr --output S-video --off

natürlich kann man die Befehle auch in ein Shell Script packen, um das ganze etwas zu vereinfachen.

Siehe auch: ATI#TV-Out.

Touchpad

siehe Synaptics Touchpad Treiber

Firewire

Das Kernel Modul heißt ieee1394


Sound

Die Module werden vom Stock Kernel alle automatisch geladen. Ich habe den Sound über ALSA laufen.


Card Reader

Der integrierte Karten-Leser funktioniert. (nur mit SD-Karten ausprobiert) Die nötigen Module sind:

mmc_core 
mmc_block
tifm_core 
tifm_sd 
tifm_7xx1 


Akku

Damit der Akku-Ladestand ausgelesen werden kann, muss das Modul sbs geladen werden.


PCMCIA

Funktioniert "out-of-the-box"


Bluetooth

Habe ich noch nicht ausprobiert


Infrarot

Auch noch nicht ausprobiert.


Sondertasten

Die Tasten zum einstellen der LCD-Helligkeit und zum ausschalten des LCDs funktionieren "out-of-the-box". Die Tasten für Multimedia (Volume, Play, Stop, ect.) habe ich mit xbindkeys konfiguriert. Am besten man trägt xbindkeys in die ~/.xinitrc ein. Zum Beispiel so.

xbindkeys &
pypanel &
exec openbox

Hier meine ~/.xbindkeys.conf

"xbindkeys_show" 
  control+shift + q
# PCM Volume up (Fn + up_arrow)
"amixer -c 0 set Master 2dB+" 
  c:123 + m:0x0
# PCM Volume down (Fn + down_arrow)
"amixer -c 0 set Master 2dB-" 
  c:122 + m:0x0
# Master Volume mute/unmute (Fn + F8)
"amixer -c 0 set Master toggle"
  c:121 + m:0x0
########## Sonata ################
# Sonata play/pause (Fn + Pos 1)
"sonata pp"
  c:172 + m:0x0
# Sonata Stop (Fn + Bild up)
"sonata stop"
  c:174 + m:0x0
# Sonata Lied zurück (Fn + Bild down)
"sonata prev"
  c:173+ m:0x0
# Sonata Lied vor (Fn + Ende)
"sonata next"
  c:171 + m:0x0

Alternativ kann man auch Keytouch verwenden, aber das funktioniert in der aktuellen Version leider nicht wenn man den Xserver mit aktiviertem Hotplugging betreibt.


Tips

  • Soundkarte in Stromsparmodus bringen:
echo 1 > /sys/module/snd_ac97_codec/parameters/power_save