¿Por qué algunos accesorios funcionan con el adaptador de cámara Lightning - USB3 y otros no?

Contexto

Tomé prestado un iPad Pro para trabajar mientras mi computadora portátil no funcionaba, pero sin un teclado físico, me resultaba frustrante escribir algo más que una oración corta en él.

Después de innumerables errores tipográficos y fatiga de la muñeca, intenté conectar un teclado USB de tamaño completo (específicamente, este ) usando el adaptador de cámara Lightning a USB 3, ¡y funcionó perfectamente! El control de volumen, el brillo de la pantalla, las teclas de función, todo funcionó de manera muy similar a como lo haría un teclado bluetooth cuando se conecta a un dispositivo iOS.

Pero para mi gran confusión, al día siguiente hizo exactamente lo contrario. Cuando conecté el teclado, no parecía ser reconocido por el iPad.

Al tocar un campo de texto, apareció el teclado en pantalla como de costumbre, y ninguna de las pulsaciones de teclas que ingresé en el teclado físico pareció registrarse. El botón de escape funcionó como el botón de inicio el día anterior, y las fnteclas " " también para el control de medios, pero ya no.

No hice ningún cambio que creo que hubiera sido significativo (ni actualizaciones de iOS, ni actualizaciones de firmware del adaptador, a menos que se instalen en silencio, entonces no lo sabría). El iPad ni siquiera se reinició. Estaba funcionando bien un día, pero después de ser desconectado durante la noche, ¿aparentemente decidió no reconocer el teclado en absoluto? No he visto la ventana emergente "Es posible que este accesorio no sea compatible" al enchufar cables, cargadores, etc. inadecuados.

Pregunta

Estaba un poco decepcionado y lo encontré tan extraño que traté de investigar qué causó exactamente que la configuración dejara de funcionar de la noche a la mañana, y finalmente llegué a la pregunta de qué hace que una configuración particular de dispositivo iOS + adaptador de cámara USB + dispositivo USB funcione en ¿El primer lugar?

Normalmente, con un problema de compatibilidad de accesorios USB entre una computadora, el árbol de controladores/dispositivos sería el primer lugar en el que habría buscado, pero la comunicación que ocurre a través del adaptador de la cámara y el puerto Lightning parece ser una caja negra. Recientemente obtuve un iPad Pro (9.5 pulgadas), y una de las primeras cosas que probé fue usar el teclado de hardware con él, pero no tuve éxito.

Le hice jailbreak al iPad (iOS 11.2.5, usando Electra1131 MPTCP), pero me di cuenta de que no tengo idea de dónde están expuestos los dispositivos USB a través del adaptador a través de los rayos, o incluso si lo están.

Ahora sé que usar el adaptador de la cámara para cualquier otra cosa que no sean cámaras, y algunos dispositivos específicamente enumerados certificados para funcionar con él es impredecible, pero siempre pensé que era uno u otro. El hecho de que funcionó en un punto y dejó de funcionar tan pronto después me hace morir por saber cuál es el culpable y cómo funciona la comunicación para permitir que el iPad actúe como el host USB.

¿Hay controladores en iOS? ¿Están integrados en el firmware del adaptador de la cámara? ¿Es solo un gran misterio? Cualquier sugerencia sobre dónde buscar también sería apreciada, teniendo en cuenta que tengo acceso al sistema de archivos y al tiempo de ejecución del sistema, pero generalmente no para aplicaciones de terceros.

Descubrí que el teclado se reconocerá si el iPad también está conectado a la corriente. De lo contrario, no se reconoce.

Respuestas (2)

Sí, hay controladores en iOS. iOS está basado en Darwin, al igual que macOS. Es exactamente el mismo tipo de controladores.

No, estos controladores no están integrados en el firmware del adaptador de la cámara. El adaptador de la cámara en sí no tiene soporte específico para dispositivos de almacenamiento, teclados, cámaras, adaptadores de ethernet, teclados MIDI o cualquier otra cosa que le gustaría conectar. Estos tipos de controladores se ejecutan en el sistema operativo del propio dispositivo iOS.

Un lugar para comenzar a buscar más información sobre el tiempo de ejecución de las unidades USB conectadas es ejecutar el comando "dmesg" después de conectar el dispositivo. También puede buscar y/o instalar extensiones de kernel personalizadas que admitan tipos específicos de dispositivos USB.

Una causa común de problemas con dispositivos USB en dispositivos iOS es que el puerto USB solo proporciona una cantidad muy pequeña de energía. Muchos dispositivos USB requieren más energía de la que puede proporcionar este puerto. Luego deberá conectar el dispositivo USB a un concentrador USB con alimentación y luego conectar el concentrador con el adaptador de cámara al dispositivo iOS.

