I nuovi laptop ASUS supportano la limitazione del livello di carica della batteria, che aiuta a prolungare 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 dipende dall’età, dalle alte temperature, dal numero di cicli di carica e dal tempo a piena carica. Una soglia di carica della batteria riduce la quantità di tempo a piena carica (100%) e quindi migliora la salute / 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, per alcuni laptop ASUS più recenti, la batteria principale non viene chiamata BAT0
, ma BATT
(es. Zenbook UM431DA) e BAT1
(ad esempio ASUS TUF Gaming FX706II). [Edit] E c’è anche BATC.
Quindi, mentre i laptop ASUS supportano la limitazione della carica della batteria a partire da Linux 5.4, questo è solo per i laptop che hanno BAT0
. Per laptop ASUS che utilizzano BATT
come nome della batteria principale, avrai bisogno del kernel 5.7, mentre per BAT1
avrai bisogno del kernel 5.8 (nelle istruzioni sottostanti vedrai esattamente come controllare il nome della batteria). [Edit] Per i laptop ASUS che utilizzano il nome della batteria BATC, è necessario utilizzare Linux 5.9 o versioni successive.
Anche, non tutti i laptop ASUS supportano l’impostazione di una soglia di carica della batteria, quindi a seconda del modello di laptop ASUS, questo potrebbe o non potrebbe funzionare per te; non c’è un elenco di dispositivi supportati che sono riuscito a trovare.
È importante menzionarlo il metodo WMI del kernel per impostare la soglia di carica della batteria per i notebook ASUS può impostare solo il valore di arresto (charge_control_end_threshold
) (non può anche impostare la soglia di inizio). Inoltre, con AC collegato, se il livello della batteria è superiore alla soglia di arresto della carica, non si scaricherà fino alla soglia di arresto.
E un’altra nota. Con il mio ASUS ZenBook 14 UX433FAC che esegue Ubuntu 20.04 con GNOME Shell, quando si limita la carica della batteria mentre il livello della batteria è uguale o superiore alla soglia di carica, e quindi si collega il laptop all’alimentazione CA, l’indicatore della batteria dal pannello superiore cambia dal tempo rimanente fino a quando la batteria non si scarica per il tempo rimanente fino alla ricarica della batteria. Ciò accade anche se la batteria non si sta caricando. Dopo un po ‘(quindi questo non è istantaneo quando si collega il laptop alla rete elettrica), l’indicatore della batteria cambia per dire “Non in carica”, come dovrebbe.
Oltre ad ASUS, alcuni laptop Lenovo e Huawei (con quest’ultimo che ottiene supporto con Linux 5.5) supportano anche la limitazione della carica della batteria. Ma poiché possiedo solo un laptop ASUS e non posso testarlo su altri dispositivi, questa guida è solo per ASUS. Lenovo ha avuto supporto per questo per un bel po ‘e TLP ha il supporto per l’impostazione di questo built-in (solo per IBM / Lenovo ThinkPads). Come nota a margine, ecco una GUI per TLP per configurarlo facilmente, nel caso in cui non lo stai già utilizzando.
Potrebbe piacerti anche: auto-cpufreq è un ottimizzatore di velocità e potenza della CPU per Linux
Come impostare una soglia di interruzione della carica della batteria per i laptop ASUS su Linux
1. Trova il nome della batteria del tuo laptop ASUS.
Iniziamo cercando di capire il nome della batteria per il tuo laptop ASUS. Questo può essere fatto usando il seguente comando:
ls /sys/class/power_supply
Questo comando dovrebbe produrre qualcosa di simile a questo:
AC0 BAT0
In questo esempio (dal mio notebook ASUS), il nome della batteria è BAT0
, ma come ho detto sopra, potrebbe anche essere per te BAT1
o BATT
, questi sono gli unici nomi di batteria supportati dal kernel per i laptop ASUS.
2. Creare un servizio systemd per impostare la soglia di interruzione della carica della batteria all’avvio.
Prima di creare il servizio systemd, controlla se il tuo laptop lo ha effettivamente charge_control_end_threshold
nel /sys/class/power_supply/BAT*
(senza di esso, questo non funzionerà):
ls /sys/class/power_supply/BAT*/charge_control_end_threshold
Se 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, dicendo che non esiste un file o una directory di questo tipo, il tuo laptop non supporta l’impostazione di una soglia di addebito.
Se il tuo laptop ASUS ha questo file, possiamo continuare. Crea un file che chiameremo battery-charge-threshold.service
nel /etc/systemd/system
.
Puoi aprire questo file con il tuo editor di testo della console predefinito utilizzando:
sudo editor /etc/systemd/system/battery-charge-threshold.service
Oppure usa Gedit o qualsiasi editor grafico che desideri utilizzare (ad esempio, per Gedit per aprire questo file come root: gedit admin:///etc/systemd/system/battery-charge-threshold.service
)
In questo file dovrai incollare quanto segue:
[Unit]
Description=Set the battery charge threshold
After=multi-user.target
StartLimitBurst=0[Service]2.
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
Ecco, cambia BATTERY_NAME
con il nome della batteria (BAT0
, BAT1
o BATT
), e CHARGE_STOP_THRESHOLD
con la soglia di arresto della carica della batteria che si desidera utilizzare (compresa tra 1 e 100). Tieni presente che ho letto che un utente non poteva impostare la soglia di addebito su alcun valore, ma solo su 60, 80 e 100.
Da quello che ho letto, per una migliore durata della batteria quando il laptop è collegato alla corrente alternata per la maggior parte del tempo, impostare la soglia di interruzione della carica della batteria intorno a 50 o 60. Se la batteria viene utilizzata piuttosto frequentemente, impostare la soglia di interruzione della carica della batteria su circa 90.
3. Abilitare e avviare il servizio systemd della soglia di carica della batteria.
Ora abilitiamo e avviamo il servizio systemd di 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 abilitare e avviare un servizio direttamente utilizzando systemctl enable --now
, ma preferisco usare 2 comandi nel caso in cui alcuni lettori utilizzino una versione precedente di systemd.
Se si desidera modificare il livello di soglia di arresto della carica della batteria, dovrai modificare il file /etc/systemd/system/battery-charge-threshold.service
file e modificare il numero da ExecStart
linea (dopo echo
) al nuovo valore che si desidera utilizzare, quindi ricaricare systemd (perché il contenuto del file è cambiato) e riavviare il servizio systemd utilizzando i seguenti comandi:
sudo systemctl daemon-reload
sudo systemctl restart battery-charge-threshold.service
4. Verificare che la soglia di arresto della carica della batteria funzioni.
Se il tuo laptop ASUS lo supporta, il limite di carica della batteria dovrebbe ora essere impostato sul valore che hai usato nel passaggio 2.
Puoi verificarlo caricando il tuo laptop alla soglia impostata battery-charge-threshold.service
e quindi usa questo comando:
cat /sys/class/power_supply/BATTERY_NAME/status
Sostituire 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 sia effettivamente alimentato a corrente alternata e non funzioni a batteria. Tuttavia, se dice “In carica”, beh … allora il tuo laptop si sta caricando oltre la soglia di arresto della carica, quindi questo non funziona per te, anche perché il tuo laptop ASUS non lo supporta (il che è strano se lo hai charge_control_end_threshold
come accennato al passaggio 2), stai utilizzando una versione di Linux troppo vecchia per limitare la carica della batteria sul tuo notebook ASUS, oa causa di un errore umano ????️.
Extra: nel caso in cui non usi systemd, puoi farlo anche usando cron, eseguendo sudo crontab -e
e quindi incollando la riga seguente (questa è una riga singola, fare triplo clic sulla riga per selezionare l’intera riga):
@reboot echo CHARGE_STOP_THRESHOLD > /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold
Sostituzione CHARGE_STOP_THRESHOLD
con la soglia di arresto della carica della batteria che si desidera utilizzare e BATTERY_NAME
con il nome della batteria come mostrato nel passaggio 1.
Perché utilizzare un servizio systemd o un cron job? Secondo u / esrevartb, da cui ho adattato queste istruzioni, “sembra che la regola udev non funzioni o perché il percorso sysfs della batteria non è ancora inizializzato quando la regola viene applicata, o perché questo specifico attributo charge_control_end_threshold non può essere modificato in questo modo“.
[[Edit] Ho anche trovato uno script e un servizio systemd per impostare facilmente un limite di carica della batteria per i laptop ASUS su Linux. Usandolo, è più facile cambiare il limite di carica della batteria (tutto ciò che devi fare è correre ./limit.sh CHARGE_STOP_THRESHOLD
)
Relativo alla batteria del laptop: Bwall è uno sfondo animato della batteria per Linux (Bash Script)
tramite r / linuxhardware (grazie u / esrevartb)