4 votos

¿Hay alguna manera definitiva de saber si mi teléfono es compatible con USB-OTG o no?

Tengo un teléfono Samsung Galaxy Win, rooteado y con adbd inseguro instalado ( usando el enlace aquí ).

Esta es la información que muestra la aplicación USB OTG Checker:

He añadido el Archivo Android.hardware.usb.host.xml en /system/etc/permissions y la carpeta Aplicación USB-OTG dice que mi teléfono ahora es compatible con OTG (antes, se demostró que OTG no es compatible sólo debido al archivo xml que faltaba).

Cuando conecto un cable OTG y una unidad USB, no pasa nada en absoluto. Lo mismo con un ratón USB. El Información sobre el dispositivo USB dice que nada está conectado. Es posible que el hardware USB OTG en sí falte en este teléfono, pero es muy difícil encontrar cualquier información sobre este modelo en absoluto (fue muy difícil conseguir que este teléfono se arraigara en primer lugar).

¿Hay una forma definitiva de saber si el teléfono soporta OTG o no? ¿Hay alguna función de Java a la que pueda llamar que confirme OTG, o hay alguna función que se bloquee si OTG no está presente a nivel de hardware?

EDITORIAL 1:

Salida después de hacer el procedimiento mencionado en el comentario:

"Hacer con privilegios de root: cd /sdcard && find /sys | sort >1 . Conecta el USB. Entonces..: find /sys | sort >2 && diff 1 2 . Esto te permitirá saber cómo el kernel trata el hardware del USB".

--- 1
+++ 2
@@ -17357,10 +17357,15 @@
 /sys/kernel/debug/binder/failed_transaction_log
 /sys/kernel/debug/binder/proc
 /sys/kernel/debug/binder/proc/19015
-/sys/kernel/debug/binder/proc/19034
 /sys/kernel/debug/binder/proc/21683
 /sys/kernel/debug/binder/proc/22063
 /sys/kernel/debug/binder/proc/22112
+/sys/kernel/debug/binder/proc/22152
+/sys/kernel/debug/binder/proc/22166
+/sys/kernel/debug/binder/proc/22185
+/sys/kernel/debug/binder/proc/22197
+/sys/kernel/debug/binder/proc/22212
+/sys/kernel/debug/binder/proc/22224
 /sys/kernel/debug/binder/proc/2788
 /sys/kernel/debug/binder/proc/2796
 /sys/kernel/debug/binder/proc/2797
@@ -17402,12 +17407,7 @@
 /sys/kernel/debug/binder/proc/5383
 /sys/kernel/debug/binder/proc/5972
 /sys/kernel/debug/binder/proc/6076
-/sys/kernel/debug/binder/proc/6343
 /sys/kernel/debug/binder/proc/6358
-/sys/kernel/debug/binder/proc/6370
-/sys/kernel/debug/binder/proc/6382
-/sys/kernel/debug/binder/proc/6397
-/sys/kernel/debug/binder/proc/6410
 /sys/kernel/debug/binder/proc/6423
 /sys/kernel/debug/binder/proc/6439
 /sys/kernel/debug/binder/proc/6479

2 votos

Compruebe el registro del kernel a través de dmesg antes y después de conectar un dispositivo USB OTG. Normalmente debería ver algo en el registro del kernel si se detecta un nuevo dispositivo USB. Otra posible razón por la que el OTG no funciona es si el puerto USB no suministra energía. Intente utilizar un concentrador con alimentación activa en el medio.

0 votos

@Robert ¿lo ejecuto en el teléfono? ¿Cómo puedo ejecutar esto? Escribiendo esto en una aplicación de terminal dice /system/bin/sh: dmseg: not found

0 votos

Ejecútalo a través de adb, y escríbelo correctamente, entonces funcionará.

2voto

Jack Wade Puntos 231

El USB OTG es una capacidad de hardware. El software no puede decir si el hardware tiene esta capacidad o no si no está configurado para hacerlo. La aplicación que muestra sólo confirma la presencia de host.xml archivo que usted mismo ha puesto. También puedes confirmar que el formulario adb shell :

~$ pm list features | grep usb.host

Para que el OTG del USB funcione, primero tu kernel debería crear una entrada de hardware en /sys según el mapeo del árbol del dispositivo cuando se conecta la unidad USB.
En segundo lugar un dispositivo debe ser poblado en /dev/bus/usb/... (y /dev/block/... si es un dispositivo de almacenamiento). Depende de uevent configuración en su ROM. O también puedes crear manualmente el dispositivo usando mknod .

En tercer lugar, tienes que colocar host.xml para que el sistema operativo y las aplicaciones sepan que el soporte de USB OTG está presente en el dispositivo. Ahora las aplicaciones pueden acceder al dispositivo USB directamente (siempre que se establezcan los permisos adecuados en la ruta y el nodo del dispositivo) haciendo uso del modo de host APIs .
Por último, si su ROM soporta dispositivos de almacenamiento USB de montaje automático (disponible en Android 6+), debería tener una entrada para vold en fstab . Ver ¿Cómo desactivar el OTG USB en Android 8.1?

Como se ha sugerido, su Edición 1 muestra que los cambios en sysfs después de conectar el USB sólo están en debugfs no se detecta ningún hardware por el núcleo.

Una última cosa que puedes hacer es usar un concentrador USB alimentado como sugiere @ Robert en el comentario. También comprueba dmesg registro para los mensajes del núcleo y logcat para USBManager y USBHost mensajes en la pila de Java. Si no se detecta ningún hardware, entonces tu hardware o al menos el kernel no es compatible con USB.

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