4 votes

Comment désactiver USB OTG sur Android 6+ ?

Je dois désactiver l'OTG (USB) sur Android 8. Je l'ai déjà fait sur Android 6 en désactivant une autorisation dans le fichier android.hardware.usb.host.xml, mais cela ne fonctionne plus sur Android 8.1.

3voto

Irfan Latif Points 16863

android.hardware.usb.host.xml fichier - situé sous /vendor/etc/permissions/ ou /system/etc/permissions/ avant Treble - contient feature name="android.hardware.usb.host" qui indique que le périphérique peut communiquer avec des périphériques USB en tant qu'hôte USB. Cette fonctionnalité est évaluée par PackageManager (ainsi que d'autres fonctionnalités logicielles / matérielles) et utilisée par Google Play pour filtrer les applications (in)compatibles en fonction de la valeur dans AndroidManifest.xml. Voir les détails ici.

Également, si le périphérique ne prend pas en charge le mode hôte USB, le service UsbHostManager n'est pas démarré, donc des applications comme celle-ci qui utilisent les API hôte USB ne peuvent pas se connecter aux périphériques USB. Cependant, tout périphérique connecté est toujours détecté par le noyau et apparaît sous /sys et /dev.

Pour confirmer si le périphérique prend en charge le mode hôte USB:

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

~$ dumpsys usb | grep host_manager
  host_manager={

Ces lignes ne devraient pas apparaître après avoir supprimé le fichier android.hardware.usb.host.xml.


Cependant depuis Android 6 les périphériques de stockage USB tels qu'une clé USB sont gérés par vold, qui ne dépend pas de la fonctionnalité discutée ci-dessus. vold écoute le noyau via un socket netlink pour l'événement de dispositif de bloc uevent (1) et fait correspondre cela avec une entrée dans fstab (2). Ensuite, il crée des nœuds de disque et de partition dans /dev/block/vold/ (3), vérifie le système de fichiers pour les erreurs et monte dans /mnt/media_rw/ (émule également les cartes SD dans /mnt/runtime/) (4). Ensuite, ExternalStorageProvider (un fournisseur de contenu) est déclenché ce qui accorde aux applications l'accès URI au stockage OTG via SAF ou Scoped Directory Access.

Donc, pour désactiver le montage automatique des périphériques de stockage USB par vold, vous devez supprimer l'entrée correspondante de fstab comme indiqué ici:

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

fstab se trouve sous /odm/etc/ ou /vendor/etc/. Avant Treble, il était dans rootfs (/). Voir les détails dans cette réponse.

0 votes

Au moins pour Android 7 (fstab dans /), cela ne semble pas si facile, car la partition racine est réécrite à chaque redémarrage, donc modifier fstab ne sert à rien. Il semblerait que vous deviez décompresser boot.img, modifier fstab et le recompresser, car au démarrage, ce système de fichiers est écrit à la racine.

0 votes

@user136036 correct.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X