tp_smapi Probleme

Ezekeel

New member
Registriert
2 Dez. 2010
Beiträge
126
Ich betreibe mein Edge 13 hauptsächlich am Netz und wollte, um den Akku zu schonen, die maximale Ladung auf ~40% begrenzen und habe dafür das extra Kernel Modul 'tp_smapi' installiert. Ich habe jedoch das Problem das sich die Werte 'start_charge_thresh' und 'stop_charge_thresh' nicht unabhängig voneinander einstellen lassen, sondern wenn ich einen der beiden Werte ändere, wird auch der andere automatisch angepasst, so daß start_charge_thresh = stop_charge_thresh + 1 ist. Jemand dasselbe Problem oder irgendeine Idee?
 
Wie setzt du die Werte?

Start_* = stop_* +1 geht nicht, weil der Start Threshold immer unter der Stop Grenze liegen muss.
 
linrunner' schrieb:
tp_smapi funktioniert auf dem Edge nicht.

Was nicht passt, wird passend gemacht. Wir sind doch hier nicht unter Windows. ;)

Ich habe mit etwas rumprobieren doch vernünftig zum laufen bekommen.

Script 'set_batthresh' erstellt

Code:
#!/bin/sh

if [ "$(gawk '{print $2}' /proc/acpi/ac_adapter/ACAD/state)" = "on-line" -a "$(grep 'present:' /proc/acpi/battery/BAT1/state | gawk '{print $2}')" = "yes" ]
then
        echo 100 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
        sleep 2
        echo $1 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
fi

In 'boot.local' eingefügt

Code:
/sbin/set_batthresh 42

Unter '/etc/acpi/events' file mit Namen 'anything' erstellt

Code:
event=.*
action=/sbin/set_batthresh 42

Jetzt läd er brav bis 42% und stoppt dann den Ladevorgang.
 
Ich rate ganz deutlich von der Verwendung von tp_smapi auf Edge, SL, L und X100e ab. Falls der Treiber überhaupt lädt, handhabt er diese Hardware nicht korrekt und es könnten unerwünschte bis gefährliche Resultate eintreten.
 
linrunner' schrieb:
Ich rate ganz deutlich von der Verwendung von tp_smapi auf Edge, SL, L und X100e ab. Falls der Treiber überhaupt lädt, handhabt er diese Hardware nicht korrekt und es könnten unerwünschte bis gefährliche Resultate eintreten.

Gefährliche Resultate? Ich glaube nicht, Tim.

Ich habe ein komplettes Interface zum EC unter /sys/devices/smapi und alles scheint soweit zu funktionieren, bis auf dieses kleine Problem mit den Batterie-Ladeschwellen, bei denen man ein wenig rumtricksen muss.
 
Ich habe nochmal ein bischen rumgespielt und es ist besser ein file in '/etc/acpi/events' file mit Namen 'ac_adapter' zu erstellen mit

Code:
event=ac_adapter.ACAD.00000080.00000001
action=/sbin/set_batthresh 42

um unnötige Aufrufe von 'set_batthresh' zu vermeiden.

Außerdem kann man in boot.local besser

Code:
/sbin/set_batthresh 42&

setzen, um die Bootzeit nicht unnötig um 2sec zu verlängern.
 
Ich habe mal ein wenig im Source Code von tp_smapi rumgestöbert und ich glaube ich habe jetzt verstanden woher das oben beschriebene kuriose Verhalten mit den Ladeschwellen kommt.

Der EC im Edge 13 benutzt intern nur einen Wert um das Ladeverhalten zu managen, man kann diesen Wert jedoch an zwei unterschiedlichen Adressen auslesen, die wiederum von tp_smapi mit start_charging_thresh und stop_charging_thresh assoziiert werden. Der interne Wert im EC auf den man zugreift mit start_charging_thresh und stop_charging_thresh ist also identisch.

Daß, wie oben beschrieben, der Wert von start_charging_thresh immer um 1 grösser als stop_charging_thresh ist, ist darauf zurückzuführen, daß tp_smapi (aus Kompatibilitätsgründen zu irgendeiner GUI) den Wert von start_charging_thresh immer um 1 höher anzeigt als der interne Wert im EC wirklich ist und bei Änderungen den internen Wert auch auf einen um 1 verringerten setzt.

