Registrieren  •  Login 
  
 
im Forum




Blog-Übersicht -> Coreboot: ThinkPad-Akkus kalibrieren RPi im RZ: Rückkehr des RZ-Touristen
Coreboot: ThinkPad-Akkus kalibrieren
Verfasst am: 03.09.2025, 14:59   Autor: killerbees19
Wenn man die freie Firmware-Implementierung Coreboot verwendet, muss man (neben zahlreichen Freiheiten) leider mit einigen Einschränkungen leben. Eine davon ist, dass z.B. bei ThinkPads die ACPI-Implementierung (Advanced Configuration and Power Interface) nicht alle herstellerspezifischen Features unterstützt.

Das Kernelmodul kann man unter Linux mit einem kleinen Trick dazu überreden, dass es trotzdem immer geladen wird:

Code:
echo 'options thinkpad_acpi force_load=1 fan_control=1' \
  | sudo tee -a /etc/modprobe.d/coreboot.conf

sudo rmmod thinkpad_acpi
sudo modprobe thinkpad_acpi


Dadurch kann u.a. wieder auf die Lüftersteuerung zugegriffen werden. Ladeschwellen für den Akku können ebenso wieder gesetzt werden und TLP funktioniert größtenteils auch. Bei Letzterem sollte man aber mindestens Version 1.7.0 verwenden, da ansonsten die Akkuwerte nicht korrekt angezeigt werden!

Eine Sache funktioniert dann leider nach wie vor nicht: Das Rekalibrieren des Akkus. Das ist jedoch manchmal notwendig, wenn der angezeigte Ladewert nicht ganz korrekt ist oder im unteren Bereich sprunghaft einbricht. Zu häufig sollte man es natürlich nicht machen, weil es den Akku stark belastet und seine Lebensdauer definitiv verkürzt. Wink

Fürs Kalibrieren gibt es glücklicherweise einen Workaround, bei dem man direkt mit dem EC (Embedded Controller) kommuniziert. Dieser Hinweis war früher im alten Coreboot-Wiki zu finden, das jetzt nur noch über die Wayback Machine (Link) zugänglich ist. In der neuen Dokumentation ist das leider nicht mehr enthalten.

VERWENDUNG AUF EIGENE GEFAHR! Getestet mit einem T440p, wahrscheinlich funktioniert es aber auch bei zahlreichen anderen Modellen:

  • Akku(s) einsetzen, Netzteil anstecken und ein Linux-System starten. Und das thinkpad_acpi Kernelmodul laden, siehe oben.

  • Nun braucht man noch das Programm ectool. Bei Debian ist es im Paket coreboot-utils enthalten: sudo apt install coreboot-utils
    Alternativ kann man es auch direkt aus dem Coreboot-Quellcode kompilieren, es ist bei jedem Release im Ordner util/ectool enthalten.

  • Dann kann es losgehen...

    • Zuerst muss man die Ladeschwellen auf die Standardwerte zurücksetzen, damit der Akku wirklich vollgeladen wird:

      Code:
      sudo tee /sys/class/power_supply/BAT0/charge_control_start_threshold <<< 96
      sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold <<< 100


      Falls es einen zweiten Akku gibt, muss man das für BAT1 wiederholen:

      Code:
      sudo tee /sys/class/power_supply/BAT1/charge_control_start_threshold <<< 96
      sudo tee /sys/class/power_supply/BAT1/charge_control_end_threshold <<< 100


    • Nun kann ein Force-Discharge angefordert werden, bei dem der Akku später komplett entladen wird, obwohl ein Netzteil angesteckt ist.

      • Für den primären Akku geht das mit diesem Befehl: sudo ectool -w 0xb4 -z 0x06
      • Für einen sekundären Akku, sofern vorhanden: sudo ectool -w 0xb5 -z 0x06


    • Nun heißt es warten, bis der Akku vollständig entladen wurde. Danach startet ein Ladevorgang von 0% auf 100%, während dem Laden (nicht Entladen!) kann man das Gerät auch ausschalten. Der Ladevorgang dauert meistens einige Stunden, weil die Ladeleistung gegen Ende immer mehr abnimmt. Zu beachten ist auch, dass bei einem Neustart während des Ladevorgangs eventuell die Ladeschwellen wieder auf andere Werte gesetzt werden, wenn z.B. TLP installiert ist! Das würde die Kalibrierung unterbrechen.

    • Falls das Gerät währenddessen weiter eingeschaltet bleibt, sollte man nach Beendigung des Ladevorgangs den Akku einmal herausnehmen und wieder neu einsetzen. Oder alternativ das System einmal ausschalten und wieder starten. Andernfalls sind die neuen Maximalwerte des Akkus nicht sichtbar.

    • Zum Schluss sollte man die Ladeschwellen wieder auf die gewünschten Werte setzen. Bei Verwendung von TLP passiert das jedoch sowieso bei jedem Systemstart im Hintergrund.


  • Fertig! Der neue Maximalwert ("charge_full") sollte nun ersichtlich sein, nachfolgend die beispielhafte Ausgabe von TLP:

    Code:
    # tlp-stat -b

    [...]

    +++ ThinkPad Battery Status: BAT0 (Main / Internal)
    /sys/class/power_supply/BAT0/manufacturer                   = LGC
    /sys/class/power_supply/BAT0/model_name                     = 45N1153
    /sys/class/power_supply/BAT0/cycle_count                    =      0 (or not supported)
    /sys/class/power_supply/BAT0/charge_full_design             =  99460 [mWh] *
    /sys/class/power_supply/BAT0/charge_full                    =  87860 [mWh] *
    /sys/class/power_supply/BAT0/charge_now                     =  81540 [mWh] *
    /sys/class/power_supply/BAT0/current_now                    =  14720 [mW] *
    /sys/class/power_supply/BAT0/status                         = Discharging

    [...]


    Alternativ einfach die angegebenen Pfade über ein Terminal auslesen, z.B. mit cat. Smile




Autor Nachricht
Für diesen Beitrag können zur Zeit keine neuen Kommentare verfasst werden.

Kontaktiere den Autor des Beitrages, falls du Fragen dazu hast.


 

Verwendete Zeitzone: CET (Europe/Berlin)
Aktuelles Datum & Uhrzeit: 21.01.2026, 19:22
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!

Hosted by netcup
 
 
[ happytec.at | blog.happytec.at | forum.happytec.at | esports.happytec.at ]