GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So begrenzen Sie das Laden des Akkus (Festlegen eines Ladeschwellenwerts) für ASUS-Laptops unter Linux

Neuere ASUS-Laptops unterstützen die Begrenzung des Akkustands, wodurch die Akkulaufzeit verlängert wird. In diesem Artikel wird erläutert, wie Sie einen Batterieladeschwellenwert für ASUS-Laptops unter Linux festlegen.

Die Batterielebensdauer wird durch Alter, hohe Temperaturen, die Anzahl der Ladezyklen und die Zeit, die zum vollständigen Aufladen benötigt wird, beeinflusst. Eine Batterieladeschwelle reduziert die Dauer einer Vollladung (100%) und verbessert somit den Zustand / die Lebensdauer der Batterie.

ASUS-Laptops unterstützen das Festlegen eines Ladeschwellenwerts beginnend mit Linux 5.4 . Die Kernel-WMI-Methode zum Festlegen des Ladeschwellenwerts bietet keine Möglichkeit, einen Akku anzugeben, vorausgesetzt, es handelt sich um den ersten Akku (BAT0 ). Einige neuere ASUS-Laptops gehen jedoch nicht zum primären Akku BAT0 , aber BATT (z. B. Zenbook UM431DA) und BAT1 (z. B. ASUS TUF Gaming FX706II). [Bearbeiten] Und es gibt auch BATC.

Während also ASUS-Laptops ab Linux 5.4 die Begrenzung des Akkuladevorgangs unterstützen, gilt dies nur für Laptops mit BAT0 . Für ASUS-Laptops mit BATT Als primären Batterienamen benötigen Sie Kernel 5.7 während für BAT1 Sie benötigen diesen 5.8-Kernel (Sehen Sie sich die Anweisungen unten an, um genau zu erfahren, wie Sie den Batterienamen überprüfen können). [Bearbeiten] Für ASUS-Laptops, die den Batterienamen BATC verwenden, müssen Sie Linux 5.9 oder neuer verwenden.

Ebenso unterstützen nicht alle ASUS-Laptops das Festlegen eines Schwellenwerts für die Akkuladung, sodass dies je nach Modell Ihres ASUS-Laptops für Sie funktionieren kann oder nicht; Ich konnte keine Liste der unterstützten Geräte finden.

Es ist wichtig zu erwähnen, dass die Kernel-WMI-Methode zum Festlegen des Batterieladeschwellenwerts für ASUS-Notebooks nur den Stoppwert (charge_control_end_threshold ) (es kann nicht auch die Startschwelle einstellen). Wenn der Ladezustand der Batterie höher als die Ladestoppschwelle ist, wird sie nicht bis zur Stoppschwelle entladen, wenn das Wechselstromnetz angeschlossen ist.

Und noch eine Anmerkung. Auf meinem ASUS ZenBook 14 UX433FAC mit Ubuntu 20.04 mit GNOME Shell ändert sich die Akkuanzeige auf der Oberseite von der verbleibenden Zeit, wenn der Akkustand begrenzt ist, während der Akkustand gleich oder größer als die Ladeschwelle ist und dann der Laptop angeschlossen wird an das Stromnetz, bis der Akku auf die verbleibende Zeit zum Laden des Akkus entladen ist. Dies geschieht, obwohl der Akku nicht geladen wird. Nach einer Weile (nicht sofort, wenn Sie Ihren Laptop an das Stromnetz anschließen) wechselt die Akkuanzeige wie vorgesehen auf „Nicht geladen“.

Zusätzlich zu ASUS unterstützen auch einige Laptops von Lenovo und Huawei (letzteres wird mit Linux 5.5 unterstützt) die Begrenzung der Akkuladung. Da ich jedoch nur einen ASUS-Laptop habe und ihn nicht auf anderen Geräten testen kann, gelten diese Anweisungen nur für ASUS. Lenovo hat dafür schon seit geraumer Zeit Support und TLP hat Unterstützung bei der Einstellung dieser Integriert gegeben (nur für IBM / Lenovo ThinkPads). Als Nebenbemerkung ist hier eine GUI für TLP, um die Konfiguration zu vereinfachen, falls Sie es noch nicht verwenden.

Das könnte Ihnen auch gefallen:auto-cpufreq ist ein CPU-Geschwindigkeits- und Leistungsoptimierer für Linux

So legen Sie einen Schwellenwert fest, um das Aufladen des Akkus für ASUS-Laptops unter Linux zu stoppen

