По некоторым причинам, не связанным с временем автономной работы, мне нужно отключить зарядку аккумулятора, когда USB-хост подключен к моему телефону (рутированному Nexus 4). Оглядевшись в Интернете ( ссылка1 , ссылка2 ), похоже, я должен изменить системный файл. Я нашел ряд интересных файлов, расположенных в /sys/class/power_supply/battery
и /sys/class/power_supply/usb
, которые могут быть правильными для изменения, чтобы добиться отключения зарядки через usb (например, /sys/class/power_supply/usb/present 0/1
).
Кто-нибудь пробовал что-то подобное (управлять usb зарядкой через софт и модифицировать такие системные файлы)? Каков наилучший способ изменить эти системные файлы? Должен ли я использовать оболочку adb или другой инструмент?
Я попробовал приложение «root explore», чтобы изменить эти файлы, однако, когда я изменил файл (после изменения его разрешений), он автоматически вернулся к исходному значению.
Я только что попробовал и обнаружил, что вам нужно изменить файл:
sys/class/power_supply/usb/device/charge
его содержимое по умолчанию — «1», что означает «включить зарядку», вам нужно установить его на «0», чтобы «отключить зарядку».
$ su
$ echo 0 > /sys/class/power_supply/usb/device/charge
Я тестировал на Nexus 4, и он успешно работает.
echo 0 > /sys/class/power_supply/battery/charging_enabled
у меня это работает на Sony Z1 Compact с CM11. Большое спасибо! :)adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;
dumpsys battery set level 42
и Android будет думать, что он заряжен на 42%, независимо от реального состояния батареи. Сделайте dumpsys battery reset
, чтобы вернуться к нормальной жизни.Я не уверен, будет ли он работать с зарядным устройством вашего конкретного телефона, но часто с кабелями, которые передают как питание, так и данные, внутри кабеля есть отдельные шнуры для питания и данных.
Я не особенно заинтересован в том, чтобы разорвать зарядное устройство для телефона, чтобы подтвердить свою идею, но вы можете попробовать зачистить часть кабеля, найти и перерезать шнуры питания внутри кабеля и снова обмотать его изолентой.
Вероятно, есть более простой способ сделать это, но я не знаю об этом.
Вы можете использовать батарею dumpsys adb shell set usb 0; // для отключения USB-зарядки и
набор батарей для adb shell dumpsys usb 1; // для включения зарядки через USB
Я почти уверен, что это не то, что вы можете изменить в программном обеспечении, поскольку телефон будет заряжаться при подключении к USB-порту компьютера. Вам, вероятно, придется запачкать руки и закоротить одно или два соединения на самом телефоне.
Вы всегда можете использовать диод Шоттки между контактом 1 блокирующей стороной к аксессуару. Таким образом, контактный разъем получает сигнал 5 В, поэтому связь работает, но ток от аксессуара к вашему телефону НЕ будет. или, если вы хотите по-другому, просто поместите диод в другом направлении.
Вы можете решить проблему аппаратно, изменив контакты на стороне разъема micro-USB. Один очевидный способ — не подключать контакт № 1 (VBUS), а другой способ — заземлить контакт № 4 (ID), чтобы представить, что ваш хост (ПК) является устройством OTG. Если вы это сделаете, вам придется отключить контакт № 1 (VBUS), иначе одно, если не оба, ваших устройства будут сожжены.
Что касается решения с командной строкой, вам просто нужно найти нужные (зависящие от устройства) /sys/...
файлы для игры. Но, как уже упоминалось, вам нужны права на запись и права root, чтобы изменить их, и что бы вы ни делали, это будет длиться только до следующей перезагрузки или замены периферийного USB-устройства.
/sys/...
необходимые для этого файлы (Nexus 4 — да, Nexus 5 — нет). Другим решением должно быть изменение поведения драйвера зарядки в ядре.Как и в случае с оператором, мой хост, подключенный через USB, также подключен как фиктивная батарея. Невозможно просто использовать USB-кабель и аккумулятор, андроид не загружается, а USB не обеспечивает достаточного тока.
Вы не можете исправить это в программном обеспечении, так как Android будет использовать Vbus во время загрузки. Если вы также не хотите взломать код загрузчика.
Цепь зарядки необходимо изменить, чтобы избежать зарядки от USB и петли напряжения батареи.
Я подтвердил, что на Galaxy S3 для включения данных требуется шина 5 В (d + d-), это часть стандарта USB.
OTG может решить проблему электрически, но тогда правила хост-клиента неверны. Также этот телефон поддерживает OTG и зарядку (я использую Y-кабель + геймпад).
Ссылка на редактирование: https://forum.xda-developers.com/showthread.php?t=1863303
Я спросил своего коллегу, который является экспертом по драйверам аккумуляторов. На нашем Nut Pro 2 с версией ядра 4.4.21 узел включения/выключения зарядки аккумулятора: /sys/class/power_supply/battery/input_suspend
.
Нет, это невозможно на устройствах, которые еще не рутированы. Он использует Settings.System с ADB_ENABLED, но ADB_ENABLED является параметром безопасной системы, который не может быть изменен приложением.
Да, это можно сделать на рутированном телефоне.
Необходимо добавить разрешение android.permission.WRITE_SECURE_SETTINGS. Я знаю, вы спросите, как мне это сделать: вот ссылка на похожее приложение: https://play.google.com/store/apps/details?id=com.jim2&hl=en
ADB_ENABLED
тут USB зарядка? Приложение, на которое вы ссылаетесь, позволяет отключить зарядку через USB?
точкаВезз
СТИЛЛЕН
се4
се4
се4
cnst