Por alguns motivos não relacionados à vida útil da bateria, preciso desativar o carregamento da bateria quando um host USB estiver conectado ao meu telefone (um Nexus 4 com raiz). Examinando a Internet ( link1 , link2 ), parece que devo modificar um arquivo do sistema. Eu encontrei uma série de arquivos interessantes localizados em /sys/class/power_supply/battery
e /sys/class/power_supply/usb
, que poderiam ser os corretos para serem modificados para alcançar a desativação do carregamento por USB (por exemplo /sys/class/power_supply/usb/present 0/1
).
Alguém já tentou algo assim (controlar o carregamento USB via software e modificar esses arquivos de sistema)? Qual é a melhor maneira de modificar esses arquivos do sistema? Devo usar o shell adb ou outra ferramenta?
Tentei o aplicativo "root explore" para modificar esses arquivos; no entanto, quando modifiquei um arquivo (depois de alterar suas permissões), ele foi automaticamente mantido de volta ao seu valor original.
fonte
Respostas:
Eu apenas tentei e descobri que você precisa modificar um arquivo:
sys/class/power_supply/usb/device/charge
seu conteúdo padrão é '1', o que significa 'ativar cobrança', você precisa defini-lo como '0' para 'desativar a cobrança'
Eu testei no Nexus 4 e está funcionando com sucesso.
fonte
echo 0 > /sys/class/power_supply/battery/charging_enabled
funciona para mim em um Sony Z1 Compact com CM11. Muito obrigado! :)fonte
Não tenho certeza se ele funcionará com o carregador de seu telefone específico, mas geralmente com cabos que transferem energia e dados, existem cabos separados dentro do cabo para energia e dados.
Não estou especialmente interessado em rasgar meu carregador de telefone para confirmar minha ideia, mas você pode tentar descascar parte do cabo, identificar e cortar os cabos de energia dentro do cabo e enrolá-lo novamente com fita isolante.
Provavelmente, existe uma maneira muito mais fácil de fazer isso, mas não estou ciente disso.
fonte
Tenho certeza de que não é algo que você possa alterar no software, pois o telefone seria carregado quando conectado a uma porta USB do computador. Você provavelmente precisaria sujar as mãos e fazer uma conexão curta ou duas no próprio telefone.
fonte
Você pode usar o conjunto de baterias adb shell dumpsys usb 0; // para desativar o carregamento USB e
conjunto de bateria adb shell dumpsys usb 1; // para ativar o carregamento USB
fonte
Você pode resolver o problema no hardware, modificando os pinos no lado do conector micro-USB. Uma maneira óbvia é não conectar o Pin # 1 (VBUS) e a outra maneira é aterrar o Pin # 4 (ID) para fingir que seu host (PC) é um dispositivo OTG. Se você fizer isso, precisará desconectar o Pin # 1 (VBUS), caso contrário um dos seus dispositivos, se não os dois, será queimado.
Quanto à solução de linha de comando, você apenas precisa encontrar os
/sys/...
arquivos certos (dependentes do dispositivo) para jogar. Mas, como já mencionado, você precisa de acesso de gravação e permissões de root para alterá-las, e tudo o que fizer só durará até a próxima reinicialização ou alteração do periférico USB.fonte
/sys/...
arquivos necessários para isso (Nexus 4 sim, Nexus 5 não). Outra solução deve ser a alteração do comportamento do driver de carregamento no kernel.Semelhante à operação, meu host conectado via USB também é conectado como uma bateria fictícia. Não é possível simplesmente usar o cabo USB e nenhuma bateria, o Android não inicializa nem o USB fornece corrente suficiente.
Você não pode consertar isso no software, pois o Android usará o Vbus durante a inicialização. A menos que você também queira hackear o código do gerenciador de inicialização.
O circuito de carregamento precisa ser modificado para evitar o carregamento por USB ou o loop de tensão da bateria.
Eu confirmei no Galaxy S3 que requer um barramento de 5V para permitir que os dados (d + d-) façam parte do padrão USB.
OTG pode resolver o problema eletricamente, mas as regras do cliente host não estão corretas. Além disso, este telefone é capaz de carregar OTG e carregar (eu uso o cabo y + gamepad)
Editar referência: https://forum.xda-developers.com/showthread.php?t=1863303
fonte
Perguntei ao meu colega, especialista em driver de bateria. Em nosso Nut Pro 2, cuja versão do kernel é 4.4.21, o nó para carregamento da bateria on / off é:
/sys/class/power_supply/battery/input_suspend
.fonte
você sempre pode usar um diodo shottky entre o pino 1 com o lado de bloqueio voltado para o acessório. Dessa forma, o pino recebe um sinal de 5V para que a comunicação funcione, mas NÃO haverá corrente fluindo do acessório para o seu telefone. ou, se desejar, coloque o diodo na direção diferente.
fonte
Não, não é possível em dispositivos que ainda não estão enraizados. Ele usa o Settings.System com ADB_ENABLED, mas ADB_ENABLED é uma configuração de sistema seguro que não pode ser alterada por um aplicativo.
Sim, isso pode ser feito no telefone raiz.
É necessário adicionar uma permissão android.permission.WRITE_SECURE_SETTINGS. Sei que você deve estar se perguntando como fazer isso: Aqui está o link para um aplicativo semelhante: https://play.google.com/store/apps/details?id=com.jim2&hl=pt-BR
fonte
ADB_ENABLED
a ver com o carregamento USB? O aplicativo vinculado permite desativar o carregamento por USB?