26 votes

Désactiver la charge USB

Pour des raisons qui ne sont pas liées à l'autonomie de la batterie, je dois désactiver la charge de la batterie lorsqu'un hôte USB est connecté à mon téléphone (un Nexus 4 rooté). En faisant un tour sur internet ( lien1 , lien2 ), il semble que je doive modifier un fichier système. J'ai trouvé une série de fichiers intéressants situés dans le répertoire /sys/class/power_supply/battery y /sys/class/power_supply/usb qui pourraient être les bons à être modifiés afin de réaliser la désactivation de la charge usb (par ex. /sys/class/power_supply/usb/present 0/1 ).

Est-ce que quelqu'un a essayé quelque chose comme ça (contrôler la charge usb via un logiciel et modifier ces fichiers système) ? Quelle est la meilleure façon de modifier ces fichiers système ? Dois-je utiliser le shell adb ou un autre outil ?

J'ai essayé l'application "Root explore" afin de modifier ces fichiers, cependant lorsque j'ai modifié un fichier (après avoir changé ses permissions), il a été automatiquement maintenu à sa valeur originale.

2 votes

Bien que cela puisse contribuer ou non à la question, je suis curieux de savoir pourquoi vous voulez désactiver la charge USB.

0 votes

Ce que j'ai ici ressemble plus à un système embarqué : un téléphone (ACCESSOIRE USB) et une pièce de matériel (HÔTE USB), connectés par USB. La batterie du téléphone alimente le matériel connecté via une connexion spécifique (Vdd). Cependant, le serveur USB est censé alimenter (ou charger) le téléphone via la ligne VBUS de l'USB. Ce que je veux éviter, c'est une boucle de charge entre le téléphone et le matériel connecté. Bien que le matériel connecté soit le HOST, c'est le téléphone Android qui alimente l'ensemble du système. J'espère que mon explication a été claire pour vous.

2 votes

/sys est un système de fichiers virtuel où le noyau expose des boutons et des commutateurs pour modifier et consulter la configuration du noyau. Vous ne pouvez pas changer les permissions du fichier. Je suppose que votre téléphone Nexus est déverrouillé et enraciné. Le circuit de charge est probablement basé sur une puce Maxim qui mai être configuré. Il existe des noyaux modifiés qui permettent de remplacer la détection de la charge électrique. L'inverse devrait également être possible. Vous devrez peut-être patcher et recompiler le noyau.

8voto

Shannon Davidson Points 216

Je viens d'essayer et j'ai constaté que vous devez modifier un fichier :
sys/class/power_supply/usb/device/charge

son contenu par défaut est '1', ce qui signifie 'activer la charge'. vous devez le régler sur '0' pour 'désactiver la charge'.

$ su

$ echo 0 > /sys/class/power_supply/usb/device/charge

J'ai testé sur Nexus 4 et cela fonctionne avec succès.

0 votes

Je peux confirmer que echo 0 > /sys/class/power_supply/battery/charging_enabled fonctionne pour moi, sur un Sony Z1 Compact avec CM11. Merci beaucoup ! :)

0 votes

Veuillez noter que l'interface /sys est virtuelle et ne résiste pas aux redémarrages.

4voto

Nir Duan Points 163
adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;

0 votes

Ces commandes sont intéressantes, mais elles n'ont pas vraiment d'incidence sur la facturation ! Vous pouvez également faire dumpsys battery set level 42 et Android pensera qu'elle est chargée à 42%, quel que soit l'état réel de la batterie. Faites dumpsys battery reset pour revenir à la normale.

0 votes

De plus, ces faux changements figent l'état de la batterie et sont enregistrés dans les statistiques de la batterie, ce qui peut les perturber et entraîner des prédictions erronées sur le "temps restant".

2voto

Je ne sais pas si cela fonctionnera avec le chargeur de votre téléphone, mais souvent avec les câbles qui transfèrent à la fois l'alimentation et les données, il y a des cordons séparés à l'intérieur du câble pour l'alimentation et les données.

Je n'ai pas spécialement envie de démonter mon chargeur de téléphone pour confirmer mon idée, mais vous pourriez essayer de dénuder une partie du câble, d'identifier et de couper les cordons d'alimentation à l'intérieur du câble, et de le remballer avec du ruban électrique.

Il y a probablement un chemin un moyen plus facile de le faire, mais je n'en ai pas connaissance.

0 votes

Il y a généralement 4 broches dans l'USB - 2 pour l'alimentation 5v et 2 pour les données.

1 votes

Si vous coupez Vbus et Ground, cela empêchera également les lignes de données de fonctionner. La connexion du câble USB est détectée à partir de l'alimentation (voir le connecteur A, les broches d'alimentation sont légèrement plus longues, elles seront donc connectées en premier).

1voto

Mobilecrackers Points 11

Je suis presque sûr que ce n'est pas quelque chose que vous pouvez changer dans le logiciel puisque le téléphone se charge lorsqu'il est branché sur le port USB d'un ordinateur. Vous devrez probablement vous salir les mains et court-circuiter une ou deux connexions sur le téléphone lui-même.

0 votes

Oui, cela peut aussi se faire via un logiciel. Regardez cette application pour le Nexus 4 enraciné. stopCharge

1voto

Vous pouvez utiliser adb shell dumpsys battery set usb 0 ; // pour désactiver la charge USB et le chargement des batteries

adb shell dumpsys battery set usb 1 ; // pour activer la charge USB

1 votes

C'est facile, mais malheureusement cela ne désactive pas la charge. Elle donne seulement l'impression qu'elle est désactivée.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X