Dispositivo Android Debug Bridge (adb) - sin permisos [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Tengo un problema al conectar el HTC Wildfire A3333 en modo de depuración con mi Fedora Linux 17. Adb dice:

./adb devices
List of devices attached 
????????????    no permissions

Mis reglas udev (primera regla para Samsung que funciona bien y segundo para HTC que es no):

SUBSYSTEM=="usb",SYSFS{idVendor}=="04e8",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev" 
SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev"

Para dispositivos Samsung todo está bien:

 ./adb devices
List of devices attached 
00198a9422618e  device

He estado probando todas las respuestas dadas en un hilo simmilar sin suerte: Usando HTC wildfire para el desarrollo de Android

Author: Alex P., 2013-01-22

20 answers

Acabo de tener este problema bajo Debian Wheezy. Reinicié el demonio adb con sudo:

sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb devices

Todo está funcionando:)

 336
Author: Leon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-03 10:56:52

La causa de ese problema tiene que ver con los permisos del sistema (gracias @ IsaacCisneros por esta sugerencia). De alguna manera HTC Wildfire (y tal vez los demás) necesitan algo más del sistema que los dispositivos Samsung. Una solución simple es ejecutar Eclipse como root, pero esto no es muy cómodo con sistemas Linux no sudo como Fedora.

He encontrado otra forma de lograr el mismo objetivo, que parece ser más fácil de usar y es un agujero de seguridad menor que ejecutar todo el IDE con super privilegios de usuario. Mente esto sigue siendo solo una solución del problema. El uso de la raíz del sistema debe minimizarse solo para tareas administrativas, y" adb " fue diseñado para trabajar con una cuenta de usuario normal sin SUID. A pesar del hecho de que la configuración adecuada de SUID es bastante segura, cada aumento de permisos es un agujero de seguridad potencial del sistema.

1.Configuración de la propiedad del binario adb (owner-root, owner group-user_group):

chown root:user_group adb

2.Configuración de permisos con SUID:

chmod 4550 adb

Esto debería resultar algo similar a esto (ls-llh):

-r-sr-x---. 1 root user_name 1.2M Jan 8 11:42 adb

Después de que usted será capaz de ejecutar adb como un root, evento aunque usted estará utilizando su cuenta de usuario normal. Puede ejecutar Eclipse como un usuario normal y su HTC debe ser descubierto correctamente.

./adb devices 
List of devices attached 
HT0BPPY15230    device 
 103
Author: Kristopher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-23 11:36:48

Tengo un problema similar:

$ adb devices
List of devices attached 
4df15d6e02a55f15    device
????????????    no permissions

Investigación

Si corro lsusb, puedo ver qué dispositivos he conectado y dónde:{[12]]}

$ lsusb
...
Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ...
Bus 002 Device 049: ID 18d1:4e42 Google Inc. 

Esto está mostrando mi Samsung Galaxy S3 y mi Nexus 7 (2012) conectado.

Comprobando los permisos en esos:

$ ls -l /dev/bus/usb/002/{049,050}
crw-rw-r--  1 root root    189, 176 Oct 10 10:09 /dev/bus/usb/002/049
crw-rw-r--+ 1 root plugdev 189, 177 Oct 10 10:12 /dev/bus/usb/002/050

Espera. ¿Qué? ¿De dónde vino ese grupo de "Plugdev"?

$ cd /lib/udev/rules.d/
$ grep -R "6860.*plugdev" .
./40-libgphoto2-2.rules:ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", \
  ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
  ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
./40-libgphoto2-2.rules:ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", \
  ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
  ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"

(He envuelto esas líneas)

Note las líneas GROUP="plugdev". También tenga en cuenta que esto no trabajo para el otro ID de dispositivo:

$ grep -Ri "4e42.*plugdev" .

(no se devuelve nada)

Fijándolo

OK. ¿Cuál es la solución?

Añadir una regla

Cree un archivo /etc/udev/rules.d/99-adb.rules que contenga la siguiente línea:

ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_GPHOTO2}="1",
  ENV{GPHOTO2_DRIVER}="proprietary", ENV{ID_MEDIA_PLAYER}="1",
  MODE="0664", GROUP="plugdev"

Esto debe ser una sola línea, lo he envuelto aquí para la legibilidad

Reiniciar udev

$ sudo udevadm control --reload-rules
$ sudo service udev restart

Eso es todo

Desenchufe/vuelva a conectar el dispositivo.

Pruébalo

$ adb devices
List of devices attached 
4df15d6e02a55f15    device
015d2109ce67fa0c    device
 86
Author: Roger Lipscombe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-10 09:28:57

Usted udev regla parece equivocado. Usé esto y funcionó:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

(ATTR en lugar de SYSFS)

 36
Author: Michaël Witrant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-03 12:48:18

Bajo ubuntu 12.04, eclipse juno. Me enfrento al mismo problema. Esto es lo que encontré en Yi Yu Blog

La solución es la misma que la de León

sudo -s
adb kill-server
adb start-server
adb devices
 24
Author: Chan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-10 05:44:18

La respuesta de Stephan funciona (usando sudo adb kill-server), pero es temporal. Debe ser re-emitido después de cada reinicio.

Para una solución permanente, la configuración udev debe ser modificada:

La respuesta de Witrant es la idea correcta (copiada de la documentación oficial de Android). Pero es solo una plantilla. Si eso no funciona para su dispositivo, debe completar el ID de dispositivo correcto para su(s) dispositivo (s).

lsusb

Bus 001 Device 002: ID 05c6:9025 Qualcomm, Inc.
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
...

Encuentra tu dispositivo android en el lista.

Luego use la primera mitad del ID (4 dígitos) para el idVendor (la última mitad es el idProduct, pero no es necesario que adb funcione).

sudo vi /etc/udev/rules.d/51-android.rules y agregue una regla para cada idVendor único:

SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"

Es así de simple. Usted no necesita todos esos otros campos dados en algunas de las respuestas. Guarde el archivo.

Luego reinicie. El cambio es permanente. (Roger muestra una forma de reiniciar udev, si no desea reiniciar).

 22
Author: Brent Faust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-19 20:54:07

...la propia respuesta del OP es incorrecta en cuanto a que no hay "permisos especiales del sistema". - El problema de "sin permiso" se reduce a ... sin permisos.

Desafortunadamente no es fácil depurar, porque adb hace que sea un secreto a qué dispositivo intenta acceder. En Linux, intenta abrir el dispositivo "USB serial converter" del teléfono, que es, por ejemplo, /dev / bus/usb/001 / 115 (su número de bus y la dirección del dispositivo variarán). Esto a veces se vincula y se usa desde / dev / android_adb.

lsusb ayudará a encontrar el número de autobús y la dirección del dispositivo. Tenga en cuenta que la dirección del dispositivo cambiará con seguridad si vuelve a conectar, al igual que el número de bus si el puerto se confunde sobre qué velocidad usar (por ejemplo, un puerto físico termina en un bus lógico u otro).

Una línea lsusb se parece a esta: Bus 001 Dispositivo 115: ID 4321: fedc bla bla bla

lsusb -v podría ayudarle a encontrar el dispositivo si el" bla bla bla " no es pista suficiente (a veces lo hace contiene ni el fabricante, ni el modelo del teléfono).

Una vez que conozca el dispositivo, compruebe con sus propios ojos que ls -a /dev/bus/usb/001/115 es realmente accesible para el usuario en cuestión! A continuación, compruebe que funciona con chmod y arregle su configuración udev.

PS1: /dev/android_adb solo puede apuntar a un dispositivo, así que asegúrate de que hace lo que quieres.

PS2: No relacionado con esta pregunta, pero menos conocido: adb tiene una lista fija de ID de proveedor que pasa a través. Esta lista se puede ampliar desde ~/.android / adb_usb.ini, que debe contener 0x4321(si seguimos mi ejemplo lsusb línea de arriba). - No es necesario aquí, ya que ni siquiera obtiene un "sin permisos" si no se conoce la identificación del proveedor.

 22