Durch Rumprobieren habe ich herausgefunden, daß der EC für Änderungen anscheinend erwartet, daß die Änderung über die Adresse eingegeben wird die mit stop_charging_thresh assoziiert ist. Wenn man die Änderung über start_charging_thresh eingibt, scheint das den EC irgendwie zu verwirren, was dazu führen kann, daß die Batterie nicht läd, wenn sie eigentlich sollte. Die obigen Probleme, die ich hatte und die den beschriebenen Workaround notwendig gemacht haben, sind wohl alleine darauf zurückzuführen, daß ich mit start_charging_thresh rumgespielt habe. Wenn man nur stop_charging_thresh benutzt, ist das Verhalten so wie erwartet: Er läd den Akku, wenn die Ladung unter dem Threshold ist und läd nicht, wenn die Ladung gleich oder größer dem Threshold ist.

Mit diesem Wissen kann man glaube ich tp_smapi auch beruhigt auf einem Edge 13 einsetzen.
 
Wär aber trotzdem nett, wenn Du den Entwickler dazu mal kontaktest ob er zumindest eine Sperre für die start_charging_thresh beim Edge einbauen kann ... :D
 
linrunner' schrieb:
Wär aber trotzdem nett, wenn Du den Entwickler dazu mal kontaktest ob er zumindest eine Sperre für die start_charging_thresh beim Edge einbauen kann ... :D

Es ist leider im allgemeinen so, daß Einträge im sys fs auftauchen, die für das Modell eigentlich gar nicht funktionieren. Das steht auch schon auf der TODO Liste des Entwicklers. Da das Modul aber schon ewig nicht mehr aktualisiert wurde, denke ich nicht, daß das was wird. Man müßte halt entweder eine große Liste einbauen, die für jedes Modell die unterstützten Funktionen enthält oder es die einzelnen Funktionen proben und die deaktivieren die nicht funktionieren. Problem mit dem letzten Ansatz beim Edge wäre, daß die Funktion für start_charging_thresh ja vom EC bereitgestellt wird, allerdings nicht richtig funktioniert. Das müßte man dann schon in der Firmware für den EC ändern. Bleibt also nur noch die lange Liste und darauf hätte ich auch kein Bock das einzubauen auch wenn ich eigentlich gerne programmiere. ;)
 
Schade eigentlich ... :(

EDITH bittet noch um den Output von:
Code:
sudo tlp-stat | grep System
 
Ich habe noch etwas genauer getestet und er beginnt das Laden erst, wenn die Ladung 5% unter dem gegebenen Schwellenwert ist, also wenn remaining_percent < stop_charging_thresh - 5 ist.

TLP habe ich nicht installiert, weil zu spät gesehen, daß es sowas gibt und dann schon alles per Hand gemacht, aber ich glaube Du brauchst das:

LENOVO ThinkPad Edge 01962DG
 
5% sind ja ohnehin die empfohlene Differenz. Da sollten wohl bei den günstigeren Baureihen ein paar Bits oder Gatter im EC gespart werden ...

In /etc/default/tlp läßt Du einfach die untere Schwelle auskommentiert:
Code:
#START_CHARGE_THRESH_BAT1=75
STOP_CHARGE_THRESH_BAT1=80

Und TLP kann noch ein bißchen mehr als nur Ladeschwellen...
 
musstest du was am source von tpsmapi aendern damits auf edge tut? wenn ja: patches zu mir :)
 
@Zhenech: bei den ersten Edge-Modellen hab ich nur Infos bekommen, daß tp-smapi oder genauer thinkpad_ec gar nicht lädt. Wie man sieht gibt es aber wohl Exemplare wo es lädt - bei Ezekeel m.W. ohne Modifikation. Bei einem SL410 - das ich selbst kurz in der Hand hatte - hat es auch geladen, aber start_charge_thresh ließ sich nicht auslesen (und wahrscheinlich auch nicht schreiben).

Siehst Du die Möglichkeit eine baureihenspezfische Sperre für start_charge_thresh einzubauen - bspw. basierend auf [font='Courier New, Courier, mono']dmidecode -s system-version[/font] == "ThinkPad Edge"? Ezekeel hat hier einen Umfrage-Thread aufgemacht: Linux User
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben