tp_smapi / Ladeschwellen auf T420(s)/X220/... - Tester gesucht

Specialist

Member
Themenstarter
Registriert
1 Feb. 2011
Beiträge
56
Hallo zusammen,

scheinbar funktioniert das tp_smapi-Kernelmodul zum Einstellen der Ladeschwellen nicht auf allen neuen ThinkPads (T420(s), X220, ?) auf Anhieb. Dabei gibt es zwei Probleme:
a) Der Embedded Controller wird nicht erkannt
b) Das Einstellen der Ladeschwellen funktioniert nicht zuverlässig

Da ich seit kurzem selbst ein T420s besitze, dachte ich mir, ich ändere mal etwas an dieser Situation. Das Ergebnis ist ein experimentelles tp_smapi-Paket, welches ohne Source-Code-Patches auf T420(s) und X220 geladen werden kann und bei dem sich die obere Ladeschwelle einstellen lassen sollte. Rückwärtskompatibel mit älteren ThinkPads sollte das Modul ebenfalls sein.

Was mir nun fehlt, sind Tester, bei denen das ungepatchte Modul nicht lädt oder bei denen das Einstellen der Ladeschwellen gemäß einem wie in http://thinkpad-forum.de/threads/11...vidia-Grafik?p=1104516&viewfull=1#post1104516 vorgeschlagen gepatchten Modul keine Wirkung zeigt.

Den Quellcode des gepatchten Moduls gibt es unter: https://github.com/ginkel/tp_smapi
Ein fertiges .deb für Ubuntu Natty gibt es unter: https://launchpad.net/~thilo.ginkel/+archive/thinkpad

Es wäre super, wenn sich ein paar Tester für folgendes Procedere fänden (Instruktionen für Ubuntu Natty - Nutzer anderer Distributionen können sich das Paket direkt aus den Quellen kompilieren):
Code:
sudo add-apt-repository ppa:thilo.ginkel/thinkpad
sudo apt-get update
sudo apt-get install tp-smapi-dkms
sudo rmmod tp_smapi thinkpad_ec # falls eine alte Version des Moduls noch geladen ist
sudo modprobe tp_smapi
cat /sys/devices/platform/smapi/BAT0/stop_charge_thresh # sollte standardmäßig 100 ausgeben
echo 95 | sudo tee /sys/devices/platform/smapi/BAT0/stop_charge_thresh
cat /sys/devices/platform/smapi/BAT0/stop_charge_thresh # sollte jetzt 95 ausgeben

Die untere Ladeschwelle lässt sich momentan leider noch nicht einstellen. Kann jemand der T420(s)/X220-Besitzer mit Dual-Boot-Umgebung bitte mal nachschauen, ob diese Einstellung unter Windows mit der Lenovo-Software konfigurierbar ist?

Bitte gebt bei eurer Rückmeldung euer ThinkPad-Modell sowie die genutzte Distribution und Kernel-Version an. Wenn etwas nicht klappt, ladet das Modul wie folgt bitte mit Debug-Ausgaben neu, wiederholt den Test und hängt den Schluss der dmesg-Ausgabe mit smapi-Bezug mit an:
Code:
sudo rmmod tp_smapi thinkpad_ec
sudo modprobe tp_smapi debug=1

Danke & viele Grüße
Specialist
 
also bei mir scheint der Patch zu funktionieren!

Habe ein X220, arch, kernel 2.6.38. Nach dem whitelisten des X220 konnte ich das tp_smapi-Modul laden, aber:

# echo 80 > stop_charge_thresh
# cat stop_charge_thresh
100

Nach deinem Patch sieht es so aus:
# echo 80 > stop_charge_thresh
# cat stop_charge_thresh
80

allerdings habe ich noch nicht getestet, ob der Akku tatsächlich nur bis 80% geladen wird, das werde ich demnächst ausprobieren.


achso, ein Windoof habe ich meinen Denkbrettern nie angetan, auch dem X220 nicht, kann also zu der Startladeschwelle nichts sagen.
 
Zuletzt bearbeitet:
@ Specialist ich hab nur windows drauf, da geht das mit der unteren Ladeschwelle natürlich, aber ich denke du willst wissen ob das in linux übernommen wird!?

PS: Deine PN's sind abgeschaltet, sonst hätte ich's dir da geschrieben.
 
@fabio: ich glaube, er wollte wissen, ob die Hardware das überhaupt unterstützt, bevor er versucht, das unter Linux hinzubekommen.

Aber gut zu wissen, dass es geht, jetzt müsste nur noch jemand der Ahnung hat etwas Zeit und Lust finden ...
 
@specialist: geht bei dir force_discharge? Ich krieg da zumindest 'nen Fehler.
 
Das Paket läßt sich problemlos unter Lucid installieren (also höchstwahrscheinlich auch unter Maverick). Die Schwellen lassen sich auf dem X200 schreiben. Rest muß ich noch testen.
 
@fabio: ich glaube, er wollte wissen, ob die Hardware das überhaupt unterstützt, bevor er versucht, das unter Linux hinzubekommen.

Aber gut zu wissen, dass es geht, jetzt müsste nur noch jemand der Ahnung hat etwas Zeit und Lust finden ...

Exakt darum ging es mir. In welchem Programm wird das konfiguriert? Könnte man sich ja mal per Reverse-Engineering anschauen.
 
Also auch wenn mich das alles sehr interessiert, versteh ich höchstens die Hälfte hier :) gerade wenn ihr Code postet und vom kompilieren oder in diesem Fall Reverse-Engeneering redet. Letzteres versteh ich zwar von der Übersetzung her, aber ich wüsste auch zu gerne wie man das alles macht.

Einstellen tu ich die Ladeschwellen mit dem EnergieManager von Lenovo.
 
Zuletzt bearbeitet:
Ich kann jetzt bestätigen, dass der Akku auch tatsächlich nur bis zu der dank Specialists Patch einstellbaren Schwelle geladen wird. Vielen Dank Specialist!

Angehängt habe ich ein entsprechend modifiziertes AUR-Paket für Archer (.txt-Endung löschen, die ist nur wegen der bescheuerten Forumssoftware da).
 

Anhänge

@Specialist: das W520 könntest Du noch in die Whitelist einbauen. Das X220t müßte über den Match für das X220 mit erkannt werden. Genauso das T420s über den Match für das T420, kannst Du ja selbst testen.
 
@fabio: das ist hier im Moment mehr ein Experten-Thread ;). Deine Info, daß Du unter Windows die untere Schwelle enstellen kannst, ist genau das was Specialist wissen wollte. Danke. Falls Du allerdings auch ein Ubuntu auf deinem ThinkPad hast, dann könntest Du das Paket aus dem PPA von Specialist testen. Zum Einstellen der Schwellen brauchst Du dann noch TLP (s. meine Signatur).
 
Ich hab' inzwischen die Windows-DLL gefunden, die die Schnittstelle zum Durchführen der Einstellungen zur Verfügung stellt: PWMIF32V.DLL

Dummerweise ist der disassemblierte Code derart konfus, dass ich momentan nicht wirklich weiterkomme. Was mich aber wundert, ist, dass sowohl get_threshold, als auch set_threshold dieselbe SMAPI-Funktion rufen (z.B. 2116h). Kann aber sein, dass da später bei Bedarf noch eins draufaddiert wird. Liest hier zufällig jemand mit, der sich ein wenig mehr mit Reverse-Engineering via IDA Pro auskennt?
 
Zuletzt bearbeitet:
Code:
[B]#[/B] uname -r 
2.6.39-1-amd64
[B]#[/B] dmidecode -s system-version
ThinkPad T420
[B]# [/B]dmidecode -s system-product-name
4180W1H


Ich möchte jetzt nicht unbedingt off topic gehen.
Allerdings kriege ich die Sourcen gar nicht erst Kompiliert. Vollständige Kernelheader + Kernelsource vorhanden.

Code:
# make
Makefile:31: Building tp_smapi requires Linux kernel 2.6.19 or newer, and matching kernel headers.
Makefile:32: You may need to override the following Make variables:
Makefile:33: .   KVER=2.6.39-1-amd64
Makefile:34: .   KBUILD=/lib/modules/2.6.39-1-amd64/build
Makefile:35: .   MOD_DIR=/lib/modules/2.6.39-1-amd64/kernel
Makefile:36: For "make patch", you may also need the full kernel sources, and may need to override:
Makefile:37: .   KSRC=/lib/modules/2.6.39-1-amd64/source
Makefile:38: *** Missing kernel headers.  Stop.

Laut dem Makefile (Z. 30) müsste in /lib/modules/2.6.39-1-amd64/build/include/linux
die Datei aio_abi.h liegen. Tut sie bei mir allerdings nicht.
Code:
$ pwd && ls -la
/lib/modules/2.6.39-1-amd64/build/include/linux
total 12
drwxr-xr-x 2 root root 4096 May 24 19:18 .
drwxr-xr-x 5 root root 4096 May 24 19:18 ..
-rw-r--r-- 1 root root   97 May 19 16:12 version.h


Leider habe ich gerade auch kein Vergleichssystem, ich habe allerdings die nicht gepatchte Version aus den Repositorys über apt-get source tp_smapi-source und dann apt-get --build mit dem Patch wie hier beschrieben Klick kompiliert bekommen. Was bei mir leider nicht wie gewünscht funktioniert.

Jemand eine Idee wo, das Problem liegen könnte? Ich bin gerade leider etwas zu unfähig.

Ich bin btw. Debianuser.

Gruß,

AAAA
 
Zuletzt bearbeitet:
Gibt es einen Grund, warum Du nicht einfach das tp-smapi-dkms-Paket aus dem PPA von Specialist verwendest?

ps. wenn in dem Verzeichnis keine Dateien sind, dann sind die zum Kernel passenden Header eben nicht installiert. Dann wird der automatische DKMS-Build auch scheitern.
 
Zuletzt bearbeitet:
Gibt es einen Grund, warum Du nicht einfach das tp-smapi-dkms-Paket aus dem PPA von Specialist verwendest?

ps. wenn in dem Verzeichnis keine Dateien sind, dann sind die zum Kernel passenden Header eben nicht installiert. Dann wird der automatische DKMS-Build auch scheitern.

Ja, ich verwende das Paket nicht weil es sich um einen i386 Build handeld ich aber ein amd64 System nutze. Da würde ich mir das schon ganz gerne selber passend bauen. Die Kernelheader habe ich inklusive des Kernels aus den Repositorys gezogen.
  • linux-headers-2.6.39-1-all-amd64
  • linux-headers-2.6.39-1-amd64
  • linux-headers-2.6.39-1-common
  • linux-image-2.6.39-1-amd64
  • linux-source-2.6.39

Mal ganz davon abgesehen, dass ich einfach verstehen will wieso es nicht funktioniert. Vielleicht findet sich ja auch jemand der mir über PN erklären kann wieso das nicht funktioniert.

Gruß,

AAAA
 
Zuletzt bearbeitet:
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben