Aus Gründen, die nichts mit der Akkulaufzeit zu tun haben, muss ich das Aufladen des Akkus deaktivieren, wenn ein USB-Host mit meinem Telefon verbunden ist (ein gerootetes Nexus 4). Wenn ich mich im Internet umschaue ( link1 , link2 ), sieht es so aus, als ob ich eine Systemdatei ändern sollte. Ich habe eine Reihe interessanter Dateien in /sys/class/power_supply/battery
und /sys/class/power_supply/usb
gefunden, die möglicherweise die richtigen sind, um geändert zu werden, um das Deaktivieren des USB-Ladens zu erreichen (z . B. /sys/class/power_supply/usb/present 0/1
).
Hat jemand so etwas versucht (das USB-Laden per Software steuern und solche Systemdateien ändern)? Was ist der beste Weg, um diese Systemdateien zu ändern? Soll ich die Adb-Shell oder ein anderes Tool verwenden?
Ich habe die App „root explore“ ausprobiert, um diese Dateien zu ändern, aber wenn ich eine Datei geändert habe (nach dem Ändern ihrer Berechtigungen), wurde sie automatisch auf ihren ursprünglichen Wert zurückgesetzt.
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 „Laden aktivieren“ bedeutet. Sie müssen ihn auf „0“ setzen, um „Laden deaktivieren“ zu können.
$ su
$ echo 0 > /sys/class/power_supply/usb/device/charge
Ich habe es auf Nexus 4 getestet und es funktioniert erfolgreich.
echo 0 > /sys/class/power_supply/battery/charging_enabled
bei mir funktioniert, auf einem Sony Z1 Compact mit CM11. Vielen Dank! :)adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;
dumpsys battery set level 42
und das Android wird unabhängig vom tatsächlichen Batteriezustand davon ausgehen, dass es zu 42% aufgeladen ist. Tun Sie dumpsys battery reset
, um zur Normalität zurückzukehren.Ich bin mir nicht sicher, ob es mit dem Ladegerät Ihres speziellen Telefons funktioniert, aber bei Kabeln, die sowohl Strom als auch Daten übertragen, befinden sich häufig separate Kabel für Strom und Daten im Kabel.
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 Kabel zu identifizieren und zu schneiden und es wieder mit Isolierband zu umwickeln.
Es gibt wahrscheinlich einen einfacheren Weg , dies zu tun, aber ich bin mir dessen nicht bewusst.
Sie können adb shell dumpsys battery set usb 0 verwenden; // zum Deaktivieren des USB-Ladens und
adb shell dumpsys batteriesatz usb 1; // zum Aktivieren des USB-Ladens
Ich bin mir ziemlich sicher, dass Sie die Software nicht ändern können, da das Telefon aufgeladen wird, wenn es an einen USB-Anschluss des Computers angeschlossen wird. Sie müssten sich wahrscheinlich die Hände schmutzig machen und ein oder zwei Verbindungen am Telefon selbst kurzschließen.
Sie können immer eine Shottky-Diode zwischen Pin 1 mit der Sperrseite zum Zubehör verwenden. Auf diese Weise erhält der Stift ein 5-V-Signal, sodass die Kommunikation funktioniert, aber es fließt KEIN Strom vom Zubehör zu Ihrem Telefon. oder wenn Sie es anders wollen, platzieren Sie die Diode einfach in die andere Richtung.
Sie können das Problem in der Hardware beheben, indem Sie die Pins auf der Seite des Micro-USB-Anschlusses ändern. Eine naheliegende Möglichkeit besteht darin, Pin Nr. 1 (VBUS) nicht anzuschließen, und die andere Möglichkeit besteht darin, Pin Nr. 4 (ID) zu erden, um vorzugeben, dass Ihr Host (PC) ein OTG-Gerät ist. Wenn Sie das tun, müssen Sie Pin # 1 (VBUS) trennen, da sonst eines Ihrer Geräte, wenn nicht beide, verbrannt werden.
Was die Kommandozeilenlösung betrifft, müssen Sie nur die richtigen (geräteabhängigen) /sys/...
Dateien finden, mit denen Sie spielen können. Aber wie bereits erwähnt, benötigen Sie Schreibzugriff und Root-Berechtigungen, um diese zu ändern, und was auch immer Sie tun, es dauert nur bis zum nächsten Neustart oder Wechsel des USB-Peripheriegeräts.
/sys/...
erforderlichen Dateien (Nexus 4 ja, Nexus 5 nein). Eine andere Lösung sollte das Ändern des Ladetreiberverhaltens in den Kernel sein.Ähnlich wie bei der OP wird auch mein über USB angeschlossener Host als Dummy-Akku angeschlossen. Kann nicht einfach USB-Kabel und keinen Akku verwenden, Android bootet nicht und USB liefert auch nicht genug Strom.
Sie können dies nicht in der Software beheben, da Android Vbus während des Bootens verwendet. Es sei denn, Sie möchten auch den Bootloader-Code hacken.
Die Ladeschaltung muss modifiziert werden, um zu vermeiden, dass das USB-Laden im Vergleich zur Batteriespannungsschleife erfolgt.
Ich habe bestätigt, dass auf dem Galaxy S3 ein 5-V-Bus erforderlich ist, um Daten (d + d-) zu aktivieren. 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 kann OTG und laden (ich benutze Y-Kabel + Gamepad)
Referenz bearbeiten: https://forum.xda-developers.com/showthread.php?t=1863303
Ich fragte meinen Kollegen, der Experte für Batterietreiber ist. Auf unserem Nut Pro 2, dessen Kernel-Version 4.4.21 ist, ist der Knoten zum Ein-/Ausschalten des Akkuladens: /sys/class/power_supply/battery/input_suspend
.
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 Secure-System-Einstellung, die nicht von einer Anwendung geändert werden kann.
Ja, es kann auf einem gerooteten Telefon durchgeführt werden.
Es muss eine Berechtigung android.permission.WRITE_SECURE_SETTINGS hinzugefügt werden. Ich weiß, dass Sie fragen würden, wie ich das mache: Hier ist der Link für eine ähnliche App: https://play.google.com/store/apps/details?id=com.jim2&hl=en
ADB_ENABLED
das mit USB-Laden zu tun? Ermöglicht die von Ihnen verlinkte App das Deaktivieren des USB-Ladens?
dotVezz
Still
ce4
ce4
ce4
cnst