adb por Wi-Fi, y por qué se pierde justo cuando más lo necesitas
Cuando pruebo USB OTG en modo Modo host (USB host), el puerto USB del teléfono deja de servir para ADB: está ocupado hablando con el pendrive o el ratón conectado. La solución es adb por Wi-Fi:
adb tcpip 5555
adb connect <ip-del-telefono>:5555
A partir de ahí, puedo desconectar el cable y seguir viendo el dmesg del teléfono mientras pruebo el modo host. Funciona bien, con una condición que es fácil de olvidar: todo pasa por el Wi-Fi, así que cualquier cosa que afecte al Wi-Fi afecta a la sesión de depuración.
El error que acabo de cometer
Mientras preparaba este mismo texto, dejé el C660 en modo tcpip y, en el mismo lote de comandos, apagué su Wi-Fi para probar otra cosa:
$ adb tcpip 5555
restarting in TCP mode port: 5555
$ adb connect 192.168.1.11:5555
connected to 192.168.1.11:5555
$ adb shell 'svc wifi disable'
$ adb connect 192.168.1.11:5555
failed to connect to '192.168.1.11:5555': No route to host
En ese momento el teléfono quedó sin forma de recibir órdenes de adb: el puerto TCP no sirve sin Wi-Fi, y el teléfono seguía en modo tcpip, así que tampoco respondía por USB. La única salida fue volver a conectar el cable: adb usb seguido de reconectar el cable físicamente restablece el modo normal, porque el propio sistema detecta el cable y reinicia adbd.
Lo que hay que recordar
adb tcpipcambia el modo del demonioadbd, no abre un segundo canal. Mientras esté en modo TCP, el modo USB deja de responder, con cable conectado o no.- La propiedad que activa el puerto no sobrevive a un reinicio del teléfono. Cada vez que el teléfono se reinicia (por una prueba de kernel, por ejemplo), hay que volver a hacer
adb tcpip 5555desde una sesión por USB. - Nunca desactives el Wi-Fi mientras dependes del modo TCP para recuperar el control. Si necesitas hacerlo, deja el cable USB conectado de antemano y pasa a
adb usbjusto antes. - El reinicio automático de
adbdtambién ocurre si usasstop adbd; start adbdporshellen vez deadb usb: a veces tarda unos segundos en volver a aparecer, así que conviene esperar y reintentar la conexión en vez de asumir que falló.
La lección de fondo no es evitar adb por Wi-Fi, que sigue siendo la única forma práctica de depurar un teléfono con el puerto USB ocupado en modo host. Es tratarlo como lo que es: una sesión que depende de una capa extra (el Wi-Fi), y que puede perderse por algo que no tiene nada que ver con adb en sí.