Deaktivieren Sie das USB-Laden

22

Aus Gründen, die nicht mit der Akkulaufzeit zusammenhängen, muss ich das Aufladen des Akkus deaktivieren, wenn ein USB-Host an mein Telefon angeschlossen ist (ein gerootetes Nexus 4). Wenn ich mich im Internet umsehe ( link1 , link2 ), sollte ich eine Systemdatei ändern. Ich habe eine Reihe interessanter Dateien in /sys/class/power_supply/batteryund /sys/class/power_supply/usbgefunden, die möglicherweise geändert werden müssen, um die Deaktivierung des USB-Ladevorgangs zu erreichen (z /sys/class/power_supply/usb/present 0/1. B. ).

Hat jemand so etwas ausprobiert (den USB-Ladevorgang über Software steuern und solche Systemdateien modifizieren)? Wie können diese Systemdateien am besten geändert werden? Soll ich die AdB-Shell oder ein anderes Tool verwenden?

Ich habe versucht, die App "root explore" zu verwenden, um diese Dateien zu ändern. Wenn ich jedoch eine Datei änderte (nachdem ich ihre Berechtigungen geändert hatte), wurde sie automatisch auf ihren ursprünglichen Wert zurückgesetzt.

STILLE
quelle
2
Dies kann zwar zu der Frage beitragen oder auch nicht, ich bin jedoch gespannt, warum Sie das USB-Laden deaktivieren möchten.
DotVezz
Was ich hier habe, ähnelt eher einem eingebetteten System: einem Telefon (USB-ZUBEHÖR) und einer Hardware (USB-HOST), die über USB verbunden ist. Der Telefonakku versorgt die angeschlossene Hardware über eine bestimmte Verbindung (Vdd). Der USB-HOST soll das Telefon jedoch über die VBUS-Leitung des USB mit Strom versorgen (oder aufladen). Was ich vermeiden möchte, ist eine Ladeschleife zwischen Telefon und angeschlossener Hardware. Obwohl die angeschlossene Hardware der Host ist, ist es das Android-Telefon, das das gesamte System versorgt. Hoffe meine Erklärung war dir klar.
STILLEN
2
/ sys ist ein virtuelles Dateisystem, bei dem der Kernel Knöpfe und Schalter freigibt, um die Kernelkonfiguration zu ändern und nachzuschlagen. Sie können die Dateiberechtigungen nicht ändern. Ich vermute, Ihr Nexus-Telefon ist entsperrt und gerootet. Der Ladeschaltkreis ist vermutlich auf der Basis eines Maxim Chip, kann konfiguriert werden. Es sind geänderte Kernel verfügbar, die das Überschreiben der Erkennung für das Aufladen von Strom ermöglichen. Das Gegenteil sollte auch möglich sein. Möglicherweise müssen Sie den Kernel patchen und neu kompilieren.
ce4
1
Franco Kernel für das Nexus 4 ermöglicht schnelles Laden, Quellen sind vorhanden. Vielleicht können Sie es sich ansehen und herausfinden, wie es ausgeschaltet werden kann: github.com/franciscofranco
ce4 11.10.13

Antworten:

7

Ich habe gerade versucht und festgestellt, dass Sie eine Datei ändern müssen:
sys/class/power_supply/usb/device/charge

Der Standardinhalt ist "1", was bedeutet, dass Sie das Laden aktivieren müssen, um das Laden zu deaktivieren.

$ su

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

Ich habe es auf Nexus 4 getestet und es funktioniert erfolgreich.

user3395818
quelle
Ich kann bestätigen, dass echo 0 > /sys/class/power_supply/battery/charging_enableddas bei mir funktioniert, auf einer Sony Z1 Compact mit CM11. Vielen Dank! :)
Seanlano
Bitte beachten Sie, dass die / sys-Schnittstelle virtuell ist und keine Neustarts durchführt
kevinf
3
adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;
Nir Duan
quelle
2

Ich bin mir nicht sicher, ob es mit dem Ladegerät Ihres Telefons funktioniert, aber oft mit Kabeln, die sowohl Strom als auch Daten übertragen. Im Kabel befinden sich separate Kabel für Strom und Daten.

Ich bin nicht besonders daran interessiert, mein Telefonladegerät zu zerreißen, um meine Idee zu bestätigen, aber Sie könnten versuchen, einen Teil des Kabels abzuisolieren, die Netzkabel im Inneren des Kabels zu identifizieren und abzuschneiden und es wieder mit Klebeband einzuwickeln.

Es ist wahrscheinlich eine Art und Weise einfache Mittel, dies zu tun, aber ich bin davon nicht bewusst.


quelle
Im Allgemeinen gibt es 4 Pins in USB - 2 für 5 V Strom und 2 für Daten.
NoBugs
1
Wenn Sie Vbus und Masse trennen, werden auch die Datenleitungen nicht mehr funktionieren. Die USB-Kabelverbindung wird über die Stromversorgung erkannt (siehe A-Stecker, die Stromversorgungspins sind etwas länger, sodass sie zuerst verbunden werden).
Diidu
1

Ich bin mir ziemlich sicher, dass Sie dies nicht an der Software ändern können, da das Telefon aufgeladen wird, wenn es an einen USB-Anschluss eines Computers angeschlossen wird. Sie müssten sich wahrscheinlich die Hände schmutzig machen und ein oder zwei Verbindungen am Telefon selbst kurzschließen.

