BenQ Joybook R53 und Debian

Aus MostlyHarmless

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Aktualitätshinweis

Aktuell wird auf dem Notebook meiner Freundin kein Debian GNU/Linux mehr betrieben. Ich habe von Bastian den Hinweis bekommen, dass sich die Situation ab Kernel 2.6.18 gebessert hat, da das Smart Battery System nun standardmäßig unterstützt wird:

Power management options (ACPI, APM) --->
ACPI (Advanced Configuration and Power Interface) Support --->
...
<*> Smart Battery System (EXPERIMENTAL)

Auch der SD/MMC Kartenleser soll nun laufen:

Device Drivers --->
MMC/SD Card support --->
<*> MMC support
[ ] MMC debugging
<*> MMC block device driver
<*> Secure Digital Host Controller Interface support (EXPERIMENTAL)
< > Winbond W83L51xD SD/MMC Card Interface support 

Ich konnte das mit Debian GNU/Linux nicht mehr nachvollziehen, da bei einem Update auf die aktuelle Debian-Version das System so schwer beschädigt wurde, dass mir eine Reperatur unmöglich war. Auf dem Laptop lief nach Debian ein openSUSE 10.2, das in einem seperaten Artikel beschrieben wird. Aktuell ist ein Ubuntu im Einsatz, dessen Installation in Artikel BenQ Joybook R53 und Ubuntu beschrieben wird.

Hardware

Das Notebook hat die folgenden technischen Daten (es existieren von diesem Notebook mehrere Varianten, die sich ggf. in Speicherausbau und Hardware unterscheiden):

  • 15,4" WXGA TFT LCD Display (max. 1280x800 Pixel in 32 Bit Farben)
  • Intel Pentium M Prozessor mit 1.86 GHz
  • ATI Mobility Radeon X600 Grafikchip (64 MB Video-RAM)
  • 1 GB RAM (2x 512 MB PC-533)
  • 80 GB Festplatte
  • DVD-Brenner (Double-Layer, +/-)
  • IEEE802.11g

Herstellerinformationen

BIOS-Update nötig

Damit die Taste "< > |" (Kleiner als, größer als, Pipe) unter Linux und/oder Windows funktioniert, muß man ein BIOS-Update von der BenQ-Webseite herunterladen und installieren.

Das BIOS unterstützt im übrigen kein APM.

lspci

lspci identifiziert die folgenden Geräte

0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 04)
0000:00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 04)
0000:00:1b.0 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 04)
0000:00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 04)
0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 04)
0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
0000:00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
0000:00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 04)
0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 04)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc M24 1P [Radeon Mobility X600]
0000:06:01.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
0000:06:01.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller
0000:06:01.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller
0000:06:03.0 Network controller: Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter (rev 05)
0000:06:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Installations-CD

Ich habe den Debian-Installer für Debian Sarge 3.1 R0a verwendet (netinst image). Nach der Installation habe ich allerdings wegen der aktuelleren Software und dem für mein weiteres Vorgehen benötigten Kernel 2.6.14 auf testing bzw. unstable gewechselt. Dieses Vorgehen kann ich einem Nicht-Debian-Profi nicht empfehlen! Es kann mit viel Handarbeit verbunden sein.

Kernel

Die CD enthielt den Kernel 2.6.8, der aber beim Starten des PCMCIA Cardmanagers eingefroren ist. Durch einen Boot von Knoppix kam ich auf die Bootoptionen "acpi=off noapic pci=bios", was das Problem löste. Mit dieser Kernel-Version und ohne ACPI funktioniert allerdings das integrierte WLAN-Modul nicht. Der Kernel 2.6.14 aus unstable läuft mit den Optionen "apm=off acpi=on", er läßt sich mit "apt-get install kernel-image-2.6-386" installieren.

Installationsverlauf

Der Rest der Installation lief wie von Debian gewohnt. Erfreulich ist, dass Netzwerkkarte und Grafikkarte quasi auf Anhieb liefen. Die Netzwerkkarte meldet sich als "Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+". Für die Grafikkarte habe ich den Standard ATI-Treiber verwendet. Ich habe die maximale Auflösung von 1280x800 eingestellt. Das Update von Debian stable auf testing/unstable war mit Handarbeit verbunden, da sich testing/unstable temporär in teilweise inkonsistentem Zustand befunden hat. Es war aber durch Einspielen der jeweils passenden Pakete aus testing bzw. unstable zu schaffen.

Das Touchpad

Das Touchpad kommt von Synaptics. Es läuft auch als normales PS/2 Gerät, da parallel eine USB-Maus betrieben wird, ist /dev/input/mice als Maus-Device eingetragen. Mit dem x.org X-Server (aus testing/unstable) funktioniert es ohne weitere Konfiguration (inkl. scrollen).

WLAN

