ADB en Ubuntu no reconoce Nexus 4

No puedo hacer que ADB reconozca mi teléfono Nexus 4 en Ubuntu (12.04 con un kernel más nuevo instalado: 3.8.0-30-generic). El modo desarrollador está habilitado en el teléfono.

El dispositivo aparece en lsusb :

$ lsusb
...
Bus 003 Dispositivo 034: ID 18d1:4ee5 Google Inc.
...

Pero cuando ejecuto adb devices obtengo una lista vacía. Encontré muchas publicaciones en Internet sobre este problema, pero ninguna de ellas resuelve el problema. Hay dos soluciones.

  • Agregue una regla a /etc/udev/rules.d/51-android.rules . Encontré varias variaciones para el contenido de este archivo. En la mayoría de los casos, se debe establecer un valor de idVendor e idProduct en función de la salida de lsusb . A continuación hay algunos ejemplos que probé.
SUBSISTEMA=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee5", MODO="0666" GRUPO="androiddev", SYMLINK+="android%n"
SUBSISTEMA=="usb", ATTR{idVendor}=="18d1", MODO="0666", GRUPO="plugdev"
SUBSISTEMA=="usb", ATTRS{idVendor}=="18d1", SYMLINK+="android_adb", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee5", MODE="0666", OWNER="mi-login"

Después de agregar esto, configuré los permisos para el archivo de reglas en 644 y reinicié la PC/reinicié udev, reinicié el teléfono y conecté mi Nexus 4.

  • Agregue la identificación del proveedor a ~/.android/adb_usb.ini.
eco 0x18d1 >> ~/.android/adb_usb.ini

Ejecuté adb devices como usuario raíz y normal, pero solo obtengo una lista vacía:

$ dispositivos adb
* el demonio no se está ejecutando. comenzando ahora en el puerto 5037 *
* demonio iniciado con éxito *
Lista de dispositivos conectados

¿Alguna idea sobre cómo resolver este problema? Cualquier ayuda de sugerencias sería muy apreciada.

Respuestas (4)

No es suficiente hacer que la página de opciones del desarrollador aparezca en el menú de configuración (pulsando repetidamente el número de compilación). En esa página, hay una opción de depuración de USB , que por defecto está desactivada.

Cuando la depuración de USB está habilitada, al conectar su dispositivo a una PC mediante USB, aparece la notificación "Depuración de USB conectada", independientemente de si adbse está ejecutando actualmente en la PC.

¿Podría por favor detallar su respuesta? ¿Dónde puedo encontrar esta "página"?
Estoy tratando de conectarme adbporque la pantalla táctil está rota. No tengo medios para acceder a ninguno de sus menús y aplicaciones. ¿Habría alguna otra forma de activar esta función de depuración USB?

Para obtener un conjunto de instrucciones más completo sobre cómo configurar las reglas udev de Nexus 4 en ubuntu, siga estas instrucciones:

Cómo encontrar el ID de proveedor de su dispositivo

Puede encontrar una ID de proveedor para dispositivos conectados por USB con el siguiente comando de Linux:

lsusb

Esto generará una lista de todos los dispositivos USB conectados, así que asegúrese de que su dispositivo esté conectado antes de hacerlo.

Bus 001 Device 004: ID 18d1:4ee2 Google Inc.

La primera parte del campo después de ID es la ID del proveedor (18d1) y la segunda parte corresponde al modo en que está conectado el dispositivo. En este caso, 4ee2 equivale al modo MTP con depuración activada.

CREAR REGLA UDEV PARA NEXUS 4

Para poder detectar el teléfono Nexus 4 en Ubuntu, lo primero es crear las reglas udev adecuadas que permitirán que el sistema detecte el teléfono.

Estas reglas de udev deberían poder manejar 4 casos diferentes:

  • teléfono conectado en modo MTP (depuración USB activada o desactivada)
  • teléfono conectado en modo PTP (depuración USB activada o desactivada)
  • teléfono conectado en modo Fastboot
  • teléfono conectado en modo de recuperación

Serán declarados en /etc/udev/rules.d/99-android.rules. Si el archivo ya existe, simplemente agregue el contenido al final.

# sudo gedit /etc/udev/rules.d/99-android.rules

A continuación se debe agregar el contenido. Asegúrese de reemplazar el campo de inicio de sesión con su nombre de usuario adecuado con el que inició sesión.

# Google Nexus 4 16 Gb
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee1", MODE="0666", OWNER="your-login" # MTP media (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0666", OWNER="your-login" # MTP media with USB debug on(multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee5", MODE="0666", OWNER="your-login" # PTP media (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee6", MODE="0666", OWNER="your-login" # PTP media with USB debug on (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0666", OWNER="your-login" # Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666", OWNER="your-login" # Recovery

reiniciar servicios

Una vez hecho esto, el servicio udev debe reiniciarse.

# sudo service udev restart

Tenga en cuenta que, en algunos casos, también es necesario reiniciar adb con:

adb kill-server
adb start-server

O reinicie completamente el sistema con:

sudo reboot -n

También podría funcionar volver a conectar el cable USB (en lugar de reiniciar).

Autorizar conexión ADB

Si acaba de habilitar la opción de depuración ADB en su teléfono y creó esta nueva conexión, el comando ADB podría mostrar su dispositivo como unauthorized. Simplemente revise la pantalla de su teléfono y luego autorice la nueva conexión.

Créditos

La mayor parte de esta información se encontró en http://bernaerts.dyndns.org/android/267-android-nexus4-root-twrp-ubuntu . Esta es una guía de rooteo para nexus 4 en ubuntu. Solo usé el primer paso de esta guía.

Acabo de probar esta solución de Ubuntu 14.04 e incluso después de reiniciar el sistema, no se reconoce el Nexus 4.
¿Intentó iniciar adb con permisos de root? Vea una de las otras respuestas sobre Ubuntu 14.04 +. ¿Verificó el modo de conexión USB en el dispositivo?
Sí, lo probé con sudo. El teléfono se conecta en modo MTP con depuración desactivada.

Estoy ejecutando Ubuntu 14.04 LTS y descubrí que tengo que ejecutar adb con permisos de root para que detecte mi teléfono. Justo ahora corrí (desde el directorio de herramientas de la plataforma) ./adb devicesy obtuve una lista vacía. Reinicié adb como root ejecutando ./adb kill-servery luego sudo ./adb start-server. Ahora adb devicesvuelve:

List of devices attached 
01d17087d29dec60    device

Mientras que antes se veía así:

Lista de dispositivos conectados

matar, luego comenzar como root funcionó para mí. Usando un Nexus 5
Acabo de probar esta solución en Ubuntu 14.04 y todavía obtengo una lista de dispositivos vacía.

FYI: recientemente actualicé la versión de Android de 4.4 a 5.0 en mi teléfono y ADB ya no mostraría el dispositivo como conectado. Parece que el método de conexión USB MTP era correcto antes, ahora tiene que ser PTP .

¿Podría por favor detallar su respuesta? ¿Dónde exactamente se debe modificar este método?
Como dije, MTP era correcto ANTES, DESPUÉS de la actualización, PTP era correcto.