Linux Projektvorstellung: TLP – Linux Stromsparen

Linux Betriebssystem

linrunner

Ubuntuversteher
Themenstarter
Registriert
22 Juni 2007
Beiträge
13.996
Nachdem im Forum öfters nachgefragt wird, wie man Linux die Feinheiten des Stromsparens beibringt, habe ich mich vor einiger Zeit entschlossen, meine Skriptsammlung in eine allgemein benutzbare Form zu bringen. Das Ergebnis möchte ich Euch an dieser Stelle vorstellen.

Dokumentation ist auf der offiziellen Website https://linrunner.de/tlp/ zu finden (die Infos in unserem Wiki werden von mir nicht mehr gepflegt und sind veraltet).

Fragen und Probleme einfach hier im Thread posten.

Für die erste Analyse benötige ich bitte stets den kompletten Output von

Code:
sudo tlp-stat
Anmerkung: ich fordere oft in der weiteren Analyse Teilausgaben an - das sollt ihr jedoch nicht selbstständig tun! Immer zuerst die vollständige Ausgabe.

Bitte auch die FAQ beachten!

Thema KI: Anfragen à la "die KI hat gesagt, es hat aber nicht funktioniert. Was meinst Du dazu?" werden nicht supported. Ich werde "AI Slop" nicht kommentieren und will auch in diesem Thread keinerlei halluzinierte KI-Inhalte sehen, die dann später per Suchmaschine (oder wiederum KI) auffindbar sind!

Rückmeldungen der Art "alles funktioniert" sind natürlich auch gern gesehen ... :cool:
 
Zuletzt bearbeitet:
Hallo linrunner,
vielen Dank für deine Antworten!
Wie ich schon geschrieben habe, bin ich gerade dabei mich in Linux einzuarbeiten.
Ich bin ein Fan von "clean install". Deswegen bin ich gerade dabei, sehr viele verschiedene Software und Einstellungen für Windows und Linux zu testen. Das installiere ich auf meinem "Test System". Wenn ich mein finales setup gefunden habe, dann möchte ich Linux (und Windows) komplett neu installieren und nur die Software, die ich brauche und ohne Experimente.
Deswegen möchte ich TLP komplett entfernen um es später wieder frisch aufzuspielen.
Vor allem beim Deinstallieren habe ich leider unterschiedliche "Anleitungen" im Internet gefunden.
Und als sich plötzlich das Spiel pacman geöffnet hatte beim Versuch zu deinstallieren, habe ich mich an dich / das Forum hier gewendet. Ich glaube es war der Befehl: sudo pacman -Rns tlp

Also für die Installation muss ich dann eigentlich nur folgendes machen?!
Befehl:sudo add-apt-repository ppa:linrunner/tlp
Befehl:sudo apt update
Befehl:sudo apt install tlp tlp-pd tlp-rdw

Und wie rufe ich die Config-Datei auf um die Schwellwerte anzupassen?
 
Und als sich plötzlich das Spiel pacman geöffnet hatte beim Versuch zu deinstallieren, habe ich mich an dich / das Forum hier gewendet. Ich glaube es war der Befehl: sudo pacman -Rns tlp
pacman ist der Paketmanager von Arch Linux und seinen Derivaten. Debian/Ubuntu/Mint und Derivate verwenden dafür apt (und im Hintergrund dpkg).
Also für die Installation muss ich dann eigentlich nur folgendes machen?!
Befehl:sudo add-apt-repository ppa:linrunner/tlp
Befehl:sudo apt update
Befehl:sudo apt install tlp tlp-pd tlp-rdw
Korrekt.
Und wie rufe ich die Config-Datei auf um die Schwellwerte anzupassen?
 
okay, super. Vielen Dank! Ich habe es installiert und teste es gerade. Der Akku war voll als ich tlp installiert hatte. jetzt habe ich fast Probleme den Akku leer zu kriegen :cool: Also dieses tlp ist schon der Hammer....
 
moin,

was mir grad aufgefallen ist, wo mein X270 im Dock steckt: die Akkus werden da immer auf 100% aufgeladen. So soll das doch nicht sein. Die Ladeschwelle von 80% wird nicht beachtet.
Woran könnte das liegen? Was stimmt an meinen Einstellungen nicht? Liegt es evtl. an der Einstellung "Restore charge Thresholds..."?
Code:
# BAT0: Main battery
# Default: <none>

# Battery charge level below which charging will begin.
START_CHARGE_THRESH_BAT0=60
# Battery charge level above which charging will stop.
STOP_CHARGE_THRESH_BAT0=80

# BAT1: Secondary battery (primary on some laptops)
# Default: <none>

# Battery charge level below which charging will begin.
START_CHARGE_THRESH_BAT1=60
# Battery charge level above which charging will stop.
STOP_CHARGE_THRESH_BAT1=80

# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable.
# Default: 0
 
sorry, das hatte ich tatsächlich letztens vergessen, bin da zu der Zeit nicht mehr ums Kümmern gekommen. Muss ich mal schaen, wann ich das mache.
EditH sagt...hier kommt tlp-stat
Code:
--- TLP 1.9.1 --------------------------------------------

+++ System Info
System         = LENOVO ThinkPad X270 W10DG 20K5S25R00
BIOS           = R0IET73W (1.51 ) LENOVO
EC Firmware    = 1.18
OS Release     = Linux Mint 22.3
Kernel         = 6.8.0-101-generic #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb  9 10:15:05 UTC 2026 x86_64
/proc/cmdline  = BOOT_IMAGE=/boot/vmlinuz-6.8.0-101-generic root=UUID=089f6d3b-f269-4fa4-bc98-d16f56a992ca ro quiet splash
Init system    = systemd 255
Boot mode      = UEFI
Suspend mode   = s2idle [deep]

+++ TLP Status
tlp            = enabled, last run: 07:04:02, 829 sec(s) ago
tlp-rdw        = enabled
tlp-pd         = enabled, running
Power profile  = performance/AC
Power source   = AC

+++ Battery Care
Plugin: thinkpad
Supported features: charge thresholds, chargeonce, discharge, recalibrate
Driver usage:
* natacpi (thinkpad_acpi) = active (charge thresholds, force-discharge)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1:  0(off)..96(default)..99
* STOP_CHARGE_THRESH_BAT0/1:   1..100(default)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = SANYO
/sys/class/power_supply/BAT0/model_name                     = 45N1773
/sys/class/power_supply/BAT0/cycle_count                    =    113
/sys/class/power_supply/BAT0/energy_full_design             =  23200 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  16820 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  16820 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Full

/sys/class/power_supply/BAT0/charge_control_start_threshold =     60 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =     80 [%]
/sys/class/power_supply/BAT0/charge_behaviour               = [auto] inhibit-charge force-discharge

Charge                                                      =  100.0 [%]
Capacity                                                    =   72.5 [%]

+++ ThinkPad Battery Status: BAT1 (Removable)
/sys/class/power_supply/BAT1/manufacturer                   = LGC
/sys/class/power_supply/BAT1/model_name                     = 45N1127
/sys/class/power_supply/BAT1/cycle_count                    =    215
/sys/class/power_supply/BAT1/energy_full_design             =  23480 [mWh]
/sys/class/power_supply/BAT1/energy_full                    =  13810 [mWh]
/sys/class/power_supply/BAT1/energy_now                     =  11330 [mWh]
/sys/class/power_supply/BAT1/power_now                      =      0 [mW]
/sys/class/power_supply/BAT1/status                         = Not charging

/sys/class/power_supply/BAT1/charge_control_start_threshold =     60 [%]
/sys/class/power_supply/BAT1/charge_control_end_threshold   =     80 [%]
/sys/class/power_supply/BAT1/charge_behaviour               = [auto] inhibit-charge force-discharge

Charge                                                      =   82.0 [%]
Capacity                                                    =   58.8 [%]

+++ Charge total                                            =   91.9 [%]

+++ Recommendations
* BAT0 charge level is above the stop threshold. Use your laptop on battery power until the battery is discharged to the stop threshold.
* BAT1 charge level is above the stop threshold. Use your laptop on battery power until the battery is discharged to the stop threshold.
 
Zuletzt bearbeitet:
Ring frei für die 1.10 Beta :cool:. Ich freue mich auf Eure Testergebnisse:
 
habs gerade unter Fedora 43 reinbekommen. (y)

Code:
~$ tlp --version
TLP version 1.10.0
 
@Karma kannst Du mal bitte