Author: Robert Siemer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-10 10:52:03

Cambiar el modo USB del teléfono hizo el truco para mí. (Lo configuré como Transferencia de archivos)

 12
Author: NuttLoose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-12 02:59:49

Voy a anteponer este postscript aquí en la parte superior para que no se pierda en mi explicación anterior.

Puedo producir y resolver de manera confiable el problema de no permisos simplemente cambiando el tipo de conexión USB de Cámara (PTP) a dispositivo multimedia (MTP). El modo de cámara permite la depuración; el modo de medios causa la respuesta sin permisos en ADB.

El razonamiento parece bastante evidente después de reflexionar sobre eso por un momento. Contenido no seguro en el dispositivo sería accesible por el depurador en modo servidor multimedia.

===========

El dispositivo no está activado hasta que acepte la advertencia de cifrado RSA en el dispositivo depurado. En algún momento después de la conexión, el dispositivo le pedirá que acepte la conexión de depuración. Es un protocolo de seguridad mínima que garantiza que pueda acceder al dispositivo más allá del bloqueo de deslizamiento inicial. El modo de desarrollador debe estar habilitado, creo.

La bandera "sin permisos" es en realidad un buen primer indicador que adb reconoce la dispositivo como objetivo de depuración válido. Tenga en cuenta que no lista sus otros dispositivos USB.

Detalles en las páginas siguientes y relacionadas.

Http://developer.android.com/tools/device.html

 8
Author: MikeW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-14 04:54:42

El mismo problema con Pipo S1S después de actualizar a 4.2.2 stock rom Jun 4.

$ adb devices
List of devices attached  
????????????    no permissions

Todas las sugerencias anteriores, si bien son válidas para que su dispositivo USB sea reconocido, no resuelven el problema para mí. (Android Debug Bridge versión 1.0.31 ejecutándose en Mint 15.)

Actualizando las herramientas del sdk de Android, etc. se restablece ~/.android/adb_usb.ini.

Para reconocer Pipo VendorID 0x2207 siga estos pasos

Añadir a la línea /etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="0x2207", MODE="0666", GROUP="plugdev"

Añadir línea a ~/.android/adb_usb.ini:

0x2207

Luego elimine la clave adb files

rm -f ~/.android/adbkey ~/.android/adbkey.pub

Y vuelva a conectar el dispositivo para reconstruir los archivos clave con una conexión adb correcta. Algunos dispositivos pedirán volver a autorizar.

sudo adb kill-server
sudo adb start-server   
adb devices
 7
Author: Dorian Carlill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-18 20:31:37

Me encontré con el mismo problema hoy.

Seguí las instrucciones oficiales , pero no me di cuenta de que DEBERÍA ejecute el comando
"chmod a+r /etc/udev/rules.d / 51-android.reglas"

Después de establecer este archivo en el mundo legible y volver a conectar mi cable usb,el estado se convirtió en no autorizado. Entonces sólo concede el permiso y todo va bien.

 3
Author: VicX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-28 15:36:15

Estoy de acuerdo con Robert Siemer y Michaël Witrant. Si no funciona, intente depurar con strace

strace adb devices

En mi caso, ayuda a matar todas las instancias y eliminar el archivo de socket /tmp/ADB_PORT (el valor predeterminado es /tmp/5037).

 2
Author: pevik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-06 19:36:41

Otra posible fuente de este problema es la conexión USB. Si ha utilizado USB tethering, apáguelo, luego desenchufe el dispositivo de USB, vuelva a conectarlo y luego haga

adb kill-server
adb devices

Eso hizo el truco en mi caso (Ubuntu 12.04, Nexus S, SDK en home dir, nunca necesitó root para ejecutarlo). Dependiendo de su dispositivo, es posible que necesite ejecutar adb devices como root, sin embargo.

 1
