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:
hat jemand ne ahnung wie man das mit suse linux 10.0 macht. bin noch linux anfänger ????
mfg saibo
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
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
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