1. Finden Sie den Namen Ihres ASUS-Laptop-Akkus heraus.

Beginnen wir damit, den Batterienamen für Ihren ASUS-Laptop herauszufinden. Dies kann mit dem folgenden Befehl erfolgen:

ls /sys/class/power_supply

Dieser Befehl sollte in etwa so aussehen:

AC0  BAT0

In diesem Beispiel (von meinem ASUS-Notebook) lautet der Name des Akkus BAT0 , aber wie oben erwähnt, kann es auch für Sie BAT1 sein oder BATT , dies sind die einzigen Batterienamen, die vom Kernel für ASUS-Laptops unterstützt werden.

2. Erstellen Sie einen systemd-Dienst, um den Schwellenwert für das Beenden des Akkuladevorgangs beim Booten festzulegen.

Überprüfen Sie vor dem Erstellen des systemd-Dienstes, ob Ihr Laptop tatsächlich charge_control_end_threshold hat in /sys/class/power_supply/BAT* (es geht nicht ohne):

ls /sys/class/power_supply/BAT*/charge_control_end_threshold

Wenn dieser Befehl den Pfad zu charge_control_end_threshold zurückgibt , dann unterstützt Ihr ASUS-Notebook die Begrenzung der Akkuladung. Wenn der Befehl einen Fehler zurückgibt, der besagt, dass keine solche Datei oder kein solches Verzeichnis vorhanden ist, unterstützt Ihr Laptop das Festlegen eines Ladeschwellenwerts nicht.

Wenn Ihr ASUS-Laptop diese Datei hat, können wir weitermachen. Erstellen Sie eine Datei, die wir battery-charge-threshold.service nennen in /etc/systemd/system .

Sie können diese Datei mit Ihrem standardmäßigen Konsolen-Texteditor folgendermaßen öffnen:

sudo editor /etc/systemd/system/battery-charge-threshold.service

Oder verwenden Sie Gedit oder einen beliebigen grafischen Editor, den Sie verwenden möchten (z. B. um Gedit diese Datei als root öffnen zu lassen:gedit admin:///etc/systemd/system/battery-charge-threshold.service )

In diese Datei müssen Sie Folgendes einfügen:

[Unit]
Description=Set the battery charge threshold
After=multi-user.target

StartLimitBurst=0

[Service]
Type=oneshot
Restart=on-failure

ExecStart=/bin/bash -c 'echo CHARGE_STOP_THRESHOLD > /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold'

[Install]
WantedBy=multi-user.target

Ändern Sie hier BATTERY_NAME mit dem Namen der Batterie (BAT0 , BAT1 oder BATT ) und CHARGE_STOP_THRESHOLD mit dem Ladestopp-Schwellenwert, den Sie verwenden möchten (zwischen 1 und 100). Beachten Sie, dass ich gelesen habe, dass ein Benutzer den Gebührenschwellenwert nicht auf einen beliebigen Wert setzen konnte, sondern nur auf 60, 80 und 100.

Nach dem, was ich gelesen habe, stellen Sie für die beste Akkulaufzeit, wenn der Laptop die meiste Zeit an das Stromnetz angeschlossen ist, den Ladestopp-Schwellenwert des Akkus auf etwa 50 oder 60 ein. Wenn der Akku etwas häufig verwendet wird, stellen Sie den Akkustopp-Schwellenwert auf ein um 90.

3. Aktivieren und starten Sie den systemd-Dienst für die Batterieladeschwelle.

Lassen Sie uns nun den neu erstellten Battery Charge Threshold-Systemdienst aktivieren und starten:

sudo systemctl enable battery-charge-threshold.service

sudo systemctl start battery-charge-threshold.service

Mit systemd 220 ist es möglich, einen Dienst per zu leiten. um systemctl enable --now zu aktivieren und zu starten aber ich ziehe es vor, 2 Befehle zu verwenden, falls einige Leser eine ältere Version von systemd verwenden.

Wenn Sie den Schwellenwert für das Stoppen des Ladevorgangs des Akkus ändern möchten , müssen Sie diesen /etc/systemd/system/battery-charge-threshold.service bearbeiten Datei und ändern Sie die Nummer von ExecStart Zeile (nach echo ) auf den neuen Wert, den Sie verwenden möchten, laden Sie dann systemd neu (da sich der Dateiinhalt geändert hat) und starten Sie den systemd-Dienst mit den folgenden Befehlen neu:

sudo systemctl daemon-reload

sudo systemctl restart battery-charge-threshold.service

4. Stellen Sie sicher, dass der Batteriestopp-Schwellenwert funktioniert.

Wenn Ihr ASUS-Laptop dies unterstützt, sollte die Akkuladegrenze jetzt auf den Wert eingestellt sein, den Sie in Schritt 2 verwendet haben.

Sie können dies überprüfen, indem Sie Ihren Laptop bis zu dem in battery-charge-threshold.service eingestellten Schwellenwert aufladen , und verwenden Sie dann diesen Befehl:

cat /sys/class/power_supply/BATTERY_NAME/status

Ersetzen Sie BATTERY_NAME mit dem Namen der Batterie, wie in Schritt 1 erklärt.

Wenn der Schwellenwert für das Aufladen des Akkus funktioniert, sollte der Befehl die folgende Ausgabe zeigen:

Not Charging

Wenn „Discharging“ angezeigt wird, vergewissern Sie sich, dass Ihr ASUS-Laptop tatsächlich mit Netzstrom und nicht mit Akku betrieben wird. Wenn jedoch „Wird geladen“ angezeigt wird, nun … dann lädt Ihr Laptop über die Schwelle zum Stoppen des Ladevorgangs hinaus, sodass dies für Sie nicht funktioniert, auch weil Ihr ASUS-Laptop dies nicht unterstützt (was seltsam wäre, wenn Sie dies tun würden) charge_control_end_threshold Wie in Schritt 2) erwähnt, verwenden Sie eine Linux-Version, die zu alt ist, um das Aufladen des Akkus auf Ihrem ASUS-Notebook zu begrenzen, oder aufgrund menschlicher Fehler ?️.

