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.
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.
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ß.
Die Soundkarte wurde als ATI Technologies Inc SB600 Azalia erkannt und mittels alsa.conf eingerichtet. Als Treiber findet snd_hda_intel Verwendung.
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.
Das Modem wurde nicht getestet.
Der PCMCIA-Steckplatz wurde mit einer UMTS-Karte getestet.
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.
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
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:
z.B.:
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.
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
in der /etc/modules erreicht. Die Anwahl erfolgt über Kppp. Dazu waren einige Anpassungen in der Datei /etc/ppp/options notwendig.
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.