Hôte USB Android et périphériques cachés

je développe une application Android dans laquelle je dois communiquer avec un périphérique USB. J'ai essayé d'utiliser l'API Google standart dans mon application, mais la liste des appareils est toujours vide.

même chose si J'utilise les informations de périphérique USB avec l'api google. La liste des appareils recherchés par l'api google est vide,

lsusb donne les résultats suivants:

Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 002: ID 2226:0014

mon appareil est 2226: 0014

journal de l'éclipse:

I/USB3G(92): event { 'add', '/devices/platform/sw-ehci.1/usb2/2-1', 'usb', '', 189, 133 }
I/USB3G(92): path : '/sys/devices/platform/sw-ehci.1/usb2/2-1'
I/USB3G(92): VID :size 5,vid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idVendor',VID  '2226
I/USB3G(92): '.
I/USB3G(92): PID :size 5,Pid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idProduct',PID  '0014
I/USB3G(92): '.
I/USB3G(92): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/2226_0014 &,
I/USB3G(92): excute ret : 0,err:No such file or directory

si je branche des appareils comme les adaptateurs rs232, dongle bluetooth, rien ne se passe,et il n'y a aucun résultat de L'API et de la lsusb.

Prtocol d'un périphérique est basé sur la bibliothèque ezusb. Android v.: 4.0.3 noyau v.: 3.0.8 firmware build: crane_evb-eng 4.0.3 IMLK74k 20120330

est-ce qu'il y a un moyen d'accéder aux périphériques USB cachés via API, ou devrais-je implémenter le support de ce périphérique en écrivant le pilote et le patcher dans le firmware?

mise à jour: même si je crée un fichier info dans *system/etc/usb_modeswitch.d / * avec nom 2226_0014 contenant

DefaultVendor= 0x2226
DefaultProduct=0x0014
TargetVendor=  0x2226
TargetProductList="0014"
MessageEndpoint="0x00"
NeedResponse=1
CheckSuccess=20

j'obtiens la même erreur: "Pas de tel fichier ou répertoire "

24
demandé sur Alexey.Shilenkov 2012-06-25 09:15:51

4 réponses

pour activer le support de L'API de L'hôte USB, vous devez ajouter un fichier nommé

android.matériel.USB.hôte.xml et contenant les lignes suivantes:

<permissions>
 <feature name="android.hardware.usb.host"/>
</permissions>

dans le dossier

/system/etc/permissions

dans ce dossier trouver le fichier nommé

handheld_core_hardware.xml or tablet_core_hardware.xml 

et ajouter

<feature name="android.hardware.usb.host" />

dans la section <permissions> .

Redémarre ton appareil. Hôte Usb l'api devrait fonctionner.

testé sur CUBE U30GT avec android 4.

44
répondu Greg-q 2014-01-30 07:38:20

Excellent! Cela a fonctionné sur mon Envizen V700NA exécutant Android 4.0.4.

Petite Faute De Frappe: <feature name="android.hardware.usb.host">

devrait être: <feature name="android.hardware.usb.host"/>

procédure:

  1. adb pull /system/etc/permissions/tablet_core_hardware.xml
  2. mettre à jour ce fichier et créer android.matériel.USB.hôte.xml tel que spécifié par Greg-Q.
  3. ADB push Android.matériel.USB.hôte.xml/system/etc / permissions
  4. adb push tablet_core_hardware.xml/system/etc / permissions
  5. redémarrage.
6
répondu markjuggles 2013-06-11 18:21:28

a fonctionné comme un charme sur un téléphone micromax A120 canvas 2 (kitkat 4.4.2). maintenant, je peux contrôler mon Arduino! j'ai utilisé les outils busybox pour faire tout le travail en ligne de commande (sinon chmod ne fonctionnerait pas). mes pas (peut-être certains n'étaient pas nécessaires):

(0) installer les pilotes PDAnet ( http://pdanet.co/a / ) sur mon ordinateur Windows 8. (1) root le téléphone en utilisant Vroot (maintenant appelé iRoot) à http://www.mgyun.com/m/en . Très simple, le seul hic, c'est que la page su grant/deny est en partie en chinois, pas grand chose. (2) Installer busybox et l'émulateur Android-Terminal de jackpal (voir github https://github.com/jackpal/Android-Terminal-Emulator or play store https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=en )

(3) Ouvrir une fenêtre de terminal et devenir le super-utilisateur:

# su

(4) le système de fichiers peut être en lecture seule, donc vous pourriez avoir à le remonter:

# mount -o rw,remount -t yaffs2 /

ou

# mount -o rw,remount -t rootfs /

ou

# mount -o rw,remount -t rootfs rootfs /system

voir http://www.pocketmagic.net/write-on-the-android-read-only-file-system / aussi, voir Android 2.3: système de fichiers en lecture seule coincé aussi, https://ckirbach.wordpress.com/2012/11/27/how-to-remount-system-as-read-write-in-android /

(5) par défaut.prop lire/écrire:

chmod 666 /default.prop

(6) modifier /par défaut.prop, apporter les modifications suivantes:

ro.secure=0
ro.debuggable=1
persist.service.adb.enable=1

voir https://android.stackexchange.com/questions/28653/obtaining-root-by-modifying-default-propro-secure ou http://bclary.com/blog/2014/04/14/splitting-and-packing-android-boot-images/

enfin, juste pour exhaustivité, comme le dit la réponse ci-dessus ( https://stackoverflow.com/a/11992683/979369 ):

(7) pour activer le support de L'API de L'hôte USB, vous devez ajouter un fichier nommé Android.matériel.USB.hôte.xml et contenant les lignes suivantes:

<permissions>
 <feature name="android.hardware.usb.host"/>
</permissions>

dans le dossier

/system/etc/permissions

dans ce dossier trouver le fichier nommé

handheld_core_hardware.xml or tablet_core_hardware.xml 

et ajouter

<feature name="android.hardware.usb.host" />

dans la section.

(8) redémarrez votre appareil. L'api de l'hôte Usb devrait fonctionner.

2
répondu mahesh 2017-05-23 12:32:32

j'ai utilisé adb sur MK809, Android 4.1 Jelly Bean, et la commande est:

adb remount/../../fichier.xml rw ADB push...

avec la commande normale j'évite permission et le fichier est en lecture seule

Désolé pour mon mauvais anglais :P

1
répondu Marco 2013-11-23 16:31:30