Pour certaines raisons non liées à la durée de vie 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 enraciné). Jeter un oeil autour sur l'Internet ( link1 , lien2 ), il semble que je devrais modifier un fichier système. J'ai trouvé une série de fichiers intéressants situés dans /sys/class/power_supply/battery
et /sys/class/power_supply/usb
, qui pourraient être les bons à modifier afin de désactiver la charge USB (par exemple /sys/class/power_supply/usb/present 0/1
).
Quelqu'un at-il 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, mais lorsque j'ai modifié un fichier (après avoir changé ses autorisations), il a été automatiquement conservé à sa valeur d'origine.
la source
Réponses:
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'
J'ai testé sur Nexus 4 et cela fonctionne avec succès.
la source
echo 0 > /sys/class/power_supply/battery/charging_enabled
fonctionne pour moi, sur un Sony Z1 Compact avec CM11. Merci beaucoup! :)la source
Je ne sais pas si cela fonctionnera avec le chargeur de votre téléphone, mais souvent avec des 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 ne suis pas particulièrement intéressé à déchirer mon chargeur de téléphone pour confirmer mon idée, mais vous pouvez 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 l'enrouler avec du ruban électrique.
Il existe probablement un moyen beaucoup plus simple de le faire, mais je n'en suis pas conscient.
la source
Je suis presque sûr que ce n'est pas quelque chose que vous pouvez changer dans le logiciel, car le téléphone se chargerait lorsqu'il serait branché sur le port USB d'un ordinateur. Vous auriez probablement besoin de vous salir les mains et de court-circuiter une ou deux connexions sur le téléphone lui-même.
la source
Vous pouvez utiliser l'adb shell dumpsys battery set usb 0; // pour désactiver le chargement USB et
adb shell dumpsys batterie set usb 1; // pour activer le chargement USB
la source
Vous pouvez résoudre le problème au niveau matériel en modifiant les broches du côté du connecteur micro-USB. Une façon évidente est de ne pas connecter la broche n ° 1 (VBUS) et l'autre manière est de mettre à la terre la broche n ° 4 (ID) pour prétendre que votre hôte (PC) est un appareil OTG. Si vous faites cela, vous devez déconnecter la broche n ° 1 (VBUS) sinon un, sinon les deux, de vos appareils seront brûlés.
Quant à la solution en ligne de commande, il vous suffit de trouver les bons
/sys/...
fichiers (dépendants du périphérique) avec lesquels jouer. Mais comme déjà mentionné, vous avez besoin d'un accès en écriture et d'autorisations root pour les modifier, et quoi que vous fassiez, cela ne durera que jusqu'au prochain redémarrage ou changement de périphérique USB.la source
/sys/...
fichiers nécessaires pour le faire (Nexus 4 oui, Nexus 5 non). Une autre solution devrait être la modification du comportement du pilote de charge dans le noyau.Semblable à l'op, mon hôte qui est connecté via USB est également connecté comme une batterie factice. Vous ne pouvez pas simplement utiliser un câble USB et aucune batterie, Android ne démarre pas et l'USB ne fournit pas suffisamment de courant.
Vous ne pouvez pas résoudre ce problème dans le logiciel car Android utilisera Vbus lors du démarrage. Sauf si vous souhaitez également pirater le code du chargeur de démarrage.
Le circuit de charge doit être modifié pour éviter la charge USB par rapport à la boucle de tension de la batterie.
J'ai confirmé sur Galaxy S3 qu'il nécessite un bus 5V pour activer les données (d + d-), cela fait partie de la norme USB.
OTG pourrait résoudre le problème électriquement mais les règles du client hôte ne sont pas correctes. De plus, ce téléphone peut OTG et se charger (j'utilise un câble en Y + une manette de jeu)
Modifier la référence: https://forum.xda-developers.com/showthread.php?t=1863303
la source
J'ai demandé à mon collègue, qui est un expert en pilote de batterie. Sur notre Nut Pro 2, dont la version du noyau est 4.4.21, le nœud de charge de la batterie marche / arrêt est:
/sys/class/power_supply/battery/input_suspend
.la source
vous pouvez toujours utiliser une diode shottky entre la broche 1 avec le côté de blocage vers l'accessoire. de cette façon, la broche 1 reçoit un signal 5v pour que la communication fonctionne, mais il n'y aura AUCUN courant circulant de l'accessoire vers votre téléphone. ou si vous le souhaitez dans l'autre sens, placez simplement la diode dans la direction différente.
la source
Non, ce n'est pas possible sur les appareils qui ne sont pas encore enracinés. Il utilise Settings.System avec ADB_ENABLED, mais ADB_ENABLED est un paramètre de système sécurisé qui ne peut pas être modifié par une application.
Oui, cela peut être fait sur un téléphone rooté.
Il est nécessaire d'ajouter une autorisation android.permission.WRITE_SECURE_SETTINGS. Je sais que vous me demanderiez comment faire: voici le lien pour une application similaire: https://play.google.com/store/apps/details?id=com.jim2&hl=en
la source
ADB_ENABLED
à voir avec la charge USB? L'application que vous liez permet-elle de désactiver le chargement USB?