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
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.