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)