Os laptops ASUS mais novos suportam a limitação do nível de carga da bateria, o que ajuda a prolongar a vida da bateria. Este artigo explica como definir um limite de carga da bateria para laptops ASUS no Linux.
A vida útil da bateria é afetada pela idade, altas temperaturas, o número de ciclos de carga e o tempo de carga total. Um limite de carga da bateria reduz o tempo de carga total (100%) e, portanto, melhora a vida/saúde da bateria.
Os laptops ASUS são compatíveis com a definição de um limite de carga começando com Linux 5.4. O método kernel WMI para definir o limite de carga não fornece uma maneira de especificar uma bateria, supondo que seja a primeira bateria (BAT0
). No entanto, para alguns laptops ASUS mais recentes, a bateria principal não é chamada BAT0
, mas BATT
(por exemplo, Zenbook UM431DA) e BAT1
(por exemplo, ASUS TUF Gaming FX706II). [Atualização] E também há BATC.
Portanto, embora os notebooks ASUS suportem a limitação do carregamento da bateria a partir do Linux 5.4, isso é apenas para notebooks com BAT0
. Para notebooks ASUS usando BATT
como o nome da bateria principal, você precisará do kernel 5.7, enquanto que para BAT1
você vai precisar do kernel 5.8 (nas instruções abaixo você verá exatamente como verificar o nome da bateria). [Atualização] Para laptops ASUS usando o nome da bateria BATC, você precisará usar Linux 5.9 ou mais recente.
Além disso, nem todos os laptops ASUS suportam a configuração de um limite de carga da bateria, portanto, dependendo do modelo do seu laptop ASUS, isso pode ou não funcionar para você; não há uma lista de dispositivos compatíveis que consegui encontrar.
É importante mencionar que o método WMI do kernel para definir o limite de carga da bateria para notebooks ASUS pode apenas definir o valor de parada (charge_control_end_threshold
) (ele também não pode definir o limite de inicialização). Além disso, com CA conectada, se o nível da bateria for superior ao limite de parada de carga, ela não será descarregada até o limite de parada.
E outra nota. Com meu ASUS ZenBook 14 UX433FAC executando Ubuntu 20.04 com GNOME Shell, ao limitar o carregamento da bateria enquanto o nível da bateria é igual ou maior que o limite de carga e, em seguida, conectar o laptop a AC, o indicador de bateria no painel superior muda com o tempo restante até que a bateria descarregue o tempo restante até que seja carregada. Isso acontece mesmo que a bateria não esteja carregando. Depois de um tempo (portanto, não é instantâneo quando você conecta seu laptop ao CA), o indicador da bateria muda para dizer "Não está carregando", como deveria.
Além da ASUS, alguns notebooks Lenovo e Huawei (com o último recebendo suporte com Linux 5.5) também têm suporte para limitar o carregamento da bateria. Mas como eu só tenho um laptop ASUS e não posso testá-lo em outros dispositivos, este guia é apenas para ASUS. A Lenovo tem suporte para isso há um bom tempo, e TLP tem suporte para configuração este embutido (apenas para IBM/Lenovo ThinkPads). Como observação lateral, aqui está uma GUI para TLP para configurá-lo facilmente, caso você ainda não esteja usando.
Você também pode gostar de: auto-cpufreq é um otimizador de velocidade e energia da CPU para Linux
Vamos começar descobrindo o nome da bateria do seu laptop ASUS. Isso pode ser feito usando o seguinte comando:
ls /sys/class/power_supply
Este comando deve gerar algo assim:
AC0 BAT0
Neste exemplo (do meu notebook ASUS), o nome da bateria é BAT0
, mas como mencionei acima, para você também pode ser BAT1
ou BATT
, sendo esses os únicos nomes de bateria suportados pelo kernel para notebooks ASUS.
Antes de criar o serviço systemd, verifique se seu laptop realmente tem charge_control_end_threshold
em /sys/class/power_supply/BAT*
(sem ele, isso não funcionará):
ls /sys/class/power_supply/BAT*/charge_control_end_threshold
Se este comando retornar o caminho para charge_control_end_threshold
, então seu notebook ASUS suporta a limitação do carregamento da bateria. Se o comando retornar um erro, informando que não existe tal arquivo ou diretório, então seu laptop não suporta a configuração de um limite de carga.
Se o seu laptop ASUS tiver esse arquivo, podemos continuar. Crie um arquivo que chamaremos de battery-charge-threshold.service
em /etc/systemd/system
.
Você pode abrir este arquivo com o editor de texto do console padrão usando:
sudo editor /etc/systemd/system/battery-charge-threshold.service
Ou use Gedit ou qualquer editor gráfico que você deseja usar (por exemplo, para Gedit para abrir este arquivo como root: gedit admin:///etc/systemd/system/battery-charge-threshold.service
)
Neste arquivo, você precisará colar o seguinte:
[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
Aqui, altere BATTERY_NAME
com o nome da bateria (BAT0
, BAT1
ou BATT
) e CHARGE_STOP_THRESHOLD
com o limite de parada de carga da bateria que deseja usar (variando entre 1 e 100). Observe que li que um usuário não conseguiu definir a cobrança threshold para qualquer valor, mas apenas para 60, 80 e 100.
Pelo que li, para melhor vida útil da bateria quando o laptop está conectado à CA na maioria das vezes, é melhor definir o limite de interrupção da carga da bateria em cerca de 50 ou 60. Se a bateria for usada com certa frequência, defina o limite de interrupção da carga da bateria em cerca de 90.
Agora vamos ativar e iniciar o serviço systemd de limite de carga de bateria recém-criado:
sudo systemctl enable battery-charge-threshold.service
sudo systemctl start battery-charge-threshold.service
systemctl enable --now
, mas prefiro usar 2 comandos no caso de alguns leitores usarem uma versão anterior do systemd. *Se você deseja alterar o nível de limite de parada de carga da bateria, você precisará editar o arquivo /etc/systemd/system/battery-charge-threshold.service
e alterar o número da linha ExecStart
(após echo
) para o novo valor que deseja usar e recarregar o systemd (porque o conteúdo do arquivo foi alterado) e reinicie o serviço systemd usando os seguintes comandos:
sudo systemctl daemon-reloadsudo systemctl restart battery-charge-threshold.service
Se o seu laptop ASUS for compatível, o limite de carga da bateria agora deve ser definido para o valor que você usou na etapa 2.
Você pode verificar isso carregando seu laptop até o limite definido em battery-charge-threshold.service
e, em seguida, use este comando:
cat /sys/class/power_supply/BATTERY_NAME/status
Substitua BATTERY_NAME
pelo nome da bateria, conforme explicado na etapa 1.
Se o limite de parada de carga da bateria estiver funcionando, o comando deve mostrar a seguinte saída:
Not Charging
Se disser "Descarregando", certifique-se de que seu laptop ASUS esteja realmente com alimentação CA e não funcionando com bateria. No entanto, se disser "Carregando", bem ... então seu laptop está carregando além do limite de parada de carga, então isso não está funcionando para você, porque seu laptop ASUS não suporta isso (o que é estranho se você tiver charge_control_end_threshold
como mencionado na etapa 2), você está usando uma versão do Linux que é muito antiga para limitar o carregamento da bateria em seu notebook ASUS, ou devido a um erro humano 😁️.
Extra: Caso você não use o systemd, você também pode fazer isso usando cron, executando sudo crontab -e
e, em seguida, colando a seguinte linha (esta é uma linha única, clique três vezes na linha para selecionar a linha inteira):
@reboot echo CHARGE_STOP_THRESHOLD > /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold
Substituindo CHARGE_STOP_THRESHOLD
pelo limite de parada de carga da bateria que você deseja usar e BATTERY_NAME
pelo nome da bateria, conforme visto na etapa 1.
Por que usar um serviço systemd ou um cron job? De acordo com u/esrevartb, de quem adaptei essas instruções, "parece que a regra do udev não está funcionando porque o caminho do sysfs da bateria ainda não foi inicializado quando a regra é aplicada ou porque este atributo específico charge_control_end_threshold
não pode ser modificado desta forma".
[[Atualização] Eu também encontrei um serviço de script e systemd para definir facilmente um limite de carga da bateria para notebooks ASUS no Linux. Usando isso, é mais fácil alterar o limite de carga da bateria (tudo que você precisa fazer é executar ./limit.sh CHARGE_STOP_THRESHOLD
)
Relacionado à bateria do laptop: Bwall é um papel de parede animado de bateria para Linux (Bash Script)
via r/linuxhardware (obrigado u/esrevartb)
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Limit Battery Charging (Set A Charge Threshold) For ASUS Laptops On Linux