GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come limitare la carica della batteria (impostando una soglia di carica) per laptop ASUS su Linux

I laptop ASUS più recenti supportano la limitazione del livello della batteria, che prolunga la durata della batteria. Questo articolo spiega come impostare una soglia di carica della batteria per i laptop ASUS su Linux.

La durata della batteria è influenzata dall'età, dalle alte temperature, dal numero di cicli di ricarica e dal tempo necessario per la ricarica completa. Una soglia di carica della batteria riduce la durata di una carica completa (100%) e quindi migliora le condizioni/la durata della batteria.

I laptop ASUS supportano l'impostazione di una soglia di addebito a partire da Linux 5.4 . Il metodo WMI del kernel per impostare la soglia di carica non fornisce un modo per specificare una batteria, supponendo che sia la prima batteria (BAT0 ). Tuttavia, alcuni laptop ASUS più recenti non andranno alla batteria principale BAT0 , ma BATT (es. Zenbook UM431DA) e BAT1 (es. ASUS TUF Gaming FX706II). [Modifica] E c'è anche BATC.

Quindi, mentre i laptop ASUS da Linux 5.4 in poi supportano la limitazione del processo di ricarica della batteria, questo è solo per laptop con BAT0 . Per laptop ASUS con BATT Come nome della batteria principale è necessario Kernel 5.7mentre per BAT1 avrai bisogno di questo kernel 5.8 (consultare le istruzioni seguenti per sapere esattamente come controllare il nome della batteria). [Modifica] Per i laptop ASUS che utilizzano il nome della batteria BATC, è necessario Linux 5.9 o versioni successive.

Allo stesso modo, non tutti i laptop ASUS supportano l'impostazione di una soglia di carica della batteria, quindi potrebbe funzionare o meno a seconda del modello di laptop ASUS; Non c'è un elenco di dispositivi supportati che sono riuscito a trovare.

È importante menzionare Il metodo WMI del kernel per impostare la soglia di carica della batteria per i notebook ASUS può utilizzare solo il valore di arresto (charge_control_end_threshold ) (non può impostare anche la soglia di partenza). Se il livello di carica della batteria è superiore alla soglia di arresto della carica, non verrà scaricata fino alla soglia di arresto quando viene collegata la rete CA.

E un'altra nota. Sul mio ASUS ZenBook 14 UX433FAC con Ubuntu 20.04 con GNOME Shell, l'indicatore della batteria sul pannello superiore cambia rispetto al tempo rimanente se il livello della batteria è limitato mentre il livello della batteria è uguale o superiore alla soglia di carica e quindi il laptop è collegato alla rete fino a quando la batteria non si è scaricata per il tempo rimanente per caricare la batteria. Ciò accade anche se la batteria non è in carica. Dopo un po' (non immediatamente quando colleghi il laptop alla presa di corrente), l'indicatore della batteria cambia in "Non caricata" come previsto.

Oltre ad ASUS, alcuni laptop Lenovo e Huawei (questi ultimi che ricevono il supporto con Linux 5.5) supportano anche la limitazione della carica della batteria. Tuttavia, poiché ho un solo laptop ASUS e non posso testarlo su altri dispositivi, queste istruzioni si applicano solo ad ASUS. Lenovo ha avuto supporto per questo per un po' di tempo e TLP ha fornito supporto per l'impostazione di questi integrati (solo per IBM / Lenovo ThinkPads). Come nota a margine, ecco una GUI per TLP per semplificare la configurazione nel caso non la utilizzi già.

Potrebbe piacerti anche questo:auto-cpufreq è un ottimizzatore di velocità e prestazioni della CPU per Linux

Come impostare una soglia per interrompere la ricarica della batteria per laptop ASUS su Linux

1. Scopri il nome della batteria del tuo laptop ASUS.

Iniziamo con il capire il nome della batteria per il tuo laptop ASUS. Questo può essere fatto con il seguente comando:

ls /sys/class/power_supply

Questo comando dovrebbe stampare qualcosa del genere:

AC0  BAT0

In questo esempio (dal mio notebook ASUS) il nome della batteria è BAT0 , ma come detto sopra, può esserlo anche per te BAT1 o BATT , questi sono gli unici nomi di batteria supportati dal kernel per i laptop ASUS.

2. Crea un servizio systemd per impostare la soglia per l'arresto della carica della batteria all'avvio.

Prima di creare il servizio systemd, verifica che il tuo laptop abbia effettivamente charge_control_end_threshold in /sys/class/power_supply/BAT* (non funziona senza):

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

Quando questo comando restituisce il percorso a charge_control_end_threshold , quindi il tuo notebook ASUS supporta la limitazione della carica della batteria. Se il comando restituisce un errore che indica che non esiste un file o una directory di questo tipo, il tuo laptop non supporta l'impostazione di una soglia di ricarica.

Se il tuo laptop ASUS ha questo file, possiamo andare avanti. Crea un file che chiameremo battery-charge-threshold.service in /etc/systemd/system .

Puoi aprire questo file con il tuo editor di testo della console standard:

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