Extra:Falls Sie systemd nicht verwenden, können Sie dies auch mit cron tun, indem Sie sudo crontab -e ausführen und fügen Sie dann die folgende Zeile ein (dies ist eine einzelne Zeile, klicken Sie dreimal auf die Zeile, um die gesamte Zeile auszuwählen), obwohl dies nach dem, was ich gelesen habe, nicht in allen Fällen zuverlässig ist (ich bin mir nicht sicher, warum):

@reboot echo CHARGE_STOP_THRESHOLD > /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold

Ersetzen Sie CHARGE_STOP_THRESHOLD mit dem Ladestopp-Schwellenwert, den Sie verwenden möchten, und BATTERY_NAME mit dem Batterienamen wie in Schritt 1 gezeigt.

Warum einen systemd-Dienst oder einen Cron-Job verwenden? Laut u / esrevartb, von dem ich diese Anleitung angepasst habe, „scheint die udev-Regel nicht zu funktionieren, entweder weil der Batteriesysfs-Pfad noch nicht initialisiert ist, wenn die Regel angewendet wird, oder weil dieses spezielle charge_control_end_threshold-Attribut nicht sein kann auf diese Weise geändert “.

[[Bearbeiten] Zum einfachen Festlegen einer Ladeschwelle für ASUS-Laptops (automatische Einrichtung des systemd-Dienstes und die Möglichkeit, die Ladeschwelle mit einem Befehl zu ändern) sowie zum Überprüfen der aktuellen Ladeschwelle siehe bat.

Bezogen auf Laptop-Batterien:Bwall ist ein animiertes Batterie-Hintergrundbild für Linux (Bash-Skript)

oben r / Linux-Hardware (Danke u / esrevartb)


Ubuntu
  1. So zeigen/überprüfen Sie offene Ports unter Ubuntu Linux

  2. So begrenzen Sie die CPU-Auslastung mit CPULimit unter Ubuntu Linux

  3. So begrenzen Sie die CPU-Auslastung eines Prozesses in Linux

  4. Wie kann die Ressourcennutzung für einen bestimmten Prozess begrenzt werden?

  5. Laden Sie einfach die Ladeschwellen für ASUS-Laptops unter Linux mit bat

Wie überprüfe ich Ram-Fehler über Linux?

So installieren Sie PlayOnLinux unter Ubuntu Linux:Ein einfaches Tutorial für Neulinge

So installieren Sie OpenVPN in Ubuntu Linux:Ein Tutorial für Neulinge

So installieren Sie Nextcloud unter Ubuntu Linux:Ein vollständiges Tutorial für Neulinge

So installieren Sie OwnCloud unter Ubuntu Linux:Ein Tutorial für Neulinge

So installieren Sie Software in Ubuntu Linux:Eine vollständige Anleitung für Neulinge