Host USB Android y dispositivos ocultos

Estoy desarrollando una aplicación para Android en la que debo comunicarme con un dispositivo USB. Intenté usar la API estándar de Google en mi aplicación, pero la lista de dispositivos está siempre vacía.

Lo mismo si uso la información del dispositivo USB con google api. La lista de dispositivos buscados por google api está vacía,

lsusb da los siguientes resultados:

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 

mi dispositivo es 2226: 0014

registro de eclipse:

 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 enchufo dispositivos como los adaptadores rs232, bluetooth dongle, no pasa nada, y no hay ningún resultado de API y lsusb.

Prtocol de un dispositivo se basa en la biblioteca ezusb. Android v .: 4.0.3 kernel v .: 3.0.8 firmware build: crane_evb-eng 4.0.3 IMLK74k 20120330

¿Hay alguna forma de acceder a los dispositivos USB ocultos a través de API, o debo implementar la compatibilidad de este dispositivo escribiendo el controlador y parchándolo en el firmware?

ACTUALIZACIÓN: incluso si creo un archivo de información en * system / etc / usb_modeswitch.d / * con el nombre 2226_0014 que contiene

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

me sale el mismo error: “No hay tal archivo o directorio”

Para habilitar la compatibilidad con la API de host USB, debe agregar un archivo llamado
android.hardware.usb.host.xml y que contiene las siguientes líneas:

    

en la carpeta

 /system/etc/permissions 

en esa carpeta encontrar el archivo llamado

 handheld_core_hardware.xml or tablet_core_hardware.xml 

y añadir

  

en la sección .

Reinicia tu dispositivo. La API del host USB debería funcionar.

Probado en CUBE U30GT con Android 4.

¡Excelente! Esto funcionó en mi Envizen V700NA con Android 4.0.4.

Error menor:

Debería ser:

Procedimiento:

  1. adb pull /system/etc/permissions/tablet_core_hardware.xml
  2. Actualice ese archivo y cree android.hardware.usb.host.xml como lo especifica Greg-q.
  3. adb push android.hardware.usb.host.xml / system / etc / permissions
  4. adb push tablet_core_hardware.xml / system / etc / permisos
  5. Reiniciar.

Funcionó como un amuleto en un teléfono micromax A120 canvas 2 (kitkat 4.4.2). ¡ahora puedo controlar mi Arduino! utilicé herramientas de busybox para hacer todo el trabajo de línea de comandos (de lo contrario, chmod no funcionaría). mis pasos (quizás algunos no fueron necesarios):

(0) instale los controladores PDAnet ( http://pdanet.co/a/ ) en mi computadora con Windows 8. (1) rootee el teléfono usando Vroot (ahora llamado iRoot) en http://www.mgyun.com/m/en . Muy simple, solo es que la página su grant / deny está parcialmente en chino, no es gran cosa. (2) instale busybox y el emulador de terminal Android de jackpal (vea github https://github.com/jackpal/Android-Terminal-Emulator o play store https://play.google.com/store/apps/details?id = jackpal.androidterm & hl = en )

(3) abra una ventana de terminal y conviértase en superusuario:

 # su 

(4) el sistema de archivos puede ser de solo lectura, por lo que es posible que deba volver a montarlo:

 # mount -o rw,remount -t yaffs2 / 

o

 # mount -o rw,remount -t rootfs / 

o

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

ver http://www.pocketmagic.net/write-on-the-android-read-only-file-system/ también, ver Android 2.3: sistema de archivos de solo lectura también, https://ckirbach.wordpress.com / 2012/11/27 / Cómo volver a montar-sistema-como-leer-escribir-en-Android /

(5) hacer lectura / escritura de default.prop:

 chmod 666 /default.prop 

(6) edite /default.prop, haga los siguientes cambios:

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

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

Finalmente, para completar, como dice la respuesta anterior ( https://stackoverflow.com/a/11992683/979369 ):

(7) Para habilitar la compatibilidad con la API de host USB, debe agregar un archivo llamado android.hardware.usb.host.xml y que contenga las siguientes líneas:

    

en la carpeta

 /system/etc/permissions 

en esa carpeta encontrar el archivo llamado

 handheld_core_hardware.xml or tablet_core_hardware.xml 

y añadir

  

en la sección.

(8) Reinicia tu dispositivo. La API del host USB debería funcionar.

He usado adb en MK809, Android 4.1 Jelly Bean, y el comando es:

adb remount /../../file.xml rw adb push …

con el comando normal i’vent permiso y el archivo es de solo lectura

Perdón por mi mal inglés: P