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.

0voto

user1147688 Puntos 238

Puedes resolver el problema en hardware modificando los pines en el lado del conector micro-USB. Una forma obvia es no conectar el Pin#1 (VBUS) y la otra forma es poner a tierra el Pin#4 (ID) para simular que tu host (PC) es un dispositivo OTG. Si haces eso, debes desconectar el Pin#1 (VBUS) de lo contrario, uno, si no ambos, de tus dispositivos se quemarán.

En cuanto a la solución de la línea de comandos, solo tienes que encontrar los archivos correctos (dependientes del dispositivo) /sys/... para jugar. Pero como ya se mencionó, necesitas acceso de escritura y permisos de root para cambiar estos archivos, y lo que sea que hagas solo durará hasta el próximo reinicio o cambio del periférico USB.

2 votos

La solución de hardware sugerida es incorrecta. Casi todos los teléfonos Android son dispositivos USB que reciben suministro de energía de hosts USB (por ejemplo, laptops), por lo tanto, funcionan en modo Accesorio. Si se corta la línea VBUS, la comunicación de datos USB se detiene. Yo mismo he probado esto. Diría lo mismo para la otra vía (pin de ID) aunque no lo haya probado. Tienes razón en cuanto a la solución de software, sin embargo, no todos los teléfonos Android tienen los archivos /sys/... necesarios para hacerlo (sí en el Nexus 4, pero no en el Nexus 5). Otra solución podría ser cambiar el comportamiento del controlador de carga en el kernel.

-1voto

Ravindra Sahay Puntos 1

No, no es posible en dispositivos que aún no están rooteados. Utiliza Settings.System con ADB_ENABLED, pero ADB_ENABLED es un ajuste de sistema seguro que no puede ser cambiado por una aplicación.

Sí, se puede hacer en un teléfono rooteado.

Es necesario agregar un permiso android.permission.WRITE_SECURE_SETTINGS. Sé que estarás preguntando cómo hacerlo: Aquí está el enlace para una aplicación similar: https://play.google.com/store/apps/details?id=com.jim2&hl=en

1 votos

¿Qué tiene que ver ADB_ENABLED con la carga USB? ¿La aplicación que enlazas permite desactivar la carga USB?

0 votos

La aplicación de alguna manera te permite desactivar la carga USB después de que modifiques la configuración de escritura segura.

0 votos

¿"Tipo"? ¿Cuáles son los pasos a seguir?

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