GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak omezit nabíjení baterie (nastavení prahu nabití) pro notebooky ASUS v systému Linux

Novější notebooky ASUS podporují omezení úrovně baterie, což prodlužuje životnost baterie. Tento článek vysvětluje, jak nastavit práh nabíjení baterie pro notebooky ASUS v systému Linux.

Životnost baterie je ovlivněna stářím, vysokými teplotami, počtem nabíjecích cyklů a dobou úplného nabití. Prahová hodnota nabití baterie zkracuje dobu plného nabití (100 %), a tím zlepšuje stav / životnost baterie.

Notebooky ASUS podporují nastavení prahu nabíjení pro začátek s Linuxem 5.4 . Metoda jádra WMI pro nastavení prahu nabití neposkytuje způsob, jak specifikovat baterii, za předpokladu, že se jedná o první baterii (BAT0 ). Některé novější notebooky ASUS však nepůjdou na primární baterii BAT0 , ale BATT (např. Zenbook UM431DA) a BAT1 (např. ASUS TUF Gaming FX706II). [Edit] A je tu také BATC.

Takže zatímco notebooky ASUS od Linuxu 5.4 a novější podporují omezení procesu nabíjení baterie, je to pouze pro notebooky s BAT0 . Pro notebooky ASUS s BATT Jako primární název baterie potřebujete jádro 5.7 while for BAT1 budete potřebovat toto jádro 5.8 (přesný postup kontroly názvu baterie naleznete v pokynech níže). [Upravit] U notebooků ASUS, které používají název baterie BATC, musíte mít Linux 5.9 nebo novější.

Podobně ne všechny notebooky ASUS podporují nastavení prahové hodnoty nabití baterie, takže vám to může nebo nemusí fungovat v závislosti na modelu vašeho notebooku ASUS; Neexistuje seznam podporovaných zařízení, která jsem našel.

Je důležité zmínit Metoda WMI jádra pro nastavení prahu nabití baterie pro notebooky ASUS může používat pouze hodnotu stop (charge_control_end_threshold ) (nemůže také nastavit práh spuštění). Pokud je úroveň nabití baterie vyšší než prahová hodnota pro zastavení nabíjení, nebude po připojení k elektrické síti vybita na prahovou hodnotu pro zastavení.

A ještě jedna poznámka. Na mém ASUS ZenBook 14 UX433FAC s Ubuntu 20.04 s GNOME Shell se indikátor baterie na horním panelu změní ze zbývajícího času, pokud je úroveň baterie omezena, zatímco úroveň baterie je rovna nebo vyšší než práh nabití a poté je notebook připojen do sítě, dokud se baterie nevybije na dobu zbývající k nabití baterie. K tomu dochází, i když se baterie nenabíjí. Po chvíli (ne hned po zapojení notebooku do sítě) se indikátor baterie změní na „Not Charged“, jak bylo zamýšleno.

Kromě ASUSu některé notebooky Lenovo a Huawei (poslední využívající podporu s Linuxem 5.5) také podporují omezení nabíjení baterie. Protože však mám pouze jeden notebook ASUS a nemohu jej testovat na jiných zařízeních, platí tyto pokyny pouze pro ASUS. Lenovo pro to má podporu již nějakou dobu a TLP poskytuje podporu pro nastavení těchto integrovaných (pouze pro IBM / Lenovo ThinkPady). Jako vedlejší poznámku uvádíme grafické uživatelské rozhraní pro TLP, které usnadňuje konfiguraci v případě, že jej ještě nepoužíváte.

Mohlo by se vám také líbit toto:auto-cpufreq je optimalizátor rychlosti a výkonu CPU pro Linux

Jak nastavit práh pro zastavení nabíjení baterie u notebooků ASUS v systému Linux

1. Zjistěte název baterie vašeho notebooku ASUS.

Začněme tím, že zjistíme název baterie pro váš notebook ASUS. To lze provést pomocí následujícího příkazu:

ls /sys/class/power_supply

Tento příkaz by měl vytisknout něco takového:

AC0  BAT0

V tomto příkladu (z mého notebooku ASUS) je název baterie BAT0 , ale jak je uvedeno výše, může to být i pro vás BAT1 nebo BATT , toto jsou jediné názvy baterií podporované jádrem pro notebooky ASUS.

2. Vytvořte službu systemd pro nastavení prahové hodnoty pro zastavení nabíjení baterie při spouštění.

Před vytvořením služby systemd zkontrolujte, zda váš notebook skutečně má charge_control_end_threshold v /sys/class/power_supply/BAT* (bez něj to nejde):

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

Když tento příkaz vrátí cestu k charge_control_end_threshold , pak váš notebook ASUS podporuje omezení nabití baterie. Pokud příkaz vrátí chybu oznamující, že žádný takový soubor nebo adresář neexistuje, váš notebook nepodporuje nastavení prahu nabíjení.

Pokud váš notebook ASUS tento soubor obsahuje, můžeme pokračovat. Vytvořte soubor, který budeme nazývat battery-charge-threshold.service v /etc/systemd/system .

Tento soubor můžete otevřít pomocí standardního textového editoru konzoly:

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

Nebo použijte Gedit nebo jakýkoli grafický editor, který chcete použít (např. aby Gedit otevřel tento soubor jako root:gedit admin:///etc/systemd/system/battery-charge-threshold.service )

V tomto souboru musíte zahrnout následující:

[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

Zde změňte BATTERY_NAME s názvem baterie (BAT0 , BAT1 nebo BATT ) a CHARGE_STOP_THRESHOLD s prahem zastavení nabíjení, který chcete použít (mezi 1 a 100). Všimněte si, že jsem četl, že uživatel nemohl nastavit práh poplatku na žádnou hodnotu, pouze na 60, 80 a 100.

Z toho, co jsem četl, pro nejlepší výdrž baterie, když je notebook většinu času zapojený, nastavte práh zastavení nabíjení baterie na přibližně 50 nebo 60. Pokud se baterie používá málo často, nastavte práh zastavení baterie na kolem 90.

3. Aktivujte a spusťte službu systemd pro práh nabití baterie.

Nyní aktivujme a spusťte nově vytvořenou systémovou službu Battery Charge Threshold:

sudo systemctl enable battery-charge-threshold.service

sudo systemctl start battery-charge-threshold.service

S systemd 220 je možné směrovat službu přes. pro aktivaci a spuštění systemctl enable --now ale raději používám 2 příkazy v případě, že někteří čtenáři používají starší verzi systemd.

Pokud chcete změnit práh pro zastavení nabíjení baterie , musíte upravit toto /etc/systemd/system/battery-charge-threshold.service Soubor a změňte číslo z ExecStart Řádek (za echo ) na novou hodnotu, kterou chcete použít, poté znovu načtěte systemd (protože se obsah souboru změnil) a restartujte službu systemd pomocí následujících příkazů:

sudo systemctl daemon-reload

sudo systemctl restart battery-charge-threshold.service

4. Ověřte, že prahová hodnota pro zastavení baterie funguje.

Pokud to váš notebook ASUS podporuje, limit nabití baterie by měl být nyní nastaven na hodnotu, kterou jste použili v kroku 2.

Můžete to zkontrolovat nabitím notebooku na prahovou hodnotu nastavenou v battery-charge-threshold.service a poté použijte tento příkaz:

cat /sys/class/power_supply/BATTERY_NAME/status

Nahraďte BATTERY_NAME s názvem baterie, jak je vysvětleno v kroku 1.

Pokud prahová hodnota zastavení nabíjení baterie funguje, příkaz by měl zobrazit následující výstup:

Not Charging

Pokud se zobrazí „Vybíjení“, ujistěte se, že váš notebook ASUS skutečně běží na střídavý proud a nikoli na baterii. Pokud však říká „Charging“, no … pak se váš notebook nabíjí nad prahem pro zastavení nabíjení, takže to pro vás nebude fungovat, také proto, že váš notebook ASUS to nepodporuje (což je divné, pokud ano) charge_control_end_threshold Jak je uvedeno v kroku 2), používáte verzi Linuxu, která je příliš stará na to, aby omezila nabíjení baterie v notebooku ASUS, nebo kvůli lidské chybě?️.

Extra:V případě, že nepoužíváte systemd, můžete to provést také pomocí cronu spuštěním sudo crontab -e a pak vložte následující řádek (toto je jeden řádek, třikrát na něj klikněte, abyste vybrali celý řádek), ačkoli podle toho, co jsem četl, to není ve všech případech spolehlivé (nejsem si jistý proč):

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

Nahraďte CHARGE_STOP_THRESHOLD s prahem zastavení nabíjení, který chcete použít, a BATTERY_NAME s názvem baterie, jak je uvedeno v kroku 1.

Proč používat službu systemd nebo úlohu cron? Podle u / esrevartb, od kterého jsem tuto příručku upravil, „zdá se, že pravidlo udev nefunguje, buď proto, že cesta batterysysfs ještě není inicializována, když je pravidlo aplikováno, nebo proto, že tento konkrétní atribut charge_control_end_threshold nelze změnil tímto způsobem “.

[[Edit] Chcete-li snadno nastavit práh nabíjení pro notebooky ASUS (automatické nastavení služby systemd a možnost změnit práh nabíjení pomocí příkazu), stejně jako zkontrolovat aktuální práh nabíjení, viz bat.

Související s baterií notebooku:Bwall je animovaná tapeta baterie pro Linux (bash skript)

výše r / Linux hardware (Díky u / esrevartb)


Ubuntu
  1. Jak omezit využití CPU procesu v Linuxu

  2. Jak omezit využití zdrojů pro daný proces?

  3. Jednoduše načtěte prahové hodnoty nabíjení pro notebooky ASUS na Linuxu pomocí bat

  1. Jak zobrazit/zkontrolovat otevřené porty na Ubuntu Linux

  2. Jak omezit využití CPU pomocí CPULimit na Ubuntu Linux

  3. Jak zlepšit výkon baterie notebooku v Linuxu

  1. Jak nainstalovat Android File Transfer pro Linux na Ubuntu

  2. Jak určit časový limit pro relaci sudo

  3. Jak určit časový limit pro relaci sudo v Ubuntu 20.04 LTS