Oppure usa Gedit o qualsiasi editor grafico che desideri utilizzare (ad esempio per fare in modo che Gedit apra questo file come root:gedit admin:///etc/systemd/system/battery-charge-threshold.service )

In questo file devi includere quanto segue:

[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

Qui, cambia BATTERY_NAME con il nome della batteria (BAT0 , BAT1 o BATT ), e CHARGE_STOP_THRESHOLD con la soglia di arresto della carica che si desidera utilizzare (tra 1 e 100). Nota che ho letto che un utente non può impostare la soglia di addebito su alcun valore, solo su 60, 80 e 100.

Da quello che ho letto, per la migliore durata della batteria quando il laptop è collegato per la maggior parte del tempo, impostare la soglia di carica della batteria su circa 50 o 60. Se la batteria viene utilizzata un po' di frequente, impostare la soglia di carica della batteria su circa 90.

3. Attiva e avvia il servizio systemd per la soglia di carica della batteria.

Ora attiviamo e avviamo il servizio di sistema Soglia di carica della batteria appena creato:

sudo systemctl enable battery-charge-threshold.service

sudo systemctl start battery-charge-threshold.service

Con systemd 220 è possibile indirizzare un servizio tramite. per attivare e avviare systemctl enable --now ma preferisco usare 2 comandi nel caso in cui alcuni lettori utilizzino una versione precedente di systemd.

Se desideri modificare la soglia per interrompere la ricarica della batteria , devi modificare questo /etc/systemd/system/battery-charge-threshold.service Archivia e cambia il numero da ExecStart Riga (dopo echo ) al nuovo valore che desideri utilizzare, quindi ricarica systemd (poiché il contenuto del file è cambiato) e riavvia il servizio systemd con i seguenti comandi:

sudo systemctl daemon-reload

sudo systemctl restart battery-charge-threshold.service

4. Verifica che la soglia di arresto della batteria funzioni.

Se il tuo laptop ASUS supporta questo, il limite di carica della batteria dovrebbe ora essere impostato sul valore che hai utilizzato nel passaggio 2.

Puoi verificarlo caricando il tuo laptop fino alla soglia impostata in battery-charge-threshold.service , quindi usa questo comando:

cat /sys/class/power_supply/BATTERY_NAME/status

Sostituisci BATTERY_NAME con il nome della batteria, come spiegato al punto 1.

Se la soglia di arresto della carica della batteria funziona, il comando dovrebbe mostrare il seguente output:

Not Charging

Se dice "Scarica in corso", assicurati che il tuo laptop ASUS stia effettivamente funzionando con alimentazione CA e non con batteria. Tuttavia, se dice "Carica in corso", beh ... allora il tuo laptop sta caricando oltre la soglia di arresto della ricarica, quindi questo non funzionerà per te, anche perché il tuo laptop ASUS non lo supporta (il che è strano se l'hai fatto) charge_control_end_threshold Come accennato al punto 2), stai utilizzando una versione di Linux troppo vecchia per limitare la carica della batteria del tuo notebook ASUS, o per errore umano ?️.

Extra:nel caso in cui non utilizzi systemd, puoi farlo anche con cron eseguendo sudo crontab -e e quindi incolla la seguente riga (questa è una singola riga, fai clic sulla riga tre volte per selezionare l'intera riga), anche se da quello che ho letto questo non è affidabile in tutti i casi (non sono sicuro del perché):

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

Sostituisci CHARGE_STOP_THRESHOLD con la soglia di addebito che desideri utilizzare e BATTERY_NAME con il nome della batteria come mostrato al punto 1.

Perché usare un servizio systemd o un cron job? Secondo u / esrevartb, da cui ho adattato questa guida, “sembra che la regola udev non funzioni, o perché il percorso batteriesysfs non è ancora inizializzato quando viene applicata la regola, o perché questo particolare attributo charge_control_end_threshold non può essere cambiato in questo modo “.

[[Modifica] Per impostare facilmente una soglia di carica per laptop ASUS (configurazione automatica del servizio systemd e possibilità di modificare la soglia di carica con un comando), oltre a controllare la soglia di carica corrente, vedere bat.

Relativo alla batteria del laptop:Bwall è uno sfondo animato della batteria per Linux (script bash)

sopra r / hardware Linux (grazie u / esrevartb)


Ubuntu
  1. Come mostrare/controllare le porte aperte su Ubuntu Linux

  2. Come limitare l'utilizzo della CPU con CPULimit su Ubuntu Linux

  3. Come limitare l'utilizzo della CPU di un processo in Linux

  4. Come limitare l'utilizzo delle risorse per un determinato processo?

  5. Carica semplicemente le soglie di ricarica per i laptop ASUS su Linux con bat

Come verificare la presenza di errori nella RAM tramite Linux?

Come installare PlayOnLinux su Ubuntu Linux:un semplice tutorial per principianti

Come installare OpenVPN in Ubuntu Linux:un tutorial per principianti

Come installare Nextcloud su Ubuntu Linux:un tutorial completo per principianti

Come installare OwnCloud su Ubuntu Linux:un tutorial per principianti

Come installare il software in Ubuntu Linux:una guida completa per i principianti