|
Gentoo Linux auf dem Samsung P35
|
Hier nun ein paar Tipps, wie man das Samsung P35 unter Gentoo einrichtet.
Verwendet werden sollte ein Kernel ab Version 2.6.16
|
Samsung P35 XVM 1600 III
|
Ein P35 XVM 1600 III verfügt standardmässig über folgende Hardware:
Chipsatz: Intel 855PM+
CPU: Intel Pentium M 725
RAM: 2x 256 MB DDR1 PC2700 Samsung
Grafik: ATI Mobility Radeon 9700 64 MB
Display: 15" SXGA+ TFT / 1400 x 1050
Festplatte: 80 GB EIDE, verschiedene Hersteller
Optisches Laufwerk: Flex Bay II DVD-Super-Multi, 4xDVD+/-R, 2-4xDVD+/-RW, 2xDVD-RAM, 8xDVD-ROM
|
DSDT patchen
|
Leider ist der Differentiated System Description Table beim P35 nicht in Ordnung, so
dass auch die Throtteling States nicht richtig funktionieren.
Zu beachten ist hierbei, dass der DSDT abhängig von der Grösse des Arbeitsspeichers ist. Somit wird nach
einem Arbeitsspeicher-Upgrade ein für diese Grösse gepatchter DSDT benötigt!
Einen funktionstüchtigen DSDT findet ihr
hier.
Wer möchte kann nun noch die An-/Abschalt-Temperaturen für die Lüftersteuerung anpassen:
scope (\_TZ)
{
Name (FANI, 0x00)
Name (FAN3, Buffer (0x07)
{
0x00, 0x00, 0x00, 0xB8, 0xE5, 0xF6, 0xFF
})
Name (FANT, Buffer (0x07)
{
0xFF, 0xFF, 0xFF, 0x25, 0x14, 0x09, 0x09
})
Name (CMP0, Package (0x02)
{
Package (0x02)
{
Package (0x0A)
{
0x00,
0x00,
0x2D,
0x48,
0x55,
0x63,
0x69,
0x00,
0x09,
0x32
},
Package (0x07)
{
0x00,
0x00,
0x00,
0x23,
0x41,
0x4B,
0x5E
}
},
Package (0x02)
{
Package (0x0A)
{
0x00,
0x00,
0x2D, <- An Temp. Stufe 1 ( 45 Dezimal )
0x41, <- An Temp. Stufe 2 ( 65 Dezimal )
0x55,
0x63, <- Passive Modus ( 99 Dezimal )
0x69, <- S5 Notaus ( 105 Dezimal )
0x00,
0x09,
0x32
},
Package (0x07)
{
0x00,
0x00,
0x00,
0x23, <- Temp. Stufe 1 aus (35 Dezimal )
0x37, <- Temp. Stufe 2 aus ( 55 Dezimal )
0x4B,
0x5E
}
}
})
|
Sinnvolle Werte wären z.B. folgende:
Stufe 1 an: 0x32 ( 50 Dezimal )
Stufe 2 an: 0x41 ( 65 Dezimal )
Stufe 1 aus: 0x2A (42 Dezimal )
Stufe 2 aus: 0x37 ( 55 Dezimal )
|
Nun muss der DSDT nurnoch compiliert werden und an die richtige Stelle in den Kernel-Quellen kopiert werden.
Als erstes brauchen wir dazu Intel ACPI Source Language Compiler. Ich empfehle hierbei die Verwendung der Version
20050309, da es bei neueren Versionen Probleme mit den Optimierungen gibt:
Nun den DSDT in Hexformat compilieren:
Dabei entsteht dann eine Datei namens dsdt.hex. Diese kopiert man nun an die entsprechende Stelle in
den Kernel Quellen.
cp dsdt.hex /usr/src/linux/include/acpi/dsdt_table.h
|
Nun muss noch die Datei /usr/src/linux/drivers/acpi/osl.c gepatcht werden. Einen passenden Patch findet ihr
hier
Das wär's dann. Nun noch den Kernel compilieren, neustarten und sich an einem leisen und ordentlich
runtertaktenden Notebook erfreuen.
|
CPU Frequency Scaling
|
Mit einem funktionierenden DSDT ist ein funtkinierendes Prozessor Frequency Scaling kein Thema mehr.
Ich werde hier nun beschreiben, wie man dynamisches Runtertakten auf dem P35 ermöglicht.
Zuerst einmal sollten im Kernel bei den CPU Frequency scaling Einstellungen folgende Flags gesetzt
sein:
CPU Frequency scaling --->
Default CPUFreq governor (userspace) --->
‹M› Intel Enhanced SpeedStep
Use ACPI tables to decode valid frequency/voltage pairs
|
Wenn der Kernel entsprechend konfiguriert ist, einfach den Powernowd installieren, starten
und schon taktet die CPU dynamisch rauf und runter.
emerge powernowd
/etc/init.d/powernowd start
rc-update add powernoed default
|
|
Wlan
|
Die Einrichtung des Wireless LAN gestaltet sich bei dem P35 dank der guten Treiberunterstützung von
Intel recht einfach. Zuerst muss folgendes im Kernel aktiviert sein:
Wireless LAN (non-hamradio) --->
[*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
|
Nun benötigen wir noch die Wireless Tools.
Als nächstes benötigt man die Firmware und die Treiber von Intel für den Intel PRO/Wireless 2200BG/2915ABG
Chipsatz.
Als letztes müssen wir nun noch die /etc/conf.d/net und die /etc/conf.d/wireless einrichten.
Die Einstellungen werden hierbei für eth1 vorgenommen, unter der Annahme das eth0 bereits von
der normalen Netzwerkkarte verwendet wird.
# /etc/conf.d/wireless
# Einstellung der ESSID. "any" für beliebiges Netzwerk bzw.
# ESSID des gewünschten Netzwerks
essid_eth1="any"
# Modus des Netzwerkkarte. "managed" für Zugriffspunktnetzwerke,
# "ad-hoc" für Rechner zu Rechner Verbindungen, "auto" für automatische Konfiguration
mode_eth1="auto"
# ad-hoc ESSID falls bei "auto" kein managed netzwerk gefunden wird
adhoc_essid_eth1="WLAN"
# Einstellung des Übertragungkanals (1 - 12)
channel_eth1="4"
# WEP Verschlüsselung;
# Bei diesem Beispiel ist der WEP-String "foobar" und der encryption type auf open
# gestellt. Genaueres unter /etc/conf.d/wireless.example
key_ESSID="s:foobar enc open"
|
# /etc/conf.d/net
# Konfiguration der WLAN-Karte per DHCP
config_ESSID=( "dhcp" )
dhcpcd_ESSID="-t 5"
|
Genaueres zur Konfiguration kann man dann nich in /etc/conf.d/net.example bzw. /etc/conf.d/wireless.example
finden.
Nun muss unter /etc/init.d nurnoch ein entsprechendes Script für die WLAN-Karte angelegt werden. Dazu einfach
nur folgendes ausführen:
cp /etc/init.d/net.eth0 /etc/init.d/net.eth1
|
Wenn nun alles funktioniert hat, muss man lediglich das Modul laden. (Das Script wird dabei automatisch
ausgeführt)
|
Radio Buttons aktivieren / ACPI Events
|
Als nächstes widmen wir uns dem Knopf für das (De)Aktivieren des WLAN. Damit das überhaupt funktioniert,
benötigt man das Packet acpi4asus. Dabei wieder darauf achten, dass der richtig Kernel unter /usr/src/linux
zu finden ist.
Achtung! Beim 2.6.12er Kernel funktioniert das Asus ACPI nicht richtig auf dem P35. Es kommt beim
Starten zu einem Segmentation Fault bis hin zu einer Kernel Panic.
Nun noch das entsprechende Modul laden und schon sollte die WLAN-Taste leuchten.
Jetzt kann man unter /etc/acpi/events/ entsprechende Scripte erstellen, die bei den Events
ausgeführt werden sollen. Ich verwende folgende:
# /etc/acpi/events/wlan_start
# Event Wlan Radiobutton on
event=.*hotkey.*5e[[:space:]].*
# lade Modul für WLAN
action=modprobe ipw2200
|
# /etc/acpi/events/wlan_stop
# Event Wlan Radiobutton off
event=.*hotkey.*5f[[:space:]].*
# WLAN Modul aus dem Speicher entfernen
action=rmmod ipw2200
|
Um die ACPI-Events von den anderen Tasten (z.B. Lautstärke) zu erhalten, kann man das Tool acpi_listen benutzen.
Dann wie schon für den Radio Button einfach für die einzelnen Events entsprechende Scripte anlegen. Für Änderung der
Lautstärke und Anzeige der Änderung eignen sich z.B. osd_cat und amixer sehr gut.
|
Card Reader einrichten
|
Für den Card Reader gibt es zur Zeit leider noch keinen funktionstüchtigen Treiber, so dass man ihn leider
noch nicht unter Linux einsetzen kann.
|
Mainboard Sensoren und KSensors
|
Manchmal ist es ganz nützlich, wenn man die Temperaturen von CPU und Mainboard weiss. Dies kann man
mittels des Tools lm_sensors bewerkstelligen.
emerge lm_sensors
Als nächstes werden nun die passenden Treiber für die Sensoren des Notebooks ermittelt:
sensors_detect
Anschliessend die Anweisungen befolgen und dann die angegebenen Änderungen in /etc/modules.d/lm_sensors vornehmen.
Nun muss lm_sensors nurnoch gestartet werden:
/etc/init.d/lm_sensors start
rc-update add lm_sensors default
Der letzte Befehl fügt lm_sensors dem Runlevel default zu, so dass es beim Laden dieses Runlevels automatisch gestartet wird.
Nun muss lmsensors noch initialisiert werden:
sensors -s
Mit dem Befehl sensors (ohne -s) kann man nun die Temperaturen überprüfen. Wer ein gutes grafisches Tool möchte, kann sich
nun noch ksensors für KDE installieren.
|
|
|