Die integrierte WLAN-Karte habe ich nur mit aktiviertem ACPI und mit dem Kernel 2.6.14 zum Laufen bekommen (Installation des Kernels siehe oben). Ein "apt-get install wireless-tools" installiert die nötigen Tools um die WLAN-Karte zu konfigurieren. Zunächst muß man allerdings noch die Intel® PRO/Wireless 2200BG Driver Firmware herunterladen und in den Ordner /usr/lib/hotplug/firmware kopieren. Wenn man die Firmware frisch installiert hat und nicht rebooten will, sollte man das beim Booten geladene Modul mit "modprobe -r ipw2200" entfernen, bevor man das Modul mit "modprobe ipw2200" läd.

Das Interface läßt sich dann so hochfahren:

ip link set eth0 up

Alternativ, wenn man nur ein WLAN hat, das unverschlüsselt ist und einen DHCP-Server hat:

dhclient eth0

Nach WLANs scannen

iwlist eth0 scanning

eth0 muß entsprechend durch den Interfacenamen ersetzt werden, den die WLAN-Karte bei euch bekommt.

Achtung: Da mit dieser Konfiguration der PCMCIA-Cardmanager einfriert, ist unbedingt der nächste Abschnitt zu PCMCIA zu beachten.

PCMCIA unter Kernel 2.6.14 mit eingeschaltetem ACPI

Mit eingeschaltetem ACPI friert der Cardmanager auf dem Notebook grundsätzlich ein. Bei mir konnte ich das Problem lösen indem ich in der Datei /etc/pcmcia/config.opts folgende Änderung vorgenommen habe:

include port 0x100-0x4ff
# Das hier stürzt mit ACPI ab:
#include port 0x800-0x8ff
include port 0xc00-0xcff
include memory 0xc0000-0xfffff
include memory 0xa0000000-0xa0ffffff
include memory 0x60000000-0x60ffffff

Sollte der Cardmanager beim Start mit /etc/init.d/pcmcia start an einer anderen Stelle als 0x800-0x8ff hängen bleiben, muß entsprechend die passende Zeile auskommentiert werden.

Temperatur der Festplatte anzeigen

Die in meinem Modell eingebaute Festplatte ist hddtemp bekannt.

vetinari:~# hddtemp /dev/hda
/dev/hda: HTS541080G9AT00: 48°C

SpeedStep

Um Strom zu sparen kann der Intel Pentium M Prozessor per Software heruntergetaktet werden. Dazu sind einige Einstellungen im Kernel nötig und ein Software-Dämon, der periodisch die Systemlast abfragt und abhängig davon die CPU-Taktrate setzt. Ist der Laptop wenig beschäftigt, regelt der Dämon die CPU auf 800 MHz runter, bei mittlerer Auslastung auf 1333 MHz. Unter Vollast werden die maximalen 1.86 GHz benutzt.

Power management options (ACPI, APM)  --->
	CPU Frequency scaling  --->
		[*] CPU Frequency scaling
		[ ]   Enable CPUfreq debugging
		<M>   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
		---   CPUFreq processor drivers
		<M>   ACPI Processor P-States driver
		<M>   AMD Mobile K6-2/K6-3 PowerNow!
		<M>   AMD Mobile Athlon/Duron PowerNow!
		<M>   AMD Opteron/Athlon64 PowerNow!
		<M>   Cyrix MediaGX/NatSemi Geode Suspend Modulation
		<M>   Intel Enhanced SpeedStep
		[*]     Use ACPI tables to decode valid frequency/voltage pairs
		[*]     Built-in tables for Banias CPUs
		<M>   Intel Speedstep on ICH-M chipsets (ioport interface)
		<M>   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
		<M>   Intel Pentium 4 clock modulation
		<M>   nVidia nForce2 FSB changing
		<M>   Transmeta LongRun
		<M>   VIA Cyrix III Longhaul
		---   shared options
		[ ]   /proc/acpi/processor/../performance interface (deprecated)
		[ ]   Relaxed speedstep capability checks

In der Datei /etc/modules trägt man dann die folgenden Module ein, damit sie beim Systemstart geladen werden:

acpi-cpufreq
freq_table
cpufreq-userspace

An Software installiert man dann noch den powersaved und kpowersave, letzteres Programm blendet unter KDE eine Anzeige für die Akkuladung ein, wenn man mit der Maus drüber fährt erscheint ein Tooltip, der neben der Batterieladung auch die aktuelle CPU-Takrate anzeigt.

vetinari:~# apt-get install powersaved kpowersave

Batterie- und AC-Anzeige

Mit dem normalen 2.6.14er Kernel kann per ACPI der Batterie- und AC-Status nicht abgefragt werden:

vetinari:~# acpitool
 Battery status : <not available>
 AC adapter     : <not available>
 Thermal zone 1 : ok, 61 C

Das liegt daran, das in dem Notebook eine Smart Batterie eingebaut ist, welche vom Linux-Kernel nicht unterstützt wird. Es finden sich für andere Notebooks einige Patches, die für das R53 allerdings alle nicht helfen (z.B. http://sourceforge.net/projects/sbs-linux für einige Acer). Auf den Kernel 2.6.13.4 läßt sich der Patch für das Toshiba Satellite Pro L10 anwenden. Diese Kernel-Version war mir dann aber doch etwas zu alt, außerdem wollte ich lieber einen Patch, der sich auch auf zukünftige Kernel portieren läßt. Ich habe mir also genau angeschaut was der Patch am Kernel ändert und habe dann entsprechend zwei weitere Patches geschrieben um den Patch auf dem 2.6.14.4er Kernel zum Laufen zu bekommen. Im folgenden gibt es eine Schritt für Schritt Anleitung, die man als root-Benutzer ausführen kann.

vetinari:~# apt-get install linux-source-2.6.14 wget
vetinari:~# cd /usr/src
vetinari:~# wget http://www.get42.de/linux/kernel/patch/acpi-ec-2.6.14.4.diff
vetinari:~# wget http://www.get42.de/linux/kernel/patch/acpi_sbs-20050120.tar.gz
vetinari:~# wget http://www.get42.de/linux/kernel/patch/acpi_sbs-20050120-Toshiba-L10-Patch.diff
vetinari:~# wget http://www.get42.de/linux/kernel/patch/acpi_sbs-20050120-kernel-2.6.14.diff
vetinari:~# tar xjf linux-source-2.6.14.tar.bz2
vetinari:~# cd linux-source-2.6.14

Nun muß man den Kernel konfigurieren. Wenn man selbst keine Ahnung hat, kann man zum Beispiel die Konfiguration des Debian-Kernels übernehmen:

vetinari:~# cp /boot/config-2.6.14-2-386 .config

Mit dieser (oder einer anderen Grundlage für Kernel-Konfiguration) kann man nun die Konfiguration starten:

vetinari:~# make menuconfig

Einzustellen sind die folgenden Punkte wie aufgeführt. Bei der Gelegenheit sollte man auch die Einstellungen für SpeedStep vornehmen, die sich im selben Menü verbergen.

Power management options (ACPI, APM)  --->
	ACPI (Advanced Configuration and Power Interface) Support  --->
		[*] ACPI Support
		[*]   Sleep States
		[ ]     /proc/acpi/sleep (deprecated)
		< >   AC Adapter
		< >   Battery
		<M>   Fan
		<M>   Processor
		<M>     Thermal Zone
	APM (Advanced Power Management) BIOS Support  --->
		< > APM (Advanced Power Management) BIOS support

Nun muß der erste der weiter oben mit wget heruntergeladenen Patches eingespielt werden.

vetinari:~# cd drivers/acpi/
vetinari:~# patch -p1 ec.c ../../../acpi-ec-2.6.14.4.diff
patching file ec.c
vetinari:~# cd ../..

Nun kann der Kernel compiliert und installiert werden. Ich wähle die Installation mit einem initrd-Image, da ich ohne initrd-Image das Problem hatte, das die Festplatte nicht im DMA-Modus lief und dadurch spürbar langsam war. Noch eine Anmerkung: ich habe meiner Kernel-Version ein voja in der Versionnummer hinzugefügt, um ihn besser von den Debian-Kerneln unterscheiden zu können. Wer das nicht getan hat, muß bei den folgenden Befehlen das "voja" bzw. ".voja" weglassen.

vetinari:~# make all && make modules_install
vetinari:~# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.14.voja
vetinari:~# cd /boot
vetinari:~# mkinitrd -o /boot/initrd.img-2.6.14voja 2.6.14voja

Nun trage ich den neuen Kernel von Hand in die grub-Konfiguration ein (dieser Schritt kann bei komplett automatischer Kernel-Verwaltung durch grub weggelassen werden).

vetinari:~# joe grub/menu.lst

Folgendes ergänze ich vor der automatisch generierten Kernel-Liste:

	title           Debian GNU/Linux
	root            (hd0,4)
	kernel          /vmlinuz-2.6.14.voja root=/dev/hda9 ro apm=off acpi=on noapic
	initrd          /initrd.img-2.6.14voja
	savedefault
	boot

Dann lasse ich grub seine Konfiguration updaten und starte den Laptop neu.

vetinari:~# update-grub
vetinari:~# reboot

Im Anschluß arbeite ich dann wieder als root weiter, da ich nun noch zwei Kernel-Module kompilieren und einbinden muß. Achtung: Für die folgenden Schritte muß wirklich der neue 2.6.14er Kernel gebootet sein. Auf die Kernel-Module werden vor dem Compilieren zwei Patches angewandt. Der zweite Patch ist meine Anpassung des Patches an den 2.6.14er Kernel.

vetinari:~# cd /usr/src/
vetinari:~# tar xzf acpi_sbs-20050120.tar.gz
vetinari:~# cd acpi_sbs-20050120
vetinari:~# patch -p1 < ../acpi_sbs-20050120-Toshiba-L10-Patch.diff
patching file acpi-sbs.c
vetinari:~# patch -p1 i2c-acpi-ec.c < ../acpi_sbs-20050120-kernel-2.6.14.diff
patching file i2c-acpi-ec.c
vetinari:~# make
vetinari:~# make install

Nun kann man die Module erstmals reinladen.

vetinari:~# modprobe i2c-acpi-ec
vetinari:~# modprobe acpi-sbs

Von jetzt an liefert z.B. acpitool bzw. klaptopdaemon eine Anzeige für den Akku.

vetinari:~# acpitool
 Battery #1     : charged, 100.0%
 AC adapter     : on-line
 Thermal zone 1 : ok, 60 C

Um die beiden Module bei jedem Boot einzubinden, sollte man folgende Zeilen in /etc/modules ergänzen.

i2c-acpi-ec
acpi-sbs

Das war es dann. Wenn man SpeedStep benutzt, bekommt man über kpowersave Auskunft über den Akku-Status. Je nach Geschmack kann man auch noch klaptopdaemon installieren.

apt-get install klaptopdaemon

Das Programm klaptop_check blendet dann ein Batterie-Symbol in der KDE-Icon-Area ein. Kleiner Hinweis: Man sollte nie sagen das KLaptop beim Start nicht mehr geladen werden soll, da man das Programm dann nur wieder sehr schwer oder gar nicht zum Starten überreden kann.

Meine Anpassungen an den 2.6.14er Kernel wären ohne den Hinweis von Jan Böschow auf den Patch für den 2.6.13er Kernel nicht möglich gewesen. Danke.

Sound

lspci zeigt die Soundkarte so an:

0000:00:1b.0 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 04)

Auf den ersten Blick (und mit den ersten getesteten Kerneln) funktionierte die Soundkarte nicht. Mit Kernel 2.6.14 warf ich einen erneuten Blick auf die Soundkarte und siehe da: sie läuft. An Software muß man die Alsa-Utilities installieren.

apt-get install alsa-base alsa-oss alsa-utils alsamixergui

Beim Kernel einfach alles was mit ALSA zu tun hat als Modul aufnehmen. Als Treiber muß dann auf jeden Fal der Intel HD Audio Treiber eingebunden werden (Auszug Kernel-Konfiguration):

Device Drivers  --->
	Sound  --->
		<M> Sound card support
		Advanced Linux Sound Architecture  --->
		<M> Advanced Linux Sound Architecture
		<M>   Sequencer support
		<M>     Sequencer dummy client
		<M>   OSS Mixer API
		<M>   OSS PCM (digital audio) API
		[*]   OSS Sequencer API
		<M>   RTC Timer support
		[*]     Use RTC as default sequencer timer
		PCI devices  --->
		<M> Intel HD Audio

Was noch ungetestet ist

DVD-Brenner

Noch ungetestet. Sollte aber eigentlich gehen, k3b hat den Brenner wohl erkannt.

Internes Modem

Ungetestet. Da im lspci aber nichts von Modem zu lesen ist würde ich sagen das Modem läuft nicht.

Programmierbare Tasten

Dieser Kernel-Patch soll helfen die Tasten P1, P2 usw. zum Funktionieren zu überreden: http://klasseonline.dyndns.org/index.php?load=dl&dl=down/2.6.8.1-joybook-keyboard.patch

(Gefunden auf dieser Seite: http://www.linuxjoybook.at.tt/)

Danke für den Tipp an Jan Böschow. Danke für die aktualisierten URLs an Andreas Böhler.

Was getestet ist und nicht geht

Kartenleser

Der Cardreader dürfte hierran hängen:

0000:06:01.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller

Auf Seiten zu anderen Joybooks war zu lesen das es für den Cardreader keine Linux-Treiber gibt. Ich konnte während dem Systemstart auch keinerlei Geräte im Syslog finden, über die ich eine Einbindung hätte versuchen können.

Lüfter

Der Lüfter ist im Vergleich zu Windows unter Linux viel öfter an. Das Ganze fällt negativ auf, weil der Lüfter periodisch immer wieder hochdreht. Erst mit den Einstellungen für SpeedStep besserte sich dieses Verhalten (außer der Laptop ist permanent unter Vollast).

tuxmobil_sticker.png TuxMobil - Linux on laptops, notebooks, PDAs and mobile phones

Persönliche Werkzeuge