Debian GNU/Linux 4.0r1 auf einem ASUS X51

Die Zeit war reif für einen neuen Laptop. Da in den bekannten Geiz-Sau-Blöd-Märkten nur Geräte mit Betriebssystem verkauft werden, bei denen sich die Anerkennung der Lizenzbedingungen durch den gesunden Mißtrauensverstand verbietet, ging es im Internet auf die Suche nach Laptops ohne Betriebssystem. Schließlich sollten mindestens die Kosten für ein unbrauchbares OS gespart werden. Die Entscheidung fiel dann auf einen ASUS X51R mit einem Intel Centrino Core Duo T2450 Prozessor mit 2x 2GHz Taktfrequenz, 2GB RAM, 15,4" WXGA TFT und 120GB HD. Als OS stand von vornherein Debian GNU/Linux fest. Dennoch wurden vor dem endgültigen Aufsetzen des Systems auch einige andere Distributionen getestet. SAM 2007 verweigerte bei der Erkennung der Netzwerkkarte seine weitere Zusammenarbeit, SUSE 10.3, Kubuntu 7.10 und Mandriva 2008 ließen sich zumindest problemlos installieren. Auf ausführliche Tests wurde aber verzichtet. Also die Debian-DVD rein und am Boot-Prompt ein beherztes installgui tasks="standard, kde-desktop" eingegeben und los ging die Reise.

ACPI

Die ACPI-Funktionen Suspend to RAM und Suspend to Disk werden durch das Laden des Moduls asus_acpi unterstützt. Ich habe ACPI unter KDE so konfiguriert, daß beim Zuklappen der Laptop in den Tiefschlaf fällt. Klappt hervorragend und hat den Nebeneffekt einer kurzen Boot-Zeit.

Grafik

Die Grafikkarte, eine ATI Radeon Xpress 1100, wurde bei der Installation zwar als Xpress 200M erkannt, die Einrichtung lief aber problemlos. Grundsätzlich unterstützt die Grafikkarte auch 3D. Die Funktion wurde von mir bei einer testweisen Installation von SUSE 10.3 geprüft, kommt aber unter Debian GNU/Linux nicht zum Einsatz. Funktionalität, Stabilität und Sicherheit sind mir mehr wert als grafischer Schnick-Schnack. Als Treiber kommt ati zum Einsatz. Dieser liefert zwar ein nicht ganz so schönes Textbild, dafür unterstützt er aber im Gegensatz zum ATI-eigenen fglrx-Treiber die XVideo-Funktionen. Die zugehörigen Einträge in der /etc/X11/xorg.conf lauten:

Section "Device"
        Identifier      "ATI Technologies Inc RC410 [Radeon Xpress 200M]"
        Driver          "ati"
        BusID           "PCI:1:5:0"
EndSection

Section "Monitor"
        Identifier      "Standardbildschirm"
        Option          "DPMS"
        HorizSync       28-64
        VertRefresh     43-60
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Device          "ATI Technologies Inc RC410 [Radeon Xpress 200M]"
        Monitor         "Standardbildschirm"
        DefaultDepth    24
        SubSection "Display"
                Depth           1
                Modes           "1280x800"
        EndSubSection
        SubSection "Display"
                Depth           4
                Modes           "1280x800"
        EndSubSection
        SubSection "Display"
                Depth           8
                Modes           "1280x800"
        EndSubSection
        SubSection "Display"
                Depth           15
                Modes           "1280x800"
        EndSubSection
        SubSection "Display"
                Depth           16
                Modes           "1280x800"
        EndSubSection
        SubSection "Display"
                Depth           24
                Modes           "1280x800"
        EndSubSection
EndSection

Da das Abspielen von DVDs etwas ruckelig war, ging ich der Sache auf den Grund. Erstaunlicherweise wurde beim DVD-Laufwerk standardmäßig der DMA-Modus nicht eingeschaltet, was sich aber problemlos mit hdparm -d 1 /dev/hdb nachholen ließ.

Sound

Die Soundkarte wurde als ATI Technologies Inc SB600 Azalia erkannt und mittels alsa.conf eingerichtet. Als Treiber findet snd_hda_intel Verwendung.

