El comando adb devices no funciona

86

Estoy ejecutando Ubuntu 10.10 de 64 bits. Tengo ia32-libs instalado junto con la versión 1.0.26 de Android Debug Bridge.

Mis problemas):

  1. adb devices>>> ???????????? no permisos
  2. sudo adb devices >>>> sudo: adb: comando no encontrado
  3. adb shell >>> error: permisos insuficientes para el dispositivo

Supongo que todos están relacionados. Aquí está la información relevante.

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

Obtengo los mismos resultados con un Moto Droid rooteado que ejecuta CM6.1 y un G-Tab rooteado que ejecuta una ROM basada en CM7.

He revisado las siguientes publicaciones relacionadas:

Probé la mayoría (no todas) de las sugerencias y no he podido resolver mi problema. Las cosas que no probé me parecieron inapropiadas. Agradecería algunos consejos más y seguiré solucionando problemas.

Una cosa que no probé fue editar /etc/udev/rules.d/70-android.rules. ¿Es probable que ese sea el problema? No veo cómo eso causaría "sudo: adb: comando no encontrado". Quizás mis problemas no estén todos relacionados. De todos modos, en este punto creo que necesito información de otras personas porque no creo que tenga un problema de ruta o los otros problemas comunes discutidos en esas otras publicaciones.

EDITAR: RESUELTO gracias a EboMike y RivieraKid. En realidad, se trataba de dos problemas diferentes:

  1. El elemento # 2 anterior (sudo: adb: comando no encontrado) se resolvió creando un enlace simbólico de la siguiente manera:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    Eso me permitió hacer lo que sugirió EboMike y usar esta solución . Hacer eso era necesario para mi Moto Droid. ( Sin embargo, no era necesario ejecutar adb como sudo para mi Viewsonic G-Tablet).

  2. Mis otros dos elementos se resolvieron implementando la regla udev como sugirió RivieraKid (desde este enlace ).

MountainX
fuente
posible duplicado de Ubuntu: depuración del dispositivo Android
EboMike
El artículo # 1 realmente me ayudó. No estoy seguro sobre el artículo # 2
Francisco Quintero
Posible duplicado del dispositivo configurado para el desarrollo (?????? sin permisos)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Respuestas:

87

Una cosa que no probé fue editar /etc/udev/rules.d/70-android.rules. ¿Es probable que ese sea el problema?

¿Alguna razón en particular por la que no hiciste eso? Para responder a la pregunta - ¡SÍ! Las reglas de udev son las que informan a Ubuntu cuál es su dispositivo y, por lo tanto, permiten que las herramientas de espacio de usuario accedan a él.

No podrá utilizar adb sin seguir correctamente las instrucciones .

Sin embargo, con eso en mente, no dice qué versión de Ubuntu está usando, pero tuve problemas con la 10.10; avíseme si necesita que publique el contenido de mi archivo de reglas.

No se preocupe por ejecutar adb a través de sudo, no lo necesita. La MODE="0666"regla from the udev le permite acceder al dispositivo como cualquier usuario.


EDITAR:

No olvide recargar las reglas:

sudo udevadm control --reload-rules

EDITAR # 2:

Como @Jesse Glick señala correctamente, si adb ya se está ejecutando en modo daemon, también deberá reiniciarlo para que esto funcione:

sudo adb kill-server

He usado sudo aquí, ya que eso garantizará que adb sea eliminado, y es el método oficialmente admitido para detener el servidor. Se reiniciará automáticamente la próxima vez que se use adb, pero esta vez con el entorno correcto.

