Acer Extensa 3001WLMi

Aus wiki.archlinux.de
Version vom 18. Januar 2011, 18:14 Uhr von SiD (Diskussion | Beiträge) (→‎TV Out)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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) Das wird mit diesem Eintrag in der /etc/rc.local gemacht.

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

Der gewünschte Scaling Governor kann über die Datei /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies gesetzt werden. Das kann man ebenfalls in der /etc/rc.local machen. Für den ondemand Governor sieht der Eintrag zum Beispiel so aus:

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
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 fest in den Kernel kompiliert werden (überschreiben der DSDT per initrd ist mit dem aktuellen mkinitcpio nicht mehr möglich).

Der Quell-Code der reparierten DSDT Tabelle kann hier runtergeladen werden.
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 möglich auch ohne eine 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, dass 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).

Die Frequenzen und Spannungen für den Pentium M 715 1,5GHz (Dothan) werden in der Structur static struct cpufreq_frequency_table sonoma_1500 festgelegt. Der Patch enthält drei verschiedene Deklarationen dieser Struktur. Einmal die standard Werte und zwei mit runtergestzter Spannung. Zwei davon (undevolt values und undervolt values2) sind kommentiert. Bei undervolt values 2 sind die Spannungen gegenüber undervolt values nochmal geringer. Um eines der beiden zu verwenden müssen nur die Kommentare angepasst werden. Man kann natürlich auch andere Werte verwenden.


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 bei dieser Methode kann der Scaling Governor in der /etc/rc.local gesetzt werden.

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

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

Der TV-Ausgang kann mit Xrandr aktiviert werden.

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

LAN

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

WLAN

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

pacman -S ipw2200-fw

Sound

Bei Verwendung des Arch standard Kernels und initrd-images werden alle benötigten Module automatisch geladen.
Konfiguration: siehe ALSA.

Firewire

Das Kernel Modul heißt ieee1394

Card Reader

Der integrierte Karten-Leser funktioniert. (nur mit SD-Karten getestet)
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

Noch nicht getestet.

Infrarot

Noch nicht getestet.

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.) können mit xbindkeys konfiguriert. Am besten man trägt xbindkeys in die ~/.xinitrc ein. Zum Beispiel so.

xbindkeys &
pypanel &
exec openbox

Die Konfigurationsdatei ~/.xbindkeys.conf könnte zum Beispiel so aussehen:

"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. Allerdings funktionierte das mit den letzten Versionen des Xservers nicht.
Mit der aktuellen Version (1.9.3.901) nicht getestet.

Tips

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