adb sem permissões no Ubuntu 17.04

48

Quando tento:

$ adb devices

eu recebo o resultado:

List of devices attached 
????????????    no permissions

qual é o problema?

tentei em uma máquina Ubuntu 16.04 e funcionou perfeitamente. tentei um dispositivo 7.1.1 e também funcionou perfeitamente.

Nadav Tasher
fonte
Tente sudo adb devices. Se isso funciona muito bem, mas a partir da memória, não precisei ser root para verificar se há dispositivos conectados.
shmink
1
ele não funcionará com o sudo, mas com o login root ele funcionará. o problema é que o android studio apenas pré-forma adb a partir de uma sessão não raiz e, executando-o com jksudo, não reconhece meus arquivos.
Nadav Tasher
Eu encontrei o mesmo com o Android Studio e geralmente qualquer coisa feita por jetbrains. Quando você instalou o android studio, você fez isso como root?
shmink
instalado como root em / usr / local / e chmoded para 777 -R, não execute como root para reconhecer as configurações e o sdk.
Nadav Tasher
Que tal executá-lo como root e apenas alterar as configurações e o sdk adequadamente.
shmink

Respostas:

64

Tente reiniciar o servidor Adb.

sudo adb kill-server

e depois

sudo adb start-server

em seguida, conecte seu dispositivo, ative a Depuração e digite

adb devices
Sumeet Deshmukh
fonte
2
Isso funciona .. mais ou menos. Depois disso, a execução adb devicesagora mostra o dispositivo (e eu recebo a caixa de diálogo de impressão digital). No entanto, ainda não funciona com o Android Studio. Além disso, quando executo o android studio e, a adb devicespartir de um console, obtenho um "servidor adb desatualizado" e o servidor adb é reiniciado. Depois disso, chego à situação "sem permissões" novamente.
Shade
Isso não funciona. Os dispositivos adb não mostram nada e o fone de ouvido nunca pede permissão novamente.
Tyguy7 15/10
62

Teve o mesmo problema. Garantir que o modo USB do dispositivo NÃO esteja carregando apenas o resolveu.

Ivan Klass
fonte
5
Mesmo aqui, eu modifiquei as regras do Udev sem resultados, alterei o USB para compartilhamento de arquivos e pronto. O dispositivo não exigia regras do udev ou modos USB específicos na versão anterior do ubuntu.
Fco P.
3
Esta deve ser a resposta correta (não adb servidor reiniciar)
Rumburak
1
Resposta correta para mim.
Alvaro Gutierrez Perez
1
não deve ser a resposta correta, mas funcionou.
Uzumaki D. Ichigo
1
Sim, esta é a resposta correta.
39

Muito provavelmente, o udev está adicionando incorretamente o seu dispositivo. Eu também tive esse problema e me deparei com uma solução relativamente simples.

Encontre o seu dispositivo em lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Ponto de interesse neste caso:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Confira o arquivo do dispositivo correspondente

$ ls -l /dev/bus/usb/001/006

Provavelmente você verá algo como

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Isso significa que o arquivo do dispositivo pertencerá à raiz do usuário e à raiz do grupo, e é por isso que o adb pode acessá-lo como raiz, mas não como seu usuário padrão.

Isso pode ser resolvido com a criação de uma nova regra do udev - eu usei /etc/udev/rules.d/51-android.rules- para adicionar o dispositivo ao grupo plugdev, do qual o adb já supõe que você seja um membro (você deve ser, verifique usando id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Lembre-se de substituir o ATTR {idProduct} == "4ee7" pelo seu próprio ID de produto que você descobriu na etapa um. ** (Se o seu fornecedor não for o Google Inc., substitua também o ID do fornecedor pelo número anterior aos dois pontos em lsusb).

Agora basta desconectar o dispositivo e conectá-lo novamente (o udev deve responder automaticamente ao novo arquivo) e tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Fonte: Adicionando udev regras para USB depuração dispositivos Android - Janos Gyerik

Paulo
fonte
1
Esta resposta resolveu meu problema. Perfeito, obrigado.
Alexmeia #
1
Obrigado @Paul Isso me ajudou. Bem explicado com razão. Eu acho que a reinicialização do serviço udev também é necessária.
Gagan #
este é definitivamente a solução correta, se você não quiser usar o sudo para coisas que você não deve precisar usar sudo para
aholt
Essa deve ser a resposta aceita, pois é a resposta correta . A resposta mais bem classificada é realmente apenas uma solução alternativa.
Joel Cruz
Isso resolveu para mim. Funcionou ontem sem as regras, mas depois de instalar as atualizações no ubuntu, ele parou de funcionar e eu tive que fazer isso.
simernes 13/10
2

Para expandir a resposta de Sumeet Deshmukh, sua abordagem funciona em geral - se você deseja apenas usar o adbcomando do console.

O Android Studio, no entanto, aparentemente inicia seu próprio servidor adb, matando o nosso. Isso significa que, após matar / iniciar o servidor com o sudo, o Studio o reinicia, o que leva à situação inicial - sem permissões.

A solução é primeiro iniciar o Studio e, em seguida, executar o start / stop do servidor. Com isso, consegui fazer com que o meu Nexus 5X aparecesse como um destino de execução válido no Studio.

Essa não é a melhor situação (ter que executar comandos toda vez que você inicia o Studio), mas executa o truque de maneira rápida e suja. Se eu encontrar uma solução mais permanente, atualizarei esta resposta.

Sombra
fonte
muito obrigado, embora tenha sido um bug corrigido por uma atualização do sistema (no telefone) e atualização do estúdio.
Nadav Tasher
2

Alterar o modo USB do telefone fez o truque para mim. (Configurei para Transferência de arquivos .)

NuttLoose
fonte
2

Por favor, NÃO siga soluções sugerindo o usosudo ( sudo adb start-server)! Este adb é executado como root (administrador) e NÃO deve ser executado assim !!! É uma solução ruim !

Tudo o que é executado como root pode fazer qualquer coisa no seu sistema, se ele criar ou modificar um arquivo, poderá alterar sua permissão para ser usado apenas pelo root. Mais uma vez, NÃO!

A coisa certa a fazer é configurar seu sistema para fazer com que o USUÁRIO tenha permissão, confira este guia que escrevi sobre como fazê-lo corretamente.

Daniele Segato
fonte
2

Não funcionou para mim depois que me adicionei ao plugdevgrupo e reinicializei a máquina apenas para garantir que a alteração tenha efeito em todas as minhas sessões de shell. Descobri então que não há nenhum 51-android.rulesarquivo /etc/udev/rules.de tive que fazer o seguinte para corrigir o problema:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

Eu também tive que desconectar e reconectar meu dispositivo Android.

russoue
fonte
Isso também não funciona para mim ...
Tyguy7 15/10
1

Você precisa fornecer permissão no seu dispositivo Android. Vá para Configurações> Opções do desenvolvedor. Tente desativar a depuração do USB e ligue-a novamente. Remova o cabo e reconecte-o. Tente também excluir todas as autorizações salvas das opções do desenvolvedor. Agora, ele deve solicitar permissão de depuração por um prompt no seu telefone. Aceite isso.

Joel G Mathew
fonte
não funciona, eu já tentei, se importa, estou usando o Android 7.1.2 e em outro dispositivo que esteja executando o 7.1.1, funcionou.
Nadav Tasher
Tentou excluir todas as autorizações de host? Reiniciado depois disso?
Joel G Mathew
não foi reiniciado. vou tentar e dizer se funcionou.
Nadav Tasher
Se funcionou, você pode aceitar a resposta.
Joel G Mathew
verificação de hoje mais tarde hoje
Nadav Tasher 26/04
0

Eu não tenho idéia do por que isso funciona, mas essa foi a única solução que funcionou para mim

Descubra onde o adb está sendo executado (se você é como eu, tem várias versões instaladas). Lembre-se de que ferramentas como o reagir nativo podem decidir usar outras versões aleatórias para tornar sua vida mais difícil. Para mim é ~/Android/Sdk/platform-tools/adb. Então eu vou correr:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

As ferramentas do Android são super irritantes.

Bufke
fonte
0

Vá para Configurações >> Manutenção >> Armazenamento. Em seguida, verifique o menu superior esquerdo e clique em Conexão USB do computador, depois mude para Dispositivo de mídia (MTP).

Charloh Maguri Jnr
fonte