ACPI-DSDT: Einrichten der "Smart-Battery" auf ACER-Laptops

Status
Für weitere Antworten geschlossen.

Rain_Maker

Administrator
Teammitglied
ACPI-DSDT: Einrichten der "Smart-Battery" auf ACER-Laptops

Hallo zusammen,

Seit etwa 2.5 Jahren bin ich stolzer Besitzer eines Acer Extensa 3002 WLMi und eigentlich auch ganz zufrieden.

Einer der wirklich störenden Punkte war jedoch für mich immer, daß die Batteriestatus-Anzeige unter SuSE nicht funktionierte.

Zwar gab es immer wieder Lösungen, die wohl funktionierten, aber alle, die ich gefunden hatte, waren mit dem Patchen und Kompilieren eines eigenen Kernels verbunden, und da dies dann bei jedem Kernel-Update wieder der Fall wäre, habe ich das Ganze zunächst mal sein gelassen und es geriet in Vergessenheit.

Vor ein paar Tagen habe ich mich dann wieder ans Suchen im WWW gemacht und siehe da, es gab eine vielversprechende Lösung, die ich dann erfolgreich anwenden konnte OHNE meinen Kernel neu zu kompilieren. Wie sich später herausstellte, existiert diese Lösung zumindest prinzipiell schon etwas länger, aber was solls.

Diese Lösung möchte ich nun hier Schritt für Schritt vorstellen:

0. Das Prinzip

Im Endeffekt wird die -unter Linux fehlerhaft interpretierte- DSDT durch eine von uns gepatchte DSDT ersetzt und nicht - wie in den meisten "alten" Lösungen vorgeschlagen- in den neu zu erstellenden Kernel eingebunden, sondern in die Initial Ramdisk.
Dadurch wird beim Booten die gepatchte DSDT verwendet ... et voila .. die Batterieanzeige funktioniert.

DSDT? Was ist denn das überhaupt?

http://acpi.sourceforge.net/dsdt/index.php schrieb:
What is a DSDT?
This is just a short introduction to DSDTs, see the specification, chapter 2.1 for more info.
DSDT is an acronym for Differentiated System Description Table. This table contains the Differentiated Definition Block, which supplies the information and configuration information about the base system. It is always inserted into the ACPI Namespace by the OS at boot time. Unfortunately, many hardware vendors and OEMs are not capable of supplying fully functional tables (not even the members of the ACPI SIG), see also the blacklist. So there is a need to patch these tables by us. :)
1. Vorarbeiten/Voraussetzungen.

- Im Kernel muß der "ACPI DSDT in initrd"-Patch enthalten sein. Wer einen Vanilla-Kernel von kernel.org am Laufen hat, der muß diesen Patch einspielen und seinen Kernel nun doch neu kompilieren, aber das ist in diesem Fall nicht meine "Zielgruppe" ;).
Wer einen SuSE-Distributionskernel verwendet, der braucht hier keine weiteren Vorarbeiten zu leisten.

http://gaugusch.at/kernel.shtml schrieb:
SuSE, Mandriva and Ubuntu, as well as other distros, already include this patch in the default kernel, no need for re-compiling your kernel! In SuSE, have a look at /etc/sysconfig/kernel for more information (ACPI_DSDT=...)
- Sicherungskopien anlegen, falls denn etwas schiefgehen sollte und sich einen "Arbeitsordner" schaffen, in dem wir dann die Patches anwenden und Tests durchführen können.
Da wir in der initrd rumpatchen, ist es eine gute Idee, diese vorher zu sichern. Im Folgenden beschreibe ich das Ganze unter Verwendung von Konqueror, auch wenn ich selbst lieber die Kommandozeile verwende. Trotzdem sollte schon zu Beginn auch eine Konsole "griffbereit" sein.

a) Konqueror als root starten.

Code:
kdesu konqueror
b) Ins Verzeichnis /boot/ wechseln und dort die Datei initrd-*aktuelleKernelversion*-default (oder wenn man einen smp-Kernel hat, da natürlich initrd-*aktuelleKernelversion*-smp) kopieren und als initrd-*Kernelversion*-default.bak einfügen.

Es existiert auch eine Verküpfung, die nur initrd heisst, diese kopieren wir jetzt ebenfalls und nennen die Datei initrd.bak. Nach diesem Schritt sollte das Ganze so in etwa aussehen:

Code:
cd /boot/

ls -ls initrd*

0 lrwxrwxrwx  1 root root      26 2006-05-21 03:06 initrd -> initrd-2.6.13-15.8-default
2194 -rw-r--r--  1 root root 2240885 2006-05-21 03:06 initrd-2.6.13-15.8-default
2194 -rw-r--r--  1 root root 2240705 2006-05-21 02:20 initrd-2.6.13-15.8-default.bak
0 lrwxrwxrwx  1 root root      26 2006-05-21 03:07 /boot/initrd.bak -> initrd-2.6.13-15.8-default
Wie man sehen kann, zeigen die Links initrd und initrd.bak beide auf initrd-2.6.13-15.8-default.


c) Einen neuen Ordner erstellen (ich habe ihn in /opt/ erstellt und dsdt genannt) und dort ebenfalls eine Kopie der initrd-*aktuelleKernelversion*-default ablegen und diese in initrd-*aktuelleKernelversion*-default-dsdt umbenennen.

Achtung!: Wer /opt/ auf einer EXTRA-Partition hat, der sollte im Anschluß bevor er Schritt 3 ausführt, die gepatchte intrd in /boot/ kopieren und die Links entsprechend anpassen.

d) Den "Smart Battery System for Linux" DSDT-Patch von Rich Townsend (sbs-cm) hier

http://sourceforge.net/projects/sbs-linux/

herunterladen, entpacken und die Dateien in den Ordner /opt/dsdt/ kopieren.

Code:
cd /opt/dsdt/

ls -ls

acer-tm32xx-sbs-cm.diff
acer-tm4xxx-sbs-cm.diff
acpi-ec-nospinlock-2.6.10.diff
acpi-ec-nospinlock-2.6.11.diff
acpi-ec-nospinlock-2.6.12.diff
acpi-ec-nospinlock-2.6.13.diff
acpi-ec-nospinlock-2.6.14.diff
COPYING
initrd-2.6.13-15.8-default-dsdt
README
sbs-cm-1b.asl
sbs-cm-2b.asl
smbus-cm.asl
So sollte das in etwa nach diesem Schritt aussehen.

2. Das eigentliche "Patchen" des DSDT

Hierzu benötigen wir den Intel ASL compiler "iasl", der bei sich normalerweise auch schon auf dem System befindet.

Eine Eingabe von

Code:
su

(Passwort)

iasl
ohne weitere Parameter liefert dann in etwa Folgendes:

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20050902 [Sep 9 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0
....... usw usw.
OK, noch einmal TIIIIIIIIIIEEEEEEEEEF Durchatmen und los gehts (die folgenden Schritte sind als root in der Konsole auszuführen).

Code:
su

(Passwort)

cd /opt/dsdt/
a) Auslesen der aktuellen DSDT aus /proc/acpi/ in eine Datei.

Code:
cat /proc/acpi/dsdt > dsdt.out
Nun sollte eine Datei dsdt.out im Verzeichnis /opt/dsdt/ auftauchen.

b) Disassembling ("Dekompilieren") der dsdt.out (Keine Sorge, ich bin bei Euch ;) ).

Code:
iasl -d dsdt.out

Intel ACPI Component Architecture
AML Disassembler version 20050902 [Sep  9 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0

Loading Acpi table from file dsdt.out
Acpi table [DSDT] successfully installed and loaded
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
.....................................................................
Parsing completed
Disassembly completed, written to "dsdt.dsl"
Nun wurde die binäre dsdt.out in -menschenlesbaren- Quellcode umgewandelt und in die Datei dsdt.dsl geschrieben.

c) Patchen der dsdt.dsl mit dem geeigneten Patch.

Hierzu sollte man zuvor einen Blick in das README werfen:

Patches
-------