Netzwerkeinstellungen

Die Netzwerkkarte und der WLAN-Chip wurden korrekt erkannt. Für den WLAN-Chip ist noch die Installation des madwifi-Treibers erforderlich. Die Einrichtung beider Netzwerkverbindungen erfolgte über das Editieren der Datei /etc/network/interfaces. Entsprechend meinen Erfordernissen bekommt eth0 seine IP-Adresse per DHCP während ath0 eine feste IP hat, da sie hauptsächlich eine Ad-Hoc-Verbindung zu einem anderen Rechner aufbauen soll. Für das An- und Abschalten der Netzwerkkarte beim Verbinden mit dem Netzwerkkabel sorgt das Paket laptop-net. Um den WLAN-Chip mit Hilfe der Sondertasten zu aktivieren/deaktivieren ist neben der Programmierung der Sondertasten ein Eintrag unter /etc/modprobe.d erforderlich.
Danke an Stefan Luetje für den entscheidenden Tipp.
Eine Datei mit dem Inhalt options ath_pci autocreate=none sorgt dafür, daß nach dem Booten der WLAN-Chip prinzipiell erst einmal abgeschaltet ist. Das weitere An- und Abschalten erfolgt dann über die Sondertasten.

Modem

Das Modem wurde nicht getestet.

PCMCIA-Schnittstelle

Der PCMCIA-Steckplatz wurde mit einer UMTS-Karte getestet.

Kartenleser

Der Asus X51 verfügt über einen Kartenleser für 10 Typen von Speicherkarten. Aus Mangel an den verschiedenen Kartentypen, konnte der Kartenleser nur mit SD-Karten getestet werden. Zumindest dieser Kartentyp wurde erfolgreich erkannt.

Touchpad

Als Zeigegeräte kommen entweder das Touchpad oder eine USB-Maus zum Einsatz. Beide wurden in der /etc/X11/xorg.conf wie folgt konfiguriert:

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "mouse"
        Option          "SendCoreEvents"
        Option          "Device"                "/dev/input/mice"
        Option          "Protocol"              "ImPS/2"
        Option          "Emulate3Buttons"       "true"
EndSection

Section "InputDevice"
        Identifier      "Synaptics Touchpad"
        Driver          "synaptics"
        Option          "CorePointer"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option          "HorizScrollDelta"      "0"
        Option          "SHMConfig"             "on"
EndSection

Mit Hilfe von KHotKeys kann ich das Touchpad bei Bedarf über die Tasten F11/F12 ein- bzw. ausschalten. Die Einstellungen in der ~/.kde/share/config/khotkeysrc sehen wie folgt aus:

[Data_4]
Comment=
DataCount=3
Enabled=true
Name=Hot_Keys_Uwe
SystemGroup=0
Type=ACTION_DATA_GROUP

[Data_4Conditions]
Comment=
ConditionsCount=0

[Data_4_1]
Comment=schaltet Touchpad an
Enabled=true
Name=Touchpad_an
Type=COMMAND_URL_SHORTCUT_ACTION_DATA

[Data_4_1Actions]
ActionsCount=1

[Data_4_1Actions0]
CommandURL=synclient TouchpadOff=0
Type=COMMAND_URL

[Data_4_1Conditions]
Comment=
ConditionsCount=0

[Data_4_1Triggers]
Comment=Simple_action
TriggersCount=1

[Data_4_1Triggers0]
Key=F11
Type=SHORTCUT

[Data_4_2]
Comment=schaltet Touchpad aus
Enabled=true
Name=Touchpad_aus
Type=COMMAND_URL_SHORTCUT_ACTION_DATA

[Data_4_2Actions]
ActionsCount=1

[Data_4_2Actions0]
CommandURL=synclient TouchpadOff=1
Type=COMMAND_URL

[Data_4_2Conditions]
Comment=
ConditionsCount=0

[Data_4_2Triggers]
Comment=Simple_action
TriggersCount=1

[Data_4_2Triggers0]
Key=F12
Type=SHORTCUT

