jueves, 29 de enero de 2015

Kubuntu Linux 14.10 no detecta mi móvil Bq Aquaris 5 desde que actualicé a Android kitkat 4.4.2


Recientemente he actualizado mi teléfono móvil a la nueva versión de Android Kit Kat 4.4.2.

En versiones anteriores no había tenido ningún problema a la hora de conectar diferentes teléfonos a Linux y poder depurar con ellos desde Eclipse o ahora Android Studio.

Con la nueva versión de Android es que Linux ni siquiera detecta que el teléfono está conectado cuando hago un lsusb.

Veamos cómo resolverlo.



Al hacer lsusb NO detecta mi dispositivo


Lógicamente, la herramienta adb del SDK de Android no detecta ningún dispositivo conectado

La clave está en hacer lsusb -v > dispositivos.txt
Con esto obtenemos una visión extendida, ampliada, de lsusb.


Y ahora así. Aquí sí detecta mi teléfono. Nos apuntamos los valores de idVendor e idProduct. 
En mi caso, 2a47 y 2008 (cuidado porque luego verás que en realidad es 0c02, hay un fallo en esta captura de pantalla. En realidad a ti te da igual, anota lo que a ti te salga bajo idVendor e idProduct cuando localices tu móvil dentro del fichero dispositivos.txt que acabamos de crear al hacer 
lsusb -v > dispositivos.txt


Si no tienes el fichero 99-android.rules créalo bajo la carpeta /etc/udev/rules.d
En mi caso, ya he creado ese fichero anteriormente y en él tengo mi tablet incorporada.


Detro de 99-android.rules ya ves que tengo otros dispositivos. Crea una nueva línea idéntica a éstas pero con el valor de idVendor y el de idProduct que te figure a ti.




Vamos a añadir a la base de datos de dispositivos USB nuestro móvil. Para ello, hacemos una copia de la base de datos actual, por si la encharcamos:
sudo cp /var/lib/usbutils/usb.ids /var/lib/usbutils/usb.ids.bak

Y a continuación, editamos la base de datos para incorporar nuestro teléfono. Para ello:
sudo vi /var/lib/usbutils/usb.ids


Se trata de un fichero enorme, ordenado por el idVendor. Nos colocamos justo en el lugar que le correpondería a nuestro modelo.



Y agregamos una nueva línea con nuestro idVendor y el nombre del fabricante, en mi caso BQ.
Es muy importante que respetes los dos espacios en blanco que hay entre el 2a47 y el nombre BQ.
En una nueva línea, separado con exactamente un tabulador, escribimos el idProduct y el modelo, en mi caso, Aquaris 5.


Ahora, al hacer lsusb ya me muestra la marca y el modelo.


Desde consola, creamos el fichero adb_usb.ini. Para ello
sudo vi ~/.android/adb_usb.ini


En su interior, escribimos exactamente lo que se ve en la imagen seguido por una línea que contiene nuestro idVendor

Desconectamos el cable USB de nuestro teléfono y reiniciamos el servidor adb, para ello, desde la ruta platform-tools del SDK Android:
./adb kill-server
./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

Volvemos a conectar el teléfono, y si todo ha ido bien, deberíamos tener una pantalla como ésta, solicitando permiso para depurar aplicaciones en nuestro móvil:

Aceptamos

Ahora, si ejecutamos ./adb devices desde la ruta platform-tools del SDK Android, ya detecta nuestro teléfono.


Y ahora, probamos DroidAtScreen y todo funciona, ya puedo ver la pantalla de mi móvil en pantalla.


Android Studio ya detecta mi móvil, ejecuto en él la aplicación

Y aquí está, mi mini-proyecto Android ejecutándose en mi móvil


Podrían interesarte algunos artículos anteriores relacionados:

Eclipse + Android: Depurar mi aplicación en mi móvil en Linux

http://fpkanarias.blogspot.com.es/2013/02/eclipse-android-depurar-mi-aplicacion.html

Mirror de la pantalla de mi tablet en mi ordenador con droidatscreen

Depurar una aplicación en Android 4.4 con Ubuntu