In this release, two patches are available; the list below indicates
what machines these patches are expected/known to work on:

acer-tm4xxxx-sbs-cm.diff
*) Acer Extensa 3001WLMi [w]
*) Acer Extensa 3002WLMi [w]
*) Acer TravelMate 4000LMi [c]
*) Acer TravelMate 4000WLMi [w]
*) Acer TravelMate 4001LMi [w]
*) Acer TravelMate 4001WLMi [w]
*) Acer TravelMate 4002LMi [w]
*) Acer TravelMate 4502LMi [w]
*) Acer TravelMate 4502WLMi [w]

acer-tm32xx-sbs-cm.diff
*) Acer TravelMate 2303LCi [w]
*) Acer TravelMate 3201XCi [w]
*) Acer TravelMate 3202XCi [w]
Dazu muss man nichts mehr sagen, oder? Wählt euer Modell aus und los gehts:
Code:
patch < XXXXXXXX-sbs-cm.diff
(Hier wählt Ihr natürlich den für Euer Modell geeigneten Patch aus).

Das in etwa sollte ausgespuckt werden:

Code:
Hunk #1 succeeded at 3730 (offset 475 lines).
Hunk #2 succeeded at 3758 (offset 475 lines).
Hunk #3 succeeded at 5338 (offset 411 lines).
Die Zahlen können/werden differieren, aber wichtig ist, KEINE Fehlermeldungen.

d) Neukompilieren der nun gepatchten dsdt.dsl.

Code:
iasl dsdt.dsl
Compilation complete. 0 Errors, 7 Warnings, 0 Remarks, 933 Optimizations
Auch hier gilt, Zahlen können anders sein, wichtig ist nur, KEINE Errors.

Wenn die Kompilation geklappt hat, dann sollte sich im Ordner /opt/dsdt/ eine Datei DSDT.aml befinden. Hat es nicht funktioniert, dann ist die DSDT selbst buggy und wer sich weiter reinknien will, der kann sich das HowTo im Gentoo-Forum ansehen.

http://forums.gentoo.org/viewtopic.php?t=122145

Sollte es jemandem gelingen, eine DSDT zu debuggen, dann gilt folgendes hier:

http://acpi.sourceforge.net/dsdt/index.php schrieb:
Add and Edit
Of course, you can also add or edit a DSDT. Before you can add one, you have to create a user in our user database. Registered users can add DSDTs and "sign" comments for a DSDT.
Und vor allem auch:

http://acpi.sourceforge.net/wiki/index.php/SuseHowToLoadCustomDsdtTable schrieb:
Don'f forget to mail your BIOS vendor your patch, somebody has to educate them how to do it right.
Warum mir bei dem letzten Nebensatz die Zornesröte ins Gesicht steigt, könnt ihr hier nachlesen:

http://forums.gentoo.org/viewtopic.php?t=122145

(Abschnitt 10a *GRMBL*).

3. TEST: Gefahrloses Einbinden der gepatchten DSDT in eine Initial Ramdisk und Testlauf.

Nachdem wir nun eine gepatchte DSDT haben (DSDT.aml) müssen wir unserem System noch beibringen, sie auch zu verwenden. Um auf Nummer sicher zu gehen, testen wir zunächst, ob die neue DSDT überhaupt funktioniert.

a) Erzeugen einer initrd mit eingebundener DSDT.aml.

Hierzu rufen wir den Befehl "mkinitrd" mit dem Parameter -k (welcher Kernel soll verwendet werden), -a (was wollen wir EXTRA zur initrd hinzufügen) und -i (in welche Datei soll die neue initrd geschrieben werden) auf. Ich führe dies hier beispielhaft für den gerade aktuellen Kernel /boot/vmlinuz-2.6.13-15.8-default durch. Die neue initrd wird in /opt/dsdt/initrd-2.6.13-15.8-default-dsdt geschrieben.


---> Weiter gehts nach der nächsten Maus ääääh im nächsten Posting ;).
 

Rain_Maker

Administrator
Teammitglied
ACPI-DSDT: Einrichten der "Smart-Battery" auf ACER-Laptops (Teil 2)

