26 votos

Desactivar la carga USB

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 con root). Echando un vistazo en Internet (enlace1, enlace2), parece que debo 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 la carga USB (por ejemplo, /sys/class/power_supply/usb/present 0/1).

¿Alguien ha intentado algo así (controlar la carga USB mediante software y modificar esos archivos del sistema)? ¿Cuál es la mejor manera de modificar esos archivos del sistema? ¿Debo usar el adb shell u otra herramienta?

Intenté la aplicación "Root Explore" para modificar esos archivos, sin embargo, cuando modifiqué un archivo (después de cambiar sus permisos), automáticamente volvía a su valor original.

2 votos

Mientras esto pueda o no contribuir a la pregunta, me gustaría saber por qué quieres desactivar la carga USB.

0 votos

Lo que tengo aquí es algo más similar a un sistema incrustado: un teléfono (ACCESORIO USB) y una pieza de hardware (ANFITRIÓN USB), conectados a través de USB. La batería del teléfono suministra energía al hardware conectado a través de una conexión específica (Vdd). Sin embargo, se supone que el ANFITRIÓN USB suministra (o carga) el teléfono a través de la línea VBUS del USB. Lo que quiero evitar es un bucle de carga entre el teléfono y el hardware conectado. A pesar de que el hardware conectado es el ANFITRIÓN, es el teléfono Android el que suministra todo el sistema. Espero que mi explicación haya sido clara para ti.

2 votos

/sys es un sistema de archivos virtual donde el kernel expone perillas y interruptores para modificar y buscar la configuración del kernel. No puedes cambiar los permisos del archivo. Supongo que tu teléfono nexus está desbloqueado y rooteado. El circuito de carga probablemente esté basado en un chip de Maxim que puede ser configurado. Hay kernels modificados disponibles que permiten anular la detección de la carga de energía. Lo contrario también debería ser posible. Sin embargo, es posible que necesites parchar y volver a compilar el kernel.

8voto

Shannon Davidson Puntos 216

Acabo de probar y descubrí que necesitas modificar un archivo:
sys/class/power_supply/usb/device/charge

Su contenido predeterminado es '1' lo que significa 'habilitar la carga', necesitas establecerlo en '0' para 'desactivar la carga'

$ su

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

Probé en un Nexus 4 y funcionó con éxito.

0 votos

Puedo confirmar que echo 0 > /sys/class/power_supply/battery/charging_enabled funciona para mí, en un Sony Z1 Compact con CM11. ¡Muchas gracias! :)

0 votos

Por favor, ten en cuenta que la interfaz /sys es virtual y no persiste tras reinicios.

4voto

Nir Duan Puntos 101
adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;

0 votos

Estos comandos son interesantes, ¡pero realmente no afectan la carga! También puedes hacer dumpsys battery set level 42 y el Android pensará que está cargado al 42%, independientemente del estado real de la batería. Haz dumpsys battery reset para volver a la normalidad.

0 votos

También, estos cambios falsos congelan el estado de la batería informado y se registran en las estadísticas de la batería, lo que podría desordenarlas y resultar en predicciones incorrectas de "tiempo restante".

2voto

Galt42 Puntos 41

No estoy seguro si funcionará con el cargador de tu teléfono en particular, pero a menudo, con cables que transfieren tanto energía como datos, hay cables separados dentro del cable para la energía y los datos.

No estoy especialmente interesado en destrozar mi cargador de teléfono para confirmar mi idea, pero podrías intentar pelar parte del cable, identificar y cortar los cables de energía dentro del cable, y volver a envolverlo con cinta eléctrica.

Probablemente haya una forma más fácil de hacer esto, pero no estoy al tanto de ello.

0 votos

Hay 4 pines en USB generalmente - 2 para alimentación de 5v y 2 para datos.

1 votos

Si cortas Vbus y Ground también se detendrán las líneas de datos de funcionar. La conexión del cable USB se detecta a partir de la energía (ver el conector A, los pines de energía son ligeramente más largos, por lo que se conectarán primero).

1voto

Mobilecrackers Puntos 1

Estoy bastante seguro de que no es algo que puedas cambiar en el software ya que el teléfono se cargaría cuando se conecta a un puerto USB de una computadora. Probablemente necesitarías ensuciarte las manos y hacer un cortocircuito en una o dos conexiones en el teléfono mismo.

0 votos

Sí, también se puede hacer a través de software. Mira esta aplicación para Nexus 4 con root stopCharge

1voto

Puedes usar adb shell dumpsys batería establecer usb 0; // para desactivar la carga USB y

adb shell dumpsys batería establecer usb 1; // para habilitar la carga USB

1 votos

Esto es fácil, pero desafortunadamente no desactiva la carga. Solo hace que parezca que está desactivada.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X