Documentação para a função de carregamento saudável da bateria do notebook Acer Aspire 5 no Linux

Neste artigo mostrou-se como configurar a função de carregamento saudável da bateria do notebook Acer Aspire 5 no Linux, desde a compilação do necessário módulo no kernel até o uso simples da função através de extensão do Gnome Shell. Por fim mostrou-se como fazer a manutenção do funcionamento quando houverem atualizações de kernel da distribuição. Testado e comprovado no Ubuntu 23.10.

[ Hits: 4.141 ]

Por: Raul Lopes S. Grangeiro em 11/07/2024


Reinstalando O Módulo Quando Atualizar O Kernel Do Sistema



Você vai perceber que quando sua distribuição Linux receber uma atualização de kernel o módulo de bateria não vai mais iniciar e a extensão de bateria vai apresentar um erro dizendo que não pode encontrar o módulo e a função irá parar de funcionar. Isso acontece porque o módulo que foi compilado no item 3 deste artigo apenas funciona para a versão específica do kernel para o qual foi compilado. Então, se você copiar o arquivo da pasta antiga para a nova pasta do kernel não vai adiantar.

Para resolver esse problema é preciso fazer o procedimento descrito em 3. INSTALANDO O MÓDULO PARA O KERNEL novamente, mas isso é muito cansativo de fazer constantemente e manualmente já que as distribuições fazem atualizações regulares do kernel. Nesse momento acionou-se a Comunidade VOL e criou-se um script para automatizar esse procedimento ao ponto que o usuário apenas necessitará digitar um comando no terminal e reiniciar o computador e o módulo voltará a ser carregado e tudo funcionará como deve. O tópico onde o script foi criado foi o seguinte:

https://www.vivaolinux.com.br/topico/Kernel-Linux/Como-adicionar-um-modulo-ao-kernel-para-iniciar-automaticamente/?pagina=04

A última versão do script no momento da escrita deste artigo é a 1.5, versão essa que foi testada e comprovado seu funcionamento na distribuição Linux Ubuntu 23.10, e tem o seguinte código:

#!/bin/bash

# Programa criado para automatizar procedimento de instalação de
# módulo de saúde de BATERIA de notebook Acer no Kernel Linux
# quando uma nova versão do kernel Linux for instalada.

# Implementação inicial por "raulgrangeiro"
# Testado no Ubuntu 23.10 pelo usuário "raulgrangeiro"
# Tópico para o qual o programa foi escrito:
#

# Versão: 1.5
# Licença: GPLv3

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * Mudança de nomes de variáveis.
# * Remoção de código inútil.
# * Simplificação de código para detectar numero de núcleos.
# * Adicionado versionamento
# * Bloco NEWS para registrar mudanças no programa.
# * Adicionado licenciamento de acordo com as regras do site vivaolinux.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#
# Versão: 1.3
# * Novas e primeiras funções criadas
# * Adicionado configuração que permite selecionar sistema operacional
# * Agora se configurar Ubuntu e Debian algumas dependências serão instaladas automaticamente
#
# Versão: 1.4
# * Bug ao baixar o código fonte corrigido
# * Agora além do log também vai aparecer a execução no terminal
#
# Versão: 1.5
# * Modificação do diretório padrão de compilação para não ser dependente da pasta do usuário, sem dar erro de compilação.
# * Remoção automática do diretório padrão de compilação após execução.
#________________________________________________

set -e -u # Não editar esta parte do programa

#________________________________________________
## Configurações do programa "driver_acer-wmi-battery_install.sh"
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa
## Altere o diretório de compilação somente se necessário, esse diretório será excluído ao final da execução

BATERIA="/tmp/BATERIA" # Variável que determina onde será a compilação (SOMENTE ALTERE SE SOUBER O QUE ESTÁ FAZENDO)
CPU_CORES="$(nproc)" # Variável que define quantos núcleos será usado, detecta automaticamente
LOG_DA_EXECUCAO="/tmp/linux_bateria.log" # Variável que define onde o log será gerado
DEPURACAO="1" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita
QUAL_E_O_GNU_LINUX="0" # Valor 0(zero) para Debian e Ubuntu e valor 1 para outros GNU/Linux

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