RivieraKid
fuente
1
Gracias por el que enlace . No estoy seguro de cómo me perdí el hecho de que esas instrucciones eran oficiales. Pensé que la gente estaba haciendo eso como una solución. Encontré el código de proveedor para mi Viewsonic GTablet y agregué la regla udev ¡y ahora funciona! Gracias.
MountainX
1
por alguna razón, no puedo hacer que el Motorola Droid aparezca con los dispositivos adb. Ahora puedo hacer que aparezcan el GTab y un emulador, pero no el Droid.
MountainX
Véase más arriba. Ejecutar adb como root hizo que apareciera el Moto Droid.
MountainX
$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb", SYSFS {idVendor} == "22b8", MODE = "0666" SUBSYSTEM == "usb", SYSFS {idVendor} = = "0955", MODE = "0666"
MountainX
1
… Y necesita reiniciar el adbdemonio, si se estaba ejecutando antes.
Jesse Glick
22

Debe reiniciar el servidor adb como root. Vea aquí .

EboMike
fuente
no funcionó. Detalles: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX
adbno está en el camino de su superusuario. Ingrese which adbpara averiguar en qué ruta se encuentra, luego agréguelo a la ruta de root.
EboMike
Espero que puedas leer esto. (No sé cómo dar formato a los comentarios para incluir nuevas líneas). Adb IS en la ruta de mi usuario root. Pegué el comando which adb en mi publicación original. La ruta es / opt / android-sdk-linux_x86 / platform-tools / adb. $ sudo -s root @ desktop: # echo $ RUTA / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / X11R6 / bin: / opt / android-sdk-linux_x86 / tools: / opt / android-sdk-linux_x86 / platform-tools
MountainX
1
He aquí una cosa extraña. Obtengo resultados diferentes de "which adb" dependiendo de si lo ejecuto como root o con sudo. Aquí está la salida $ sudo que adb $
MountainX
Especifique la ruta completa cuando ejecute adb como root.
EboMike
13

En mi sistema Linux Gentoo / Funtoo tengo problemas similares:

No siempre obtengo la descripción correcta del dispositivo y los permisos insuficientes:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

Para mí ayuda el cómo de Google. En mi caso, necesitaba agregar la regla udev:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

y configurar los derechos del sistema de archivos

# chmod a+r /etc/udev/rules.d/51-android.rules

Después de volver a conectar mi teléfono inteligente, el acceso al teléfono fue exitoso, también aparece ahora en el Selector de dispositivo Android de Eclipse:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

También debe verificar la membresía de su usuario al grupo plugdev.

larkee
fuente
3

Cada respuesta que he leído indica el SUBSYSTEM=="usb". Sin embargo, mi udev (quizás antiguo) necesitaba que se cambiara a DRIVER=="usb". Por fin puedo ejecutar el servidor adb como un usuario no root ... yay.

Puede ser instructivo observar la salida de udevmonitor --env, seguida de la salida de

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>
luego
fuente
Si udevmonitory udevinfono existen en su máquina, use udevadm monitory en su udevadm info -a -p ...lugar.
Ash
2

Tenga en cuenta que los IDE como IntelliJ IDEA tienden a iniciar su propio servidor adb.

Incluso matar manualmente el servidor y ejecutar una nueva instancia con sudo no ayudará aquí hasta que haga que su IDE elimine el servidor.

sebastianwagner
fuente
2

reiniciar el servidor adb como root funcionó para mí. ver:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload
Keredson
fuente
Yo también: Linux Mint Serena 18.1 con HTC Sensation. Alerta de novato: he estado hablando durante 2 días con esto, por lo que es casi seguro que las cosas se rompan
Aethelbald
0

HTC One m7 con Cyanogenmod 11 nuevo.

El teléfono está conectado por USB y está conectando mi conexión de datos.

Entonces recibo esta sorpresa:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

SOLUCIÓN: APAGUE el anclaje a red en el teléfono.

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device
cenicero
fuente
-3

Acabo de tener la misma situación, el restablecimiento de datos de fábrica funcionó bien para mí.

Andrii Krokhin
fuente
Seguramente esto es un comentario.
Matthew Taylor
culpa mía. Quería decir que restablecer el dispositivo y limpiar los datos me ha funcionado bien.
Andrii Krokhin