Code:
mkinitrd -k /boot/vmlinuz-2.6.13-15.8-default -a DSDT.aml -i /opt/dsdt/initrd-2.6.13-15.8-default-dsdt
Am Ende der Neuerstellung der initrd sollte in etwa Folgendes da stehen:

Code:
Driver modules: ide-disk piix processor thermal fan
Filesystem modules:     reiserfs
Including:      klibc initramfs udev fsck.reiserfs
Bootsplash:     SuSE (1024x768)
ACPI DSDT:      DSDT.aml
7846 blocks
Die vorletzte Zeile ist der entscheidende Eintrag die Datei DSDT.aml wurde der Initial Ramdisk /opt/dsdt/initrd-2.6.13-15.8-default-dsdt hinzugefügt ;).

b) ACHTUNG!: Neusetzen der Links in /boot/

Zwar haben wir absichtlich zunächst die "eigentliche" initrd-2.6.13-15.8-default im Verzeichnis /boot/ nicht geändert, damit wir falls irgendetwas nicht gehen sollte, diese auch starten können, doch hat der letzte Befehl dummerweise die symbolischen Links neu gesetzt.

Code:
ls -ls /boot/initrd*

0 lrwxrwxrwx  1 root root      26 2006-05-21 03:06 initrd -> /opt/dsdt/initrd-2.6.13-15.8-default-dsdt
2194 -rw-r--r--  1 root root 2240885 2006-05-21 03:06 initrd-2.6.13-15.8-default
2194 -rw-r--r--  1 root root 2240705 2006-05-21 02:20 initrd-2.6.13-15.8-default.bak
   0 lrwxrwxrwx  1 root root      26 2006-05-21 19:00 initrd.bak -> initrd-2.6.13-15.8-default
Wie man sieht, zeigt der Link "initrd" nun auf unsere neu erstellte initrd-2.6.13-15.8-default-dsdt in /opt/dsdt/. Da wir aber zunächst nur testen wollen, ob es geklappt hat, müssen wir nun das System in den Zustand VOR unserem "Gebastel" versetzen. Die neue initrd binden wir über einen neuen Eintrag in GRUB hinzu. So ist sicher gestellt, daß im Falle eines (Not)Falles, wir zumindest wieder die alte Konfiguration starten können. Deshalb haben wir in Schritt 1 b) die Kopie initrd.bak des Links erstellt.

Nun benennen wir ZUERST den Link "initrd" in "initrd-dsdt" um und anschliessend benennen wir den Link "initrd.bak" in "initrd" um.

Danach sollte das Ganze so aussehen:

Code:
ls -ls /boot/initrd*

0 lrwxrwxrwx  1 root root      26 2006-05-21 03:06 initrd-dsdt -> /opt/dsdt/initrd-2.6.13-15.8-default-dsdt
2194 -rw-r--r--  1 root root 2240885 2006-05-21 03:06 initrd-2.6.13-15.8-default
2194 -rw-r--r--  1 root root 2240705 2006-05-21 02:20 initrd-2.6.13-15.8-default.bak
   0 lrwxrwxrwx  1 root root      26 2006-05-21 19:00 initrd -> initrd-2.6.13-15.8-default
Nun ist alles wieder in der Reihe, der Link "initrd" zeigt wie zuvor auf die ungepachte Initial Ramdisk und wir können uns zum nächsten Schritt begeben.

c) Erzeugen eines neuen Boot-Eintrags mit der gepatchten initrd in GRUB

Yast --> System --> Konfiguration des Bootloaders

Wir markieren den Eintrag für SuSE 10.0 und klicken Hinzufügen --> Markierten Abschnitt klonen.

Anschliessend geben wir einen für uns sinnvollen Namen des Eintrags in der obersten Zeile ein.
Nun kommt der wichtigste Teil dieses Schrittes. Wir ändern den Eintrag im Feld "Initial RAM-Disk" von "/boot/initrd" in "/boot/initrd-dsdt" (Wer will kann sich auch mit einem Klick auf den Button "Durchsuchen" durchhangeln).

