Por algunas razones no relacionadas con la duración de la batería, necesito desactivar la carga de la batería cuando un host USB está conectado a mi teléfono (un Nexus 4 rooteado). Echando un vistazo en internet ( link1 , link2 ), parece que debería modificar un archivo del sistema. He encontrado una serie de archivos interesantes ubicados en /sys/class/power_supply/battery
y /sys/class/power_supply/usb
, que podrían ser los correctos para ser modificados con el fin de lograr la desactivación de carga usb (por ejemplo /sys/class/power_supply/usb/present 0/1
).
¿Alguien ha intentado algo así (controlar la carga del usb a través del software y modificar dichos archivos del sistema)? ¿Cuál es la mejor manera de modificar esos archivos del sistema? ¿Debo usar el adb shell u otra herramienta?
Probé la aplicación "root explore" para modificar esos archivos, sin embargo, cuando modifiqué un archivo (después de cambiar sus permisos), se mantuvo automáticamente de nuevo a su valor original.
fuente
Respuestas:
Acabo de intentar y descubrí que necesitas modificar un archivo:
sys/class/power_supply/usb/device/charge
su contenido predeterminado es '1', que significa 'habilitar la carga', debe establecerlo en '0' para 'deshabilitar la carga'
Probé en Nexus 4 y está funcionando con éxito.
fuente
echo 0 > /sys/class/power_supply/battery/charging_enabled
funciona para mí, en un Sony Z1 Compact con CM11. ¡Muchas gracias! :)fuente
No estoy seguro de si funcionará con el cargador de su teléfono en particular, pero a menudo con cables que transfieren energía y datos, hay cables separados dentro del cable para energía y datos.
No estoy especialmente interesado en romper el cargador de mi teléfono para confirmar mi idea, pero podría intentar quitar parte del cable, identificar y cortar los cables de alimentación dentro del cable y envolverlo nuevamente con cinta aislante.
Es probable que haya una manera más fácil de hacerlo, pero no lo sé.
fuente
Estoy bastante seguro de que no es algo que pueda cambiar en el software, ya que el teléfono se cargaría cuando se conecta a un puerto USB de la computadora. Probablemente necesite ensuciarse las manos y cortar una o dos conexiones en el teléfono.
fuente
Puede usar el conjunto de baterías adb shell dumpsys usb 0; // para deshabilitar la carga USB y
adb shell dumpsys batería set usb 1; // para habilitar la carga USB
fuente
Puede resolver el problema en el hardware modificando los pines en el lado del conector micro-USB. Una forma obvia es no conectar el pin n. ° 1 (VBUS) y la otra forma es conectar a tierra el pin n. ° 4 (ID) para simular que su host (PC) es un dispositivo OTG. Si hace eso, debe desconectar el Pin # 1 (VBUS), de lo contrario, uno, si no ambos, de sus dispositivos se quemarán.
En cuanto a la solución de línea de comandos, solo tiene que encontrar los
/sys/...
archivos correctos (dependientes del dispositivo) para jugar. Pero como ya se mencionó, necesita acceso de escritura y permisos de root para cambiarlos, y haga lo que haga solo durará hasta el próximo reinicio o cambio del periférico USB.fuente
/sys/...
archivos necesarios para hacerlo (Nexus 4 sí, Nexus 5 no). Otra solución debería ser el cambio del comportamiento del controlador de carga en el núcleo.Similar a la operación, mi Host que está conectado a través de USB también está conectado como una batería ficticia. No puede simplemente usar un cable USB y no tener batería, Android no arranca, ni el usb proporciona suficiente corriente.
No puede solucionar esto en el software, ya que Android usará Vbus durante el arranque. A menos que también quieras hackear el código del gestor de arranque.
El circuito de carga debe modificarse para evitar la carga usb frente al bucle de voltaje de la batería.
Confirmé en Galaxy S3 que requiere un bus de 5V para habilitar los datos (d + d-) es parte del estándar USB.
OTG podría resolver el problema eléctricamente, pero las reglas del cliente host no son correctas. Además, este teléfono puede OTG y carga (uso cable y + gamepad)
Editar referencia: https://forum.xda-developers.com/showthread.php?t=1863303
fuente
Le pregunté a mi colega, experto en controladores de batería. En nuestro tuerca Pro 2, cuya versión del núcleo es 4.4.21, el nodo de carga de la batería de encendido / apagado es:
/sys/class/power_supply/battery/input_suspend
.fuente
siempre puede usar un diodo shottky entre el pin 1 con el lado de bloqueo hacia el accesorio. de esa manera, el pin uno recibe una señal de 5v para que la comunicación funcione, pero NO habrá corriente que fluya del accesorio a su teléfono. o si lo desea de otra manera, simplemente coloque el diodo en la dirección diferente.
fuente
No, no es posible en dispositivos que aún no están rooteados. Utiliza Settings.System con ADB_ENABLED, pero ADB_ENABLED es una configuración de sistema seguro que una aplicación no puede cambiar.
Sí, se puede hacer en un teléfono rooteado.
Es necesario agregar un permiso android.permission.WRITE_SECURE_SETTINGS. Sé que estaría preguntando cómo hago eso: aquí está el enlace para una aplicación similar: https://play.google.com/store/apps/details?id=com.jim2&hl=en
fuente
ADB_ENABLED
que ver con la carga USB? ¿La aplicación que vinculas permite desactivar la carga USB?