Bash:
sudo systemctl restart tlp.service
sudo systemctl status tlp.service

zeigen?
 
Guten Morgen, das sieht nicht gut aus.

Code:
root@Fedora:~# systemctl restart tlp.service
root@Fedora:~# systemctl status tlp.service
× tlp.service - TLP system startup/shutdown
     Loaded: loaded (/usr/lib/systemd/system/tlp.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: failed (Result: exit-code) since Thu 2026-04-23 06:31:58 CEST; 7s ago
 Invocation: 93f96265f6ce471583b6533237ccaa63
       Docs: https://linrunner.de/tlp
    Process: 4911 ExecStart=/usr/bin/tlp init start (code=exited, status=1/FAILURE)
   Main PID: 4911 (code=exited, status=1/FAILURE)
   Mem peak: 6M
        CPU: 79ms

Apr 23 06:31:58 Fedora systemd[1]: Starting tlp.service - TLP system startup/shutdown...
Apr 23 06:31:58 Fedora systemd[1]: tlp.service: Main process exited, code=exited, status=1/FAILURE
Apr 23 06:31:58 Fedora systemd[1]: tlp.service: Failed with result 'exit-code'.
Apr 23 06:31:58 Fedora systemd[1]: Failed to start tlp.service - TLP system startup/shutdown.
root@Fedora:~#

Edit meint, scheinbar werden die eingestellten Ladeschwellen eingehalten - hier mal noch die tlp-stat.

Code:
root@Fedora:~# tlp-stat -b
--- TLP 1.10.0 --------------------------------------------

+++ Battery Care
Plugin: thinkpad
Supported features: charge thresholds, chargeonce, discharge, recalibrate
Driver usage:
* natacpi (thinkpad_acpi) = active (charge thresholds, force-discharge)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1:  0(off)..96(default)..99
* STOP_CHARGE_THRESH_BAT0/1:   1..100(default)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = SMP
/sys/class/power_supply/BAT0/model_name                     = 02DL012
/sys/class/power_supply/BAT0/cycle_count                    =     67
/sys/class/power_supply/BAT0/energy_full_design             =  57020 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  44050 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  32840 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Not charging

/sys/class/power_supply/BAT0/charge_control_start_threshold =     60 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =     80 [%]
/sys/class/power_supply/BAT0/charge_behaviour               = [auto] inhibit-charge force-discharge

Charge                                                      =   74.6 [%]
Capacity                                                    =   77.3 [%]

root@Fedora:~#
 
Zuletzt bearbeitet:
@Karma das Problem beim Start des Service ist bei mir auch unter Fedora, muss ich noch untersuchen. Ich wollte nur schnell die Gelegenheit nutzen, zu schauen ob es mehr Betroffene gibt.

Und nein, deine Ladeschwellen ziehen. Die Ausgabe zeigt es.

EDITH sagt: es scheint – wie leider fast immer bei Fedora :rolleyes: – ein SELinux Problem zu sein:
Apr 23 12:59:00 t450s audit[9252]: AVC avc: denied { create } for pid=9252 comm="tlp" name="lock_tlp" scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:tlp_var_run_t:s0 tclass=file permissive=0
 
Zuletzt bearbeitet:
@Karma SELinux killt das erstmalige Anwenden der Einstellungen beim Boot, so dass sie u.U. unvollständig sind bis zum nächsten Wechsel der Stromquelle bzw. des Profils.

Leider passiert es häufig, dass Änderungen an Fedoras zentraler SELinux Policy, die eigentlich nichts mit TLP zu tun haben, zu derartigen Regressionen bei TLP führen, auf die ich als Upstream keinen Einfluss habe. Sobald ich mich wieder hinreichend motiviert habe, werde ich einen Workaround zum aktuellen Problem suchen.
 
Workaround
(getestet mit Fedora 44 - sollte aber auch bei 43 funktionieren)

Ich habe den Workaround paketiert.

Fedora 43/44 jeweils in: tlp-updates-testing

Code:
sudo dnf upgrade tlp{,-pd,-rdw} --refresh --enablerepo tlp-updates-testing

Code:
sudo bash -c 'mkdir -p /etc/systemd/system/tlp.service.d/ && printf '[Service]\nNoNewPrivileges=no' > /etc/systemd/system/tlp.service.d/overwrite.conf && systemctl daemon-reload'

Anschließend sollte ein
Code:
sudo systemctl restart tlp.service
ohne Fehlermeldung ausgeführt werden.
 
Zuletzt bearbeitet:
Ne, macht er unter Fedora 43 nicht.

Code:
root@Fedora:~# bash -c 'mkdir -p /etc/systemd/system/tlp.service.d/ && printf '[Service]\nNoNewPrivileges=no' > /etc/systemd/system/tlp.service.d/overwrite.conf && systemctl daemon-reload'
root@Fedora:~# systemctl restart tlp.service
Warning: The unit file, source configuration file or drop-ins of tlp.service changed on disk. Run 'systemctl daemon-reload' to reload units.
root@Fedora:~# systemctl daemon-reload
root@Fedora:~# systemctl status tlp.service
Warning: The unit file, source configuration file or drop-ins of tlp.service changed on disk. Run 'systemctl daemon-reload' to reload units.
× tlp.service - TLP system startup/shutdown
     Loaded: loaded (/usr/lib/systemd/system/tlp.service; bad; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
             /etc/systemd/system/tlp.service.d
             └─overwrite.conf
     Active: failed (Result: exit-code) since Thu 2026-04-23 22:53:16 CEST; 36s ago
 Invocation: 9a3e66a4f78c42d99d6684c14e30f5cc
       Docs: https://linrunner.de/tlp
   Main PID: 42480 (code=exited, status=1/FAILURE)
   Mem peak: 6.2M
        CPU: 94ms

Apr 23 22:53:16 Fedora systemd[1]: Starting tlp.service - TLP system startup/shutdown...
Apr 23 22:53:16 Fedora systemd[1]: tlp.service: Main process exited, code=exited, status=1/FAILURE
Apr 23 22:53:16 Fedora systemd[1]: tlp.service: Failed with result 'exit-code'.
Apr 23 22:53:16 Fedora systemd[1]: Failed to start tlp.service - TLP system startup/shutdown.
Apr 23 22:53:39 Fedora systemd[1]: /etc/systemd/system/tlp.service.d/overwrite.conf:1: Invalid section header '[Service]nNoNewPrivileges=no'
Apr 23 22:53:53 Fedora systemd[1]: /etc/systemd/system/tlp.service.d/overwrite.conf:1: Invalid section header '[Service]nNoNewPrivileges=no'
root@Fedora:~#
 
Das ist ein Copy&Paste Fehler.
Da ist der Zeilenumbruch verloren gegangen.

Code:
Apr 23 22:53:53 Fedora systemd[1]: /etc/systemd/system/tlp.service.d/overwrite.conf:1: Invalid section header '[Service]nNoNewPrivileges=no'

Die overwrite.conf soll so aussehen.
Code:
[Service]
NoNewPrivileges=no

Aber lösche am besten die Datei und teste das neue Paket. (s.o.)

Code:
sudo rm /etc/systemd/system/tlp.service.d/overwrite.conf
 
Ok, jetzt scheint es zu funktionieren

Code:
root@Fedora:~# systemctl status tlp.service
● tlp.service - TLP system startup/shutdown
     Loaded: loaded (/usr/lib/systemd/system/tlp.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (exited) since Fri 2026-04-24 08:23:50 CEST; 14min ago
 Invocation: 250927efc4d3468bafa10e2c8b95a45b
       Docs: https://linrunner.de/tlp
    Process: 2056 ExecStart=/usr/bin/tlp init start (code=exited, status=0/SUCCESS)
   Main PID: 2056 (code=exited, status=0/SUCCESS)
   Mem peak: 7.5M
        CPU: 263ms

Apr 24 08:23:50 Fedora systemd[1]: Starting tlp.service - TLP system startup/shutdown...
Apr 24 08:23:50 Fedora tlp[2056]: Applying power save settings...done.
Apr 24 08:23:50 Fedora tlp[2056]: Setting battery charge thresholds...done.
Apr 24 08:23:50 Fedora systemd[1]: Finished tlp.service - TLP system startup/shutdown.
root@Fedora:~#
 
  • ok1.de
  • IT Refresh - IT Teile & mehr
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen
  • ok2.de - Notebook Computer Server

Werbung

Zurück
Oben