Nach einem OK und Weiter wird der Bootloader neu installiert und es wird spannend ..................

d) Neustart mit der gepatchten initrd.

Rechner neu starten und Daumen drücken. Am Boot-Menü von GRUB können wir nun einen neuen Eintrag auswählen, mit dem unsere "SUSI" unter Verwendung der neuen initrd startet. Sollte das System nicht starten, dann habt Ihr entweder etwas falsch gemacht oder einfach Pech gehabt.

Einfach neu booten und den Standardeintrag für SuSE 10.0 wählen, denn zumindest wart Ihr vorsichtig genug, eine Sicherungskopie zu haben ;).

Sollte das System starten und die Batterieanzeige nun funktionieren, dann Herzlichen Glückwunsch !

e) Anmerkung: Im Prinzip kann man nun die nächsten Schritte weglassen, wenn man bereit ist nach JEDEM Kernel-Update diese kleine Prozedur auf sich zu nehmen:

- Kopieren der neuen initrd-neueKernelversion-default nach /opt/dsdt/initrd-neueKernelversion-default.dsdt

- Erweitern der initrd mit der DSDT.aml durch:

Code:
mkinitrd -k /boot/vmlinuz-neueKernelversion-default -a /opt/dsdt/DSDT.aml -i /opt/dsdt/initrd-neueKernelversion-default-dsdt
- Neu Setzen der links "initrd" (auf die ungepatchte intrd) und "initrd-dsdt" (auf die gepatchte initrd).

Wem das allerdings zu viel Stress ist oder wer eine elegantere Lösung bevorzugt, der sollte sich den nächsten Schritt ansehen.

4. Festes Einbinden der gepatchten DSDT.aml in die Initial Ramdisk (optional, aber empfohlen).

Wir haben also nun eine funktionierende Batterieanzeige und wollen nicht nach jedem Kernel-Update die obige Prozedur vollführen?

Dann gibt es nun eine recht einfach Möglichkeit, die gepatchte DSDT.aml fest in die initrd einzubinden, wobei dies auch automatisch bei jeder Neuerstellung einer initrd geschieht (z.B. nach einem Kernel-Update).

Dieser Schritt empfiehlt sich natürlich NUR DANN, wenn Schritt 3 zum Erfolg geführt hat.

a) Kopieren der DSDT.aml in ein "geeigneteres" Verzeichnis.

In einem Linuxsystem liegen die ganzen Konfigurationsdateien in /etc/. Um dieser Konvention Rechnung zu tragen, legen wir (logischerweise als ROOT!) in /etc/ den Unterordner /dsdt/ an und kopieren die Datei /opt/dsdt/DSDT.aml in diesen Ordner. Ihr könnt natürlich auch einen anderen Ordner nehmen, es ist nur ein -wie ich meine sinnvoller- Vorschlag.

b) Editieren der /etc/sysconfig/ um die gepatchte DSTD.aml in die Initial Ramdisk einzubinden.

Yast --> System --> /etc/sysconfig/-Editor --> System --> Kernel --> ACPI_DSDT

Datei: /etc/sysconfig/kernel
Mögliche Werte: Beliebiger Wert
Standardwert:
Neu zu startender Dienst: boot.loadmodules
Beschreibung:

The file name of a binary ACPI Differentiated System Description Table
(DSDT). This table is appended to the initial ram disk (initrd) that
the mkinitrd script creates. If the kernel finds that its initrd
contains a DSDT, this table replaces the DSDT of the bios. If the file
specified in ACPI_DSDT is not found or ACPI_DSDT is empty/not specified,
no DSDT will be appended to the initrd.
Hier tragen wir nun den Pfad zu unserer gepatchten DSDT.aml ein, in meinem Beispiel also

Code:
/etc/dsdt/DSDT.aml
und bestätigen die Änderungen mit Beenden.

c) Erzeugen einer gepatchten initrd unter Verwendung der /etc/dsdt/DSDT.aml

Hierzu müssen wir nur als ROOT (!) das Script mk_initrd aufrufen.

Code:
su

(Passwort)