oh guau, dmesg, eh. Estaba buscando logo incluso syslogporque el servidor de registro parecía ser más o menos idéntico a OS X, pero supongo que no es demasiado sorprendente que no estén allí en iOS. Descubrí que podía transmitir registros en la aplicación de la consola si me conectaba con el cable Lightning, pero eso no es tan útil en mi caso jajaja. ¿Hay alguna forma de que dmesg "espere" en iOS? dmesg -wy dmesg --followno funciono, curiosamente imprimiendo el mensaje usage: sudo dmesgantes de salir. editar porque la autocorrección odia la palabra dmesg
Ah, y los requisitos de energía fueron una de las primeras cosas que verifiqué para ver si era el culpable. Probé casi todo, teclado -> concentrador alimentado -> adaptador -> iPad, teclado + cargador -> iPad, conectándolos en diferentes secuencias, todo menos vudú. Casi tuve la tentación de empalmar un cable que se empalmaba a un bus de 5v separado, pero el sentido común y la falta de confianza en mis conocimientos de ingeniería eléctrica me detuvieron. Gracias por tu respuesta por cierto, me olvidé de decir.
iOS y macOS tienen más o menos la misma línea de comandos. Puede usar algo como "ver -n 1 "dmesg | cola -n 60””.
watch no está instalado en iOS o Mac de forma predeterminada:/ tal vez alguien lo haya empaquetado para iOS o supongo que tendría que hacer el mío
Definitivamente está instalado de forma predeterminada en macOS.
y habría estado de acuerdo contigo ayer, pero which watchno aparece nada en iOS 11.3.1 y macOS 10.13.6, Xcode 9 y/o Server 5.4 instalado o no instalado. No estoy seguro si dejó de estar incluido en algún momento, no recuerdo haberlo usado en una Mac ahora que lo pienso.
Ah, sí tienes razón. Estaba ejecutando 10.12 hasta hace poco tiempo, por lo que no había descubierto que en realidad no está incluido en 10.13. Pero al menos hasta el 10.12 está incluido en macOS. Puede instalarlo desde homebrew en 10.13, compilarlo usted mismo o simplemente "crearlo".
Es decir, podría definir una función en bash como esta: "mywatch () { while true; do clear; date; ${1}; sleep 1; done; }". Ejecútelo como "mywatch dmesg". Cada segundo borrará la terminal, mostrará la fecha/hora actual y luego ejecutará el comando que ha dado. Puede ampliar eso para hacer intervalos de sueño configurables, etc.
Espere, ¿y si está escribiendo controladores, entonces no importa que ambos sean para Darwin ARM e Intel son controladores completamente separados, no es así? Quiero decir, supongo que ahora las Mac también son ARM.
@ kumowoon1025 ¿Realmente no puedo entender lo que estás preguntando? Sin embargo, puedo decir que los controladores no tienen que estar separados para ARM e Intel; puede ser el mismo controlador. En macOS modernos, suele ser el mismo controlador.
oh cierto, porque de esa extraña cosa de emulación como rosetta. Pero generalmente necesita escribir controladores separados para una arquitectura separada. Quise decir que aunque tanto iOS como macOS se ejecutan sobre Darwin, si escribe controladores de dispositivos, debe escribirlos por separado para Intel y Arm era mi punto. O lo hace si desea una mejor interoperabilidad y rendimiento al no pasar por Rosetta.
No, Rosetta no está involucrada aquí en absoluto. Y no, no necesita escribirlos por separado para ARM e Intel.

He visto este problema y la resolución es conectar la alimentación antes de conectar el teléfono o el dispositivo USB. Ah, y la fuente de alimentación debe tener una potencia nominal de al menos 12 vatios. Un concentrador alimentado podría ayudar, pero según recuerdo, eso no fue suficiente.

Sus comentarios indican que intentó conectar las cosas en un orden diferente, pero no mencionó la potencia de salida del bloque de alimentación. He visto este comportamiento con un suministro de 5 vatios pero no con un suministro de 12 vatios. Si tiene algo más grande que 12 vatios de potencia, le recomiendo que lo use.

Dada la edad de esta publicación, estoy comentando principalmente para otros con el mismo problema. Sospecho que el problema original ya se ha resuelto hace mucho tiempo.

Cierto y no recuerdo la potencia del ladrillo, supongo que era pequeño porque, ya sabes, era un maldito teclado de todas las cosas.