#________________________________________________
## Funções
testar_essential() {
dpkg --list | grep 'build-essential' | sed 's/ .*//;s/.* //'
}
#
testar_headers() {
dpkg --list | grep "linux-headers-$(uname -r)" | sed 's/ .*//;s/.* //'
}
#
testar_git() {
if type git >/dev/null 2>&1
then
echo "0"
fi
}
#________________________________________________

# Tudo executado a partir daqui vai ser gravado em LOG_DA_EXECUCAO
{
# Verifica se é superusuario e notifica, caso não seja aborta a execução
if [[ "$(id -u)" == "0" ]]
then
echo "Você é root!"
else
echo "Você não é root, execute como root!"
exit 2
fi

# Verifica se o diretório BATERIA não existe
if [[ ! -e "${BATERIA}" ]] # Verifica se o diretório BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA não é diretório
then
# Existe algum arquivo no diretório BATERIA e por isso é abortado
echo "${BATERIA} é um arquivo e deveria ser diretório, remova o arquivo e tente novamente, abortado!"
exit 3
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

cd "${BATERIA}" # Entra no diretório BATERIA

# Instalar as dependências de compilação segundo github do projeto "acer-wmi-battery" caso ainda não estajam instaladas
if [[ "${QUAL_E_O_GNU_LINUX}" == "0" ]]
then
if [[ "$(testar_essential)" != 'build-essential' || "$(testar_headers)" != "linux-headers-$(uname -r)" || "$(testar_git)" != "0" ]]
then
apt-get -y install build-essential linux-headers-"$(uname -r)" git
fi
fi

# Baixa o código fonte do driver no diretório BATERIA
if [[ "$(echo *)" == "*" ]]
then
git clone https://github.com/frederik-h/acer-wmi-battery.git
cp -r "${BATERIA}"/acer-wmi-battery/* "${BATERIA}/"
rm -d -r "${BATERIA}/acer-wmi-battery/"
fi

make -j"${CPU_CORES}" # Inicia a compilação usando o numero de núcleos definido em cpu_cores

# Faz uma copia do arquivo do modulo compilado para os módulos do kernel carregado
cp "${BATERIA}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório, \
isso não é fatal"

# Remove o diretório de compilação completamente já que não é mais necessário
rm -rf ${BATERIA}

} 2>&1 | tee -a "${LOG_DA_EXECUCAO}"


Apenas copie e cole esse código completo em um editor de texto simples e salve o arquivo com o nome driver_acer-wmi-battery_install.sh

Veja que no início do código você tem as seguintes configurações para fazer:

Linux: DOCUMENTAÇÃO PARA FUNÇÃO DE CARREGAMENTO SAUDÁVEL DA BATERIA DO NOTEBOOK ACER ASPIRE 5 NO LINUX

  • BATERIA: recomendo que não altere este local pois ele foi testado como funcional para a compilação do módulo, o que nem sempre acontece
  • CPU_CORES: o próprio script explica que serve para definir o número de núcleos para a execução. Não é necessário alterar.
  • LOG_DA_EXECUCAO: Este item gera um log salvo na pasta especificada em seguida. Não é necessário alterar.
  • DEPURACAO: Isso é útil caso hajam problemas e você queira ver exatamente quais estes que estão acontecendo. Recomendo deixar habilitado.
  • QUAL_E_O_GNU_LINUX: Esta opção serve para dizer se o Linux a ser instalado é o Ubuntu e Debian (ou outros baseados nestes) ou outras distros. Serve para instalar alguns pacotes requisitos que o criador do módulo pede que estejam instalados nos sistemas baseados em Debian. Escolha de acordo com sua distro.

Após ter salvo o script, copie-o para a pasta /usr/local/bin. Não será possível fazer isso apenas abrindo o seu Gerenciador de Arquivos porque se trata de uma pasta do sistema, portanto execute o gerenciador de arquivos como Super Usuário pelo terminal:

sudo seu_gerenciador_de_arquivos

No meu caso é o Nautilus, então fica:

sudo nautilus

Se der o erro como mostrado antes (org.gnome.Nautilus:28836): Gtk-WARNING **: 08:33:38.240: Failed to open display, coloque a opção "-R" ao comando, deixando-o assim:

sudo -R nautilus

Com ele aberto, navegue até a pasta onde salvou o script, copie-o e depois cole-o na pasta especificada acima.

Agora é preciso dar permissão de execução para o script, o que pode ser feito facilmente com o seguinte comando no terminal:

sudo chmod +x /usr/local/bin/driver_acer-wmi-battery_install.sh

Agora é preciso criar um alias para o script, que é uma espécie de apelido para ele no sistema, e isso vai permitir que você chame o script apenas digitando um simples comando no terminal, e ele fará todo o restante, deixando esse processo longo e cansativo incrivelmente simples. Para isso abra sua pasta home, depois use as opções do seu gerenciador de arquivos para mostrar os arquivos ocultos. No Nautilus que uso aqui fica neste local:

Linux: DOCUMENTAÇÃO PARA FUNÇÃO DE CARREGAMENTO SAUDÁVEL DA BATERIA DO NOTEBOOK ACER ASPIRE 5 NO LINUX

Agora procure pelo arquivo .bashrc e abra-o com o seu editor de texto e no final do arquivo cole a seguinte linha e depois Salve e Feche:

alias acer-wmi-battery="sudo driver_acer-wmi-battery_install.sh"

Agora carregue o novo alias com o seguinte comando no terminal:

source ~/.bashrc

Feito isso o processo está finalizado. Quando um novo kernel for instalado, e a extensão de bateria do Acer acusar a falta do módulo, abra o terminal e digite apenas isto:
acer-wmi-battery


Reinicie seu computador e pronto, tudo estará funcionando normalmente.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando A Extensão Para Controle Gráfico e Instalando O Módulo Para O Kernel
   3. Iniciando O Módulo Com O Sistema
   4. Reinstalando O Módulo Quando Atualizar O Kernel Do Sistema
   5. Agradecimentos Finais e Referências
Outros artigos deste autor

Qual distribuição Linux devo escolher?

Rakarrack - Uma pedaleira virtual no Fedora 21

Torne o Ubuntu o seu principal sistema operacional

Visão Geral do Linux Mint

Mamãe mandou eu escolher esse daqui... será?

Leitura recomendada

Samba + LDAP + Squid no Debian

Configurando VMWARE SERVER no Fedora 7

Removendo dependências desnecessárias no Debian

Vodafone Mobile Connect Card driver - Um excelente software para modems 3G

Criando um servidor DNS com o DJBDNS

  
Comentários
[1] Comentário enviado por maurixnovatrento em 20/07/2024 - 17:37h

Bem completo.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10

[2] Comentário enviado por robsonpc em 21/07/2024 - 11:44h

Gostei demais, tenho um nitro v15 com o nitro sense e estou a procura de algo parecido. Única diferença é que uso o Linux mint e ficaria sem a extensão. Caso alguém saiba de uma alternativa pro Cinnamon será bem vindo.

[3] Comentário enviado por raulgrangeiro em 22/07/2024 - 14:56h


[2] Comentário enviado por robsonpc em 21/07/2024 - 11:44h

Gostei demais, tenho um nitro v15 com o nitro sense e estou a procura de algo parecido. Única diferença é que uso o Linux mint e ficaria sem a extensão. Caso alguém saiba de uma alternativa pro Cinnamon será bem vindo.


Realmente não sei se há uma extensão parecida com essa do Gnome para o Cinnamon, mas na documentação do módulo wmi-battery para o acer ele ensina como habilitar os modos por linha de comando. Veja nesse link: https://maniacx.github.io/Battery-Health-Charging/device-compatibility/acer

Apesar disso seria bom pesquisar e ver se acha uma ferramenta gráfica para o Cinnamon.


Creia no Senhor Jesus Cristo e serás salvo!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts