4 votos

¿Cómo deshabilitar USB OTG en Android 6+?

Necesito desactivar el OTG (USB) en Android 8. Ya lo hice en Android 6 deshabilitando un permiso en el archivo android.hardware.usb.host.xml pero ya no funciona en Android 8.1.

3voto

Jack Wade Puntos 231

android.hardware.usb.host.xml archivo - ubicado bajo /vendor/etc/permissions/ o /system/etc/permissions/ antes de Treble - contiene feature name="android.hardware.usb.host" que indica que el dispositivo puede comunicarse con dispositivos USB como el host USB. Esta característica es evaluada por PackageManager (junto con otras características de software / hardware) y utilizada por Google Play para filtrar aplicaciones (in)compatibles en función del valor en AndroidManifest.xml. Ver detalles aquí.

También, si el dispositivo no es compatible con el modo host USB, el servicio UsbHostManager no se inicia, por lo que aplicaciones como esta que utilizan APIs de host USB no pueden conectarse a dispositivos USB. Sin embargo, cualquier dispositivo conectado sigue siendo detectado por el kernel y aparece en /sys y /dev.

Para confirmar si el dispositivo es compatible con el modo host USB:

~$ pm list features | grep usb.host
feature:android.hardware.usb.host

~$ dumpsys usb | grep host_manager
  host_manager={

Estas líneas no deben aparecer después de eliminar el archivo android.hardware.usb.host.xml.


Sin embargo, desde Android 6 los dispositivos de almacenamiento USB como una memoria USB son manejados por vold, el cual no depende de la característica mencionada anteriormente. vold escucha al kernel a través de un socket netlink para eventos de dispositivo de bloque uevent (1) y lo relaciona con alguna entrada en fstab (2). Luego crea nodos de disco y partición en /dev/block/vold/ (3), verifica el sistema de archivos en busca de errores y los monta en /mnt/media_rw/ (también emula tarjetas SD en /mnt/runtime/) (4). Después de eso, se activa ExternalStorageProvider (un proveedor de contenido) que otorga a las aplicaciones acceso URI al almacenamiento OTG a través de SAF o Acceso a Directorios Acotado.

Por lo tanto, para desactivar el montaje automático de dispositivos de almacenamiento USB por vold, debes eliminar la entrada correspondiente de fstab como se indica aquí:

/devices/*/xhci-hcd.0.auto/usb*    auto    auto    defaults    voldmanaged=usb:auto

fstab se encuentra en /odm/etc/ o /vendor/etc/. Antes de Treble estaba en rootfs (/). Ver detalles en esta respuesta.

0 votos

Al menos para Android 7 (fstab en /) esto no parece ser tan fácil, porque la partición root se reescribe en cada reinicio, por lo que cambiar fstab no hace nada. Parece que tienes que desempaquetar boot.img cambiar fstab y volver a empaquetarlo, porque en el arranque, este sistema de archivos se escribe en la root.

0 votos

@user136036 correct.

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