mk_initrd
So in etwa sollte die Ausgabe aussehen:

Code:
Kernel image:   /boot/vmlinuz-2.6.13-15.8-default
Initrd image:   /boot/initrd-2.6.13-15.8-default
Shared libs:    lib/ld-2.3.5.so lib/libblkid.so.1.0 lib/libc-2.3.5.so lib/libselinux.so.1 lib/libuuid.so.1.2


Driver modules: ide-disk piix processor thermal fan
Filesystem modules:     reiserfs
Including:      klibc initramfs udev fsck.reiserfs
Bootsplash:     Dolphin (1024x768)
ACPI DSDT:      /etc/dsdt/DSDT.aml
8728 blocks
Und das wars.....

Ab sofort sollte bei jeder Änderung der Initial Ramdisk die /etc/dsdt/DSDT.aml ohne weiteres Zutun Eurerseits eingebunden werden.

5. (optional, aber WÄRMSTENS empfohlen) Neue Powersave-Pakete einspielen.

Diesen optionalen Schritt kann ich nur empfehlen, denn die Powersave-Pakete für SuSE 10.0, welche man via Yast/APT bekommt, sind schon etwas älter. Mit den neuen Paketen erledigten sich bei mir die letzten kleinen "Ungereimtheiten" beim Aktualisieren der Batterieanzeige schlagartig.

a) Pakete herunterladen.

http://sourceforge.net/project/showfiles.php?group_id=124576

Ihr benötigt folgende Pakete:

cpufrequtils-0.4-1.1.SUSE10.i586.rpm
kpowersave-0.6.1-6.1.SUSE10.0.i586.rpm
pciutils-2.2.1-12.1.SUSE10.0.i586.rpm
powersave-0.12.17-0.1.SUSE10.0.i586.rpm
powersave-libs-0.12.17-0.1.SUSE10.0.i586.rpm
suspend-20060406-1.SUSE10.0.i586.rpm
sysfsutils-1.3.0-3.1.SUSE10.i586.rpm

oder die jeweils neusten, stabilen Versionen.

Die Pakete suspend, cpufrequtils, pciutils, sysfsutils und suspend finden sich unter dem Link "updated requirements"

Diese Pakete runterladen und als root mit rpm -Uvh Paketname.rpm installieren.

Auch für User, die mit den "alten" Paketen von der SuSE-CD/DVD keine Probleme haben sei gesagt, ... Es lohnt sich (alles schön bunt und "wohlklingend". Mein Tipp: Steckt einmal das Netzkabel aus und wieder ein.. hach wie schön *g* ;) ).


So, das wars dann auch "schon".

Viel Erfolg beim "nachfrickeln"

Greetz,

RM

P.S. Danke an Kernelman für das "Versuchskaninchen" spielen.

P.P.S. Diesen Thread werde ich gerne kurz öffnen, wenn jemand erfolgreich seine Smart Battery zum Laufen bekommen hat, damit sie/er kurz einige Sätze zu Modell, Patch und Besonderheiten schreiben kann. Vielleicht bekommen wir so eine kleine "Hardware Compatibility-List" hin.

Literatur/Links:

http://acpi.sourceforge.net/wiki/index.php/SuseHowToLoadCustomDsdtTable

http://andreasjuch.mywol.org/content/view/33/40/

http://sourceforge.net/projects/sbs-linux/

http://gaugusch.at/kernel.shtml

http://acpi.sourceforge.net/dsdt/index.php

http://forums.gentoo.org/viewtopic.php?t=122145

http://developer.intel.com/technology/iapc/acpi/downloads.htm

http://sourceforge.net/projects/powersave
 

Kernelman

Member
AW: ACPI-DSDT: Einrichten der "Smart-Battery" auf ACER-Laptops

Rain_Maker schrieb:
P.S. Danke an Kernelman für das "Versuchskaninchen" spielen.
*mümmel*