Author: user149408,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-24 12:05:38

Pruebe el comando "android update adb". Me ayuda con samsung galaxy gear.

 1
Author: Alex Kutsko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-15 13:59:35

La salida de ls -al /usr/bin/adb debería mostrar que es propiedad de user root y group root. Puede utilizar Linux ACL (Listas de Control de Acceso) para dar a sus permisos de usuario local para adb de la siguiente manera:

setfacl -m "u:userName:rwx" /usr/bin/adb

Esto es preferible a establecer el bit SUID en /usr/bin/adb y también limita los usuarios que pueden usar adb a userName y root.

 1
Author: Jun_in_Jeju,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-16 06:24:56

Tuvo el mismo problema. Fue un problema con las reglas de udev. Probé algunas de las reglas mencionadas anteriormente, pero no solucionó el problema. He encontrado un conjunto de reglas aquí, https://github.com/M0Rf30/android-udev-rules . Siguió a la guía allí y, voila, fijo.

 1
Author: Anish Unnikrishnan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-18 04:45:12

La respuesta está entretejida entre los diversos posts aquí, lo haré lo mejor que pueda, pero parece una razón muy simple y obvia.

1) es que generalmente hay una variable "user" en la regla udev algo como USER = "your_user" probablemente justo después del GROUP = "plugdev"

2) Necesita usar los valores correctos SYSFS{idVendor}=="### # " y SYSFS{idProduct} = = "### # " para su dispositivo / s. Si tiene dispositivos de más de una fabricación, digamos como uno de Samsung y uno de HTC, entonces usted necesita tener una entrada (regla) para cada proveedor, no una entrada para cada dispositivo, pero para cada proveedor diferente que va a utilizar, por lo que necesita una entrada para HTC y Samsung. Parece que tienes tu entrada para Samsung ahora necesitas otra. Recuerde que el USUARIO="tu_usuario>". Usa 'lsusb' como Robert Seimer sugiere para encontrar el idVendor y el idProduct, suelen ser algunos números y letras en este formato X#X#:#X # X Creo que el primero es el idVendor y el segundo idProduct pero tu vas a necesitar para hacer esto para cada marca de teléfono / tableta que tiene.

3) No he descubierto cómo 51-adb.rules and 99-adb.las reglas son diferentes o por qué.

4) tal vez intente agregar el grupo "plugdev" a su usuario con "usermod-a-G plugdev your_user", Intente eso bajo su propio riesgo, aunque no creo que sea más riesgoso que lanzar una gui como root, pero creo que si es necesario debería al menos usar "gksudo eclipse" en su lugar.

Espero que ayudó a aclarar algunas cosas, la sintaxis de las reglas udev es un poco de un misterio para mí también, pero por lo que he oído que puede ser diferente para diferentes sistemas, así que pruebe algunas cosas, uno se comió una vez, y observe qué cambio funciona.

 0
Author: Overloaded_Operator,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-09 04:59:35
  1. Cerrar ejecutando adb, podría estar cerrando ejecutando android-studio.

  2. Lista de dispositivos,

/usr/local/android-studio/sdk/platform-tools/adb devices

 0
Author: prayagupd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-27 17:46:46

En THL W100 ejecutar el dispositivo como root (como se describió anteriormente) solo funcionó junto con tethering habilitado (usé AirDroid para eso).

 -1
Author: mary jane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-07 15:52:45

Tuve la misma situación en la que tres dispositivos conectados a un mismo host, pero solo uno tenía 'sin permisos' otros estaban en línea.

Agregar SUID o SGID en adb fue otro problema para mí. Dispositivos que se ven sin conexión cada vez que se reinicia adb , hasta que se reconoce en los dispositivos cada vez.

Resolví este problema de 'sin permisos' agregando el permiso 'o+w' para un archivo de dispositivo.

Chmod o + w/dev/bus/usb / 00n / xxx

 -1
Author: Kenichi Takemura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-12 10:19:44