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.

1voto

Jared Points 760

J'ai demandé à mon collègue, qui est un expert en matière de conducteur de batterie. Sur notre Nut Pro 2, dont la version du noyau est 4.4.21, le nœud pour l'activation/désactivation de la charge de la batterie est : /sys/class/power_supply/battery/input_suspend .

0 votes

Même chose sur mon Xiaomi Redmi K20 Pro avec 4.14.

1voto

Ben Points 86

Vous pouvez toujours utiliser une diode shottky entre la broche 1 avec le côté bloquant vers l'accessoire. de cette façon, la broche 1 reçoit un signal 5v et la communication fonctionne, mais il n'y aura AUCUN courant circulant de l'accessoire vers votre téléphone. ou si vous voulez l'inverse, placez simplement la diode dans la direction différente.

0voto

not2qubit Points 817

Vous pouvez résoudre le problème au niveau matériel en modifiant les broches du côté du connecteur micro-USB. Un moyen évident est de ne pas connecter la broche 1 (VBUS) et l'autre moyen est de mettre à la terre la broche 4 (ID) pour faire croire que votre hôte (PC) est un dispositif OTG. Si vous faites cela, vous doivent Déconnectez la Pin#1 (VBUS), sinon l'un, voire les deux, de vos appareils seront brûlés.

En ce qui concerne la solution en ligne de commande, il suffit de trouver le bon (dépendant du périphérique) /sys/... fichiers pour jouer avec. Mais comme déjà mentionné, vous avez besoin d'un accès en écriture et de permissions 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.

2 votes

La solution matérielle proposée est incorrecte. Presque tous les téléphones Android sont des périphériques USB qui sont alimentés par des hôtes USB (par exemple, des ordinateurs portables) et fonctionnent donc en mode accessoire. Si vous coupez la ligne VBUS, la communication de données USB cesse de fonctionner. Je l'ai testé moi-même. Je dirais la même chose pour l'autre voie (broche ID) même si je ne l'ai pas testé. Vous avez raison à propos de la solution logicielle, mais tous les téléphones Android ne disposent pas de la fonction de gestion de la connexion. /sys/... les fichiers nécessaires pour le faire (Nexus 4 oui, Nexus 5 non). Une autre solution serait de modifier le comportement du pilote de charge dans le noyau.

0voto

Kevin Points 145

Comme l'op, mon hôte qui est connecté via USB est également connecté comme une batterie factice. Je ne peux pas simplement utiliser un câble USB sans batterie, Android ne démarre pas et l'USB ne fournit pas assez de courant.

Vous ne pouvez pas corriger cela dans le logiciel car Android utilisera le Vbus pendant le démarrage. A moins que vous ne souhaitiez également pirater le code du bootloader.

Le circuit de charge doit être modifié pour éviter la boucle de charge usb vs tension de la batterie.

J'ai confirmé que sur le Galaxy S3, il faut 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 alors les règles client hôte ne sont pas correctes. De plus, ce téléphone est capable d'utiliser la fonction OTG et de 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

0 votes

Je mettrai à jour une fois que j'aurai compris les changements du circuit de charge

-1voto

Ravindra Sahay Points 1

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 Secure-System-Setting qui ne peut pas être changé par une application.

Oui, cela peut être fait sur un téléphone enraciné.

Il est nécessaire d'ajouter une permission Android.permission.WRITE_SECURE_SETTINGS. Je sais que vous vous demandez comment faire : Voici le lien pour une application similaire : https://play.google.com/store/apps/details?id=com.jim2&hl=en

1 votes

Qu'est-ce qui a ADB_ENABLED a un rapport avec la charge USB ? L'application dont vous donnez le lien permet-elle de désactiver la charge USB ?

0 votes

L'application vous permet de désactiver la charge usb après avoir modifié les paramètres de sécurité.

0 votes

"En quelque sorte" ? Quelles sont les étapes à suivre ?

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