Mein Laptop ist ein -welch Zufall- ebenfalls ein Acer, Modell TravelMate 4002LMi. Der verwendete Patch ist
acer-tm4xxxx-sbs-cm.diff
*) Acer Extensa 3001WLMi [w]
*) Acer Extensa 3002WLMi [w]
*) Acer TravelMate 4000LMi [c]
*) Acer TravelMate 4000WLMi [w]
*) Acer TravelMate 4001LMi [w]
*) Acer TravelMate 4001WLMi [w]
*) Acer TravelMate 4002LMi [w]
*) Acer TravelMate 4502LMi [w]
*) Acer TravelMate 4502WLMi [w]
Ich bin genau nach dem HowTo vorgegangen (Danke RM für Deine "Begleitung"), und um auf Nummer sicher zu gehen erfolgte die Einbindung der gepatchten initrd über einen neuen Eintrag in GRUB. Denn, sollte etwas schiefgehen, kann zumindest wieder die alte Konfiguration gestartet werden. Beim ersten Booten erlebte ich eine unschöne Überraschung. Die Batterieanzeige war zwar da (juhu), aber Sound- und Wlan-Karte wurden nicht erkannt. Dieses Problem erledigte sich mit dem nächsten Bootvorgang aber von alleine, alles wurde erkannt.
Also, festes Einbinden der gepatchten DSDT.aml in die Initial Ramdisk.

Dann noch die neuesten Powersave-Pakete installiert
cpufrequtils-0.4-1.1.SUSE10.i586.rpm
kpowersave-0.6.1-6.1.SUSE10.0.i586.rpm
pciutils-2.2.1-12.1.SUSE10.0.i586.rpm
powersave-0.12.17-0.1.SUSE10.0.i586.rpm
powersave-libs-0.12.17-0.1.SUSE10.0.i586.rpm
suspend-20060406-1.SUSE10.0.i586.rpm
sysfsutils-1.3.0-3.1.SUSE10.i586.rp
und fertig.
Jetzt endlich habe ich ein für meinen Geschmack "vollwertiges" Notebook.
Es gibt nichts Schöneres als "Netzkabel raus" *pling*, "Netzkabel rein" *ziouschhh*. Stimmt's Rain_Maker?;)

Gruß
KM
 

Rain_Maker

Administrator
Teammitglied
The Easy Way (ab Kernel 2.6.18)

Für User einer Distribution mit Kernel >= 2.6.18 gibt es mittlerweile eine sehr viel einfachere Lösung, da nun eine Unterstützung der smart-Batteries im Kernel selbst enthalten ist.

Hierzu muß das Modul "sbs" in der Kernelkonfiguration über die Option "ACPI_SBS" aktiviert sein.

Code:
  ┌─────────────────────────────────────── Search Results ────────────────────────────────────────┐
  │ Symbol: ACPI_SBS [=m]                                                                         │
  │ Prompt: Smart Battery System (EXPERIMENTAL)                                                   │
  │   Defined at drivers/acpi/Kconfig:402                                                         │
  │   Depends on: !X86_VOYAGER && !XEN_UNPRIVILEGED_GUEST && !X86_VISWS && !IA64_HP_SIM && (IA64  │
  │   Location:                                                                                   │
  │     -> Power management options (ACPI, APM)                                                   │
  │       -> ACPI (Advanced Configuration and Power Interface) Support                            │
  │         -> ACPI Support (ACPI [=y])
Bei openSUSE 10.2 ist dies der Fall:

Code:
grep ACPI_SBS /boot/config-*
CONFIG_ACPI_SBS=m
Test:

Ein einfaches
Code:
modprobe sbs
rchal restart
erweckte die Batterieanzeige auch ohne gepatchte DSDT zum Leben. Diesen Test sollte man zunächst durchführen, bevor man weiter macht.

Automatisierung:

Nach Einbinden des Moduls "sbs" in den Startvorgang (Yast => System => Editor für /etc/sysconfig/ => System => Kernel => MODULES_LOADED_ON_BOOT) funktioniert die Batteriestandsanzeige ab dem nächsten Neustart perfekt.

Danke an Toobles aus linuxforen.de für den Hinweis.

Greetz,

RM
 
Status
Für weitere Antworten geschlossen.
Oben