Nach ungefähr 5 Stunden Frickelei hab ich jetzt endlich eine funktionierende Batterieladestandsanzeige. Als grundsätzliche Anleitung hilft dieses Howto aus den Gentooforen sehr weiter.

Demzufolge habe ich erstmal den Intel ASL-Compiler gezogen (genauer den Sourcecode für Unix). Danach die Ubuntupakete für bison und flex-old installiert und anschließend im Verzeichnis "Compiler" des eben gedownloadeten Paketes make ausgeführt. Danach hat man dann das Binary 'iasl'.

Dann die aktuelle DSDT auslesen: sudo cat /proc/acpi/dsdt > dsdt.dat

Danach die aktuelle DSDT disassemblieren: ./iasl -d dsdt.dat

Dann versuchen, die disassemblierte DSDT wieder zu kompilieren: ./iasl -ta dsdt.dsl. Dabei sind bei mr folgende Fehlermeldungen aufgetaucht:

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20051117 [Dec 10 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0

dsdt.dsl   279:         Store (0x99, P80H)
Warning  2097 -                   ^ Statement is unreachable

dsdt.dsl   509:             If (LEqual (And (PDC0, 0x0A), 0x0A))
Error    1061 -           Object does not exist ^  (PDC0)

dsdt.dsl   514:             If (LEqual (And (PDC1, 0x0A), 0x0A))
Error    1065 -                                 ^ Object not accessible from this scope (PDC1)

dsdt.dsl  4842:                 Z00A,
Error    1061 -                    ^ Object does not exist (Z00A)

dsdt.dsl  4843:                 Z00A,
Error    1061 -                    ^ Object does not exist (Z00A)

ASL Input:  dsdt.dsl - 5227 lines, 176606 bytes, 2002 keywords
Compilation complete. 4 Errors, 1 Warnings, 0 Remarks, 640 Optimizations

Sehr viele Hinweise, wie diese Fehler zu beheben sind habe ich im Blog von Didier CLERC gefunden. Die Fixes für die PDC0 und PDC1-Errors habe ich 1:1 übernommen. Die nicht existenten Z00A habe ich analog zu Didier in Z008 geändert. Dann hatte ich nur noch eine Warnung und machte einen ersten Test. Jetzt meldete /proc/acpi/battery/BAT1/state keinen Fehler mehr, sondern nur noch, dass keine Batterie mehr vorhanden sei. Jedenfalls war ich etwas entmutigt und probierte erst am nächsten Tag (also heute) weiter. Als einzige Möglichkeitkeit blieb die Warnung. Also diese Stelle nochmal angeguckt und da stand das "Store" in einer Art Funktion als letztes Statement, noch nach dem "Return". Also habe ich einfach das "Store" vor das "Return" geschoben, wieder compiliert und voilà, die Warnung war auch weg.

Dann die kompilierte DSDT.aml in die initrd einarbeiten:

sudo cp DSDT.aml /etc/mkinitramfs/ sudo dpkg-reconfigure linux-image-$(uname -r)

Anschließend ein Reboot und dann sollte im dmesg eine Meldung auftauchen, dass der Kernel die dsdt der initrd statt der des Notebooks verwendet. Auch sollte dann /proc/acpi/battery/BAT1/state sinnvolle Daten enthalten und auch das gnome-battery-status-applett funktionieren.

Hier noch die fertigen DSDTs:

Re: DSDT meines Laptops

hat jemand ne ahnung wie man das mit suse linux 10.0 macht. bin noch linux anfänger ????

mfg saibo

Comment by saibo So 29 Jan 2006 13:46:12 CET
Re: DSDT meines Laptops

Unter SuSE:

Schritte bis zur fertigen DSDL.aml wie hier beschrieben durchführen. Die aml Datei z.B. nach /boot/DSDT.aml schieben und in der /etc/sysconfig/kernel den Eintrag anpassen: ACPI_DSDT="/boot/DSDT.aml"

Danach "mkinitrd" ausführen und dann neu starten. Das sollte es sein...

MfG

Karsten

Comment by Karsten Fr 03 Feb 2006 21:47:17 CET
Re: DSDT meines Laptops
also deine dsdt.hex kann ich nicht in den kernel einbauen, aber wenn ich deine dsl neu kompiliere gehts.
Comment by Felix Di 28 Mär 2006 15:10:48 CEST
Re: DSDT meines Laptops

Hallo,

die hier gegebene dsdt.hex für den Kernel funktioniert nicht. Sie wurde vermutlich mit 'iasl -ta dsdt.dsl' gebaut, der kernel braucht aber ein C-include, also muss sie mit 'iasl -tc dsdt.dsl' erstellt werden.

Grüße, Bernd

Comment by Bernd Schubert Mi 05 Apr 2006 17:28:21 CEST
Re: DSDT meines Laptops

Könntest sie ja dem ACPI4LINUX Projekt bereitstellen und damit einen aktiven Beitrag zur Verbesserung aller Linux-Systeme leisten. ;)

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

Comment by Frank Großmann Do 21 Jun 2007 11:53:05 CEST
Re: DSDT meines Laptops
Das Einbinden einer geänderten DSDT scheint inzwischen nicht mehr nötig zu sein. Jedenfalls lief das Batteriestandauslesen nach einer Neuinstallation (oder war es ein Update?) ohne weitere Eingriffe.
Comment by admin Do 21 Jun 2007 13:42:56 CEST
Add a comment