Mobilecrackers
quelle
Ja, es kann auch per Software erfolgen. Schauen Sie sich diese App für verwurzelte Nexus 4 stopCharge
STILLE
1

Sie können AdB Shell Dumpsys Batterie Set USB 0 verwenden; // zum Deaktivieren des USB-Ladevorgangs und

adb shell dumpsys akkusatz usb 1; // zum Aktivieren des USB-Ladevorgangs

Himanshu Rautela
quelle
1
Das ist einfach, aber leider deaktiviert es das Aufladen nicht. Es sieht nur so aus, als wäre es deaktiviert.
Diidu
0

Sie können das Hardwareproblem beheben, indem Sie die Pins auf der Seite des Micro-USB-Anschlusses ändern. Eine naheliegende Möglichkeit besteht darin, Pin 1 (VBUS) nicht zu verbinden, und die andere darin, Pin 4 (ID) zu erden, um so zu tun, als sei Ihr Host (PC) ein OTG-Gerät. Wenn Sie das tun, Sie müssen Disconnect Pin # 1 (VBUS) sonst ein, wenn nicht beide, Ihre Geräte verbrennen.

Für die Befehlszeilenlösung müssen Sie nur die richtigen (geräteabhängigen) /sys/...Dateien zum Spielen finden. Aber wie bereits erwähnt, benötigen Sie Schreibzugriff und Root-Berechtigungen, um diese zu ändern, und was auch immer Sie tun, es wird nur bis zum nächsten Neustart oder Wechsel des USB-Peripheriegeräts dauern.

not2qubit
quelle
2
Die vorgeschlagene Hardwarelösung ist falsch. Nahezu jedes Android-Handy verfügt über ein USB-Gerät, das über USB-Hosts (z. B. Laptops) mit Strom versorgt und so im Zubehörmodus arbeitet. Wenn Sie die VBUS-Leitung trennen, funktioniert die USB-Datenkommunikation nicht mehr. Ich habe das selbst getestet. Ich würde dasselbe für den anderen Weg (ID-Pin) sagen, obwohl ich es nicht getestet habe. Sie haben Recht mit der Softwarelösung, jedoch verfügen nicht alle Android-Telefone über die dafür /sys/...erforderlichen Dateien (Nexus 4 ja, Nexus 5 nein). Eine andere Lösung sollte die Änderung des Ladetreiberverhaltens in den Kernel sein.
STILLE
0

Ähnlich wie bei der Operation wird mein Host, der über USB angeschlossen ist, auch als Dummy-Batterie angeschlossen. Kann nicht einfach ein USB-Kabel und keinen Akku verwenden, Android bootet nicht und USB liefert nicht genug Strom.

Sie können dies in der Software nicht beheben, da Android während des Startvorgangs Vbus verwendet. Es sei denn, Sie möchten auch Bootloader-Code hacken.

Die Ladeschaltung muss modifiziert werden, um ein Laden über USB im Vergleich zur Batteriespannungsschleife zu vermeiden.

Ich habe bestätigt, dass für das Galaxy S3 ein 5-V-Bus erforderlich ist, um Daten zu aktivieren (d + d-). Dies ist Teil des USB-Standards.

OTG könnte das Problem elektrisch lösen, aber dann sind die Host-Client-Regeln nicht korrekt. Auch dieses Telefon ist in der Lage, OTG und aufzuladen (ich benutze Y-Kabel + Gamepad)

Referenz bearbeiten: https://forum.xda-developers.com/showthread.php?t=1863303

kevinf
quelle
Wird aktualisiert, sobald ich herausgefunden habe, dass sich der
Ladekreis
0

Ich habe meinen Kollegen gefragt, der Experte für Akkutreiber ist. Auf unserer Mutter Pro 2, Version dessen Kern 4.4.21, wird der Knoten für Batterie Ein / Aus - Aufladung ist: /sys/class/power_supply/battery/input_suspend.

Bao Haojun
quelle
0

Sie können immer eine Schottky-Diode zwischen Pin 1 mit der Sperrseite zum Zubehör verwenden. Auf diese Weise erhält der Pin 1 ein 5-V-Signal, sodass die Kommunikation funktioniert. Es fließt jedoch KEIN Strom vom Zubehör zum Telefon. oder wenn Sie es andersherum wollen, platzieren Sie die Diode einfach in die andere Richtung.

user300447
quelle
-1

Nein, auf Geräten, die noch nicht gerootet sind, ist dies nicht möglich. Es verwendet Settings.System mit ADB_ENABLED, aber ADB_ENABLED ist eine sichere Systemeinstellung, die von einer Anwendung nicht geändert werden kann.

Ja, dies kann auf einem gerooteten Telefon erfolgen.

Es muss eine Berechtigung android.permission.WRITE_SECURE_SETTINGS hinzugefügt werden. Ich weiß, Sie würden fragen, wie ich das mache: Hier ist der Link für eine ähnliche App: https://play.google.com/store/apps/details?id=com.jim2&hl=de

Ravindra Sahay
quelle
1
Was hat das ADB_ENABLEDAufladen mit USB zu tun? Ermöglicht die von Ihnen verknüpfte App das Deaktivieren des USB-Ladevorgangs?
Dan Hulme
Mit der App können Sie die USB-Aufladung deaktivieren, nachdem Sie die schreibgeschützten Einstellungen geändert haben.
Ravindra Sahay
"Irgendwie"? Welche Schritte sind zu befolgen?
Dan Hulme