Reconociendo dispositivos Android rebeldes con ADB sobre Ubuntu

Empieza el curso y es hora de tener todos los ordenadores, teléfonos y tabletas listos para la acción en cualquier momento. Y me encontraba trasteando en Android Studio sobre Ubuntu 14.04 en mi portátil con la app Android que desarrollé, haciendo cambios, cuando tuve la feliz idea de querer lanzarla en mi bq Aquaris 5. No lo conseguí. El Android Debug Bridge (ADB) no encontraba el dispositivo ni a la de tres. Así que tuve que dar un par de vueltas hasta conseguirlo, y como parece ser un problema común, dejo aquí escrita esta handy-dandy guide. Sobre todo, para mi yo del futuro.

command_line_android_debugging

El primer paso es identificar cuál es nuestro dispositivo para obtener de él los identificadores de Vendor y de Product. Sencillamente correremos un comando con el teléfono desconectado primero y conectado después, y buscaremos cuál es el nuevo.

Así que con el teléfono desconectado ejecutaremos:

lsusb > 1.txt

Con el teléfono conectado ejecutaremos:

lsusb > 2.txt

y para saber qué dispositivo es (si no lo quieres buscar manualmente leyendo ambos archivos), ejecutaremos:

diff 1.txt 2.txt

La línea que salga por terminal tendrá más o menos este formato. Cambiando el Bus, el Device, el ID, el nombre… pero se capta la idea.

Bus 003 Device 002: ID 2876:a10c Nombre del dispositivo si lo tiene

Los datos que necesitamos son los que van tras ID. En este caso concreto, 2876 sería el identificador de Vendor, y el a10c el de Product. Tendremos que crear una nueva regla en /etc/udev/rules.d, con un nombre que empiece por un número más alto que el más alto de los que existan actualmente en esa carpeta, y terminado en “.rule”. Un buen ejemplo sería 99-android.rule, quedando así en ruta absoluta /etc/udev/rules.d/99-android.rule. Ese nuevo fichero de texto tendrá una sola línea, que será la siguiente en nuestro ejemplo:

SUBSYSTEM=="usb", ATTR{idVendor}=="2876", ATTR{idProduct}=="a10c", MODE="0666", OWNER="sergioluis"

Por supuesto, el OWNER es vuestro login. Si no sabéis cuál es o cómo obtenerlo, ejecutad en la terminal:

who am i

Ahora tendremos que añadir el idVendor al fichero ~/.android/adb_usb.ini. El propio documento pide que no sea editado manualmente, pero lo divertido de las reglas es saltárselas. Así que al final, añadiremos una línea con el idVendor de nuestro teléfono (en nuestro caso, 2876), indicando que es hexadecimal haciéndolo comenzar por un “0x”. De esta manera, quedaría “0x2876”.

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
 # USE 'android update adb' TO GENERATE.
 # 1 USB VENDOR ID PER LINE.
 0x2876

Por último, solo nos falta desconectar el teléfono, reiniciar udev…

sudo service udev restart

…conectamos nuestro teléfono de nuevo y nos asegurarnos de que el ADB lo encuentra forzando el reinicio del Android Debug Bridge. Desde la carpeta donde tengamos el SDK de Android, …/sdk/platform-tools/, ejecutamos:

./abd kill-server && ./adb usb

Para terminar seguramente nos pida autorización en la pantalla del teléfono. Aceptamos y estamos listos para usar el teléfono rebelde para probar nuestras aplicaciones Android (y tantas otras cosas como permite ADB).

Deja un comentario