Tastatur

Die Tatstatur wurde korrekt erkannt. Um die Sondertasten zu nutzen, ist etwas Handarbeit erforderlich. Voraussetzung ist das Laden des Moduls asus_acpi, was durch einen Eintrag in der /etc/modules erfolgt. In /etc/acpi werden die Regeln für die Sondertasten erstellt (wlanonbtn, wlanoffbtn, mutetoggle, volume_down und volume_up), die alle den gleichen Konventionen folgen:

  1. Event definieren
  2. auszuführende Aktion>

z.B.:

  1. event=hotkey ATKD 00000032
  2. action=/etc/acpi/actions.sh speaker

Die Tastencodes bekommt man durch tail -f /var/log/acpid. Die auszuführenden Aktionen sind im Script /etc/acpi/actions.sh hinterlegt.

#!/bin/bash
if [[ ! ${1} ]]; then
	exit 1
fi
case ${1} in
	wlanoff)
	#wlan ausschalten
	wlanconfig ath0 destroy
	;;
	wlanon)
	#wlan einschalten
	wlanconfig ath0 create wlandev wifi0 wlanmode ahdemo
	;;
	speaker)
	#Lautsprecher an/aus
	#lese derzeitige Lautstärke aus
	mastervolume=`/usr/bin/amixer get Master \
		| grep % | awk '{print $4}' | uniq`
	if (( ${mastervolume} > "0" )); then
		#wenn Lautstärke > 0 speichere Wert in temporäre Datei
		echo "${mastervolume}" > /tmp/mastervolume
		#setze Lautstärke auf 0
		/usr/bin/amixer set Master 0
	else
		#wenn Lautstärke = 0, 
		#lese letzte Lautstärke aus temporärer Datei
		read mastervolume < /tmp/mastervolume
		#setze Lautstärke
		/usr/bin/amixer set Master ${mastervolume} 
	fi
	;;
	down)
	#leiser
	/usr/bin/amixer set Master 1-
	;;
	up)
	#lauter
	/usr/bin/amixer set Master 1+
	;;
esac

Für die Sondertasten, die die Helligkeit des Bildschirms steuern und für die Umschaltung zwischen TFT und externem Monitor sorgen, hab ich noch keine Funktion finden können.

UMTS-Modem

Als UMTS-Modem kam ein Novatel Merlin XU870 zum Einsatz. Voraussetzung für den Betrieb ist das Laden des Moduls usbserial mit den entsprechenden Parametern vor dem Einstecken der Karte. Dies wird durch den Eintrag

  1. usbserial vendor=0X1410 product=0x1430

in der /etc/modules erreicht. Die Anwahl erfolgt über Kppp. Dazu waren einige Anpassungen in der Datei /etc/ppp/options notwendig.

  1. Zeile 35 auth nach noauth ändern
  2. Zeile 166 das Kommentarzeichen # entfernen um ausführliche debug-Meldungen zu bekommen
  3. Zeile 218 und 226 auskommentieren

Vielen Dank an Willi Zelinka für den Tipp. Der Init-String wurde in ATZ+CSQ geändert. Die PIN-Eingabe wird vor ausführen der Anwahl durch ein Script erledigt:

#!/usr/bin/env perl
use strict;
use warnings;

my $modem = "/dev/ttyUSB0";
my $pin = "1450";

$SIG{ALRM} = sub {
        die("timeout: no response from modem $modem\n");
};

open(MODEM, "+< $modem) or die("canĀ“t open modem $modem");
alarm(10);
print(MODEM "AT+CPIN=\"$pin\"\n\r");
while (<MODEM>) {
        if (m/OK/) {
                close(MODEM);
                print("PIN accepted\n");
                exit(0);
        }
        if (m/ERROR/) {
                close(MODEM);
                print("PIN rejected\n");
                exit(1);
        }
}

Da ich eine Prepaid-Karte benutze, sorgt ein Eintrag unter "Ausführen -> Nach Verbindungsaufbau" für den Aufruf des Browsers, damit die Abbuchung des Betrages von der Karte erfolgen kann.