Il comando adb devices non funziona


86

Uso Ubuntu 10.10 a 64 bit. Ho ia32-libs installato insieme ad Android Debug Bridge versione 1.0.26.

I miei problemi:

  1. adb devices>>> ???????????? nessun permesso
  2. sudo adb devices >>>> sudo: adb: comando non trovato
  3. adb shell >>> errore: autorizzazioni insufficienti per il dispositivo

Immagino che siano tutti correlati. Ecco le informazioni rilevanti.

$ 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

Ottengo gli stessi risultati con un Moto Droid con root che esegue CM6.1 e un G-Tab con root che esegue una ROM basata su CM7.

Ho esaminato i seguenti post correlati:

Ho provato la maggior parte (non tutti) i suggerimenti e non sono stato in grado di risolvere il mio problema. Le cose che non ho provato mi sembravano inappropriate. Gradirei qualche altro suggerimento e continuerò a risolvere i problemi.

Una cosa che non ho provato è stata la modifica di /etc/udev/rules.d/70-android.rules. È probabile che sia questo il problema? Non riesco a vedere come ciò causerebbe "sudo: adb: comando non trovato". Forse i miei problemi non sono tutti correlati. Comunque, a questo punto penso di aver bisogno di input da altre persone perché non credo di avere un problema di percorso o altri problemi comuni discussi in quegli altri post.

EDIT: RISOLTO grazie a EboMike e RivieraKid. In realtà si trattava di due problemi diversi:

  1. L'elemento n. 2 sopra (sudo: adb: comando non trovato) è stato risolto creando un collegamento simbolico come segue:

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

    Ciò mi ha permesso di fare come suggerito da EboMike e di utilizzare questa soluzione . Ciò era necessario per il mio Moto Droid. ( Tuttavia, l' esecuzione di adb come sudo non era richiesta per il mio G-Tablet Viewsonic.)

  2. I miei altri due elementi sono stati risolti implementando la regola udev come suggerito da RivieraKid (da questo collegamento ).



L'articolo # 1 mi ha davvero aiutato. Non sono sicuro dell'articolo n. 2
Francisco Quintero

Risposte:


87

Una cosa che non ho provato è stata la modifica di /etc/udev/rules.d/70-android.rules. È probabile che sia questo il problema?

Qualche motivo particolare per cui non l'hai fatto? Per rispondere alla domanda - SÌ! Le regole udev sono ciò che informa Ubuntu qual è il tuo dispositivo e consente quindi agli strumenti dello spazio utente di accedervi.

Non sarai in grado di utilizzare adb senza seguire correttamente le istruzioni .

Con questo in mente, tuttavia, non dici quale versione di Ubuntu stai utilizzando ma ho avuto problemi con la 10.10 - fammi sapere se hai bisogno che io pubblichi il contenuto del mio file di regole.

Non preoccuparti di eseguire adb tramite sudo, non ne hai bisogno. La MODE="0666"regola from the udev ti consente di accedere al dispositivo come qualsiasi utente.


MODIFICARE:

Non dimenticare di ricaricare le regole:

sudo udevadm control --reload-rules

MODIFICA # 2:

Come sottolinea correttamente @Jesse Glick, se adb è già in esecuzione in modalità daemon, dovrai anche riavviarlo affinché funzioni:

sudo adb kill-server

Ho usato sudo qui, poiché ciò garantirà che adb verrà ucciso, ed è il metodo ufficialmente supportato per arrestare il server. Verrà riavviato automaticamente la prossima volta che viene utilizzato adb, ma questa volta con l'ambiente corretto.


1
Grazie per il collegamento . Non sono sicuro di come mi sia sfuggito il fatto che quelle istruzioni fossero ufficiali. Pensavo che le persone lo facessero come una soluzione. Ho trovato il codice del fornitore per il mio Viewsonic GTablet e ho aggiunto la regola udev e ora funziona! Grazie.
MountainX

1
per qualche motivo non riesco a far apparire il Motorola Droid con i dispositivi adb. Ora posso far apparire il GTab e un emulatore, ma non il Droid.
MountainX

Vedi sopra. L'esecuzione di adb come root ha causato la visualizzazione di 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
... e devi riavviare il adbdemone, se era in esecuzione prima.
Jesse Glick

22

È necessario riavviare il server adb come root. Vedi qui .


non ha funzionato. Dettagli: 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

adbnon è nel percorso del tuo superutente. Invio which adbper scoprire in quale percorso si trova, quindi aggiungilo al percorso di root.
EboMike

Spero che tu possa leggere questo. (Non so come formattare i commenti per includere le nuove righe.) Adb IS nel percorso del mio utente root. Ho incollato il comando which adb nel mio post originale. Il percorso è / opt / android-sdk-linux_x86 / platform-tools / adb. $ sudo -s root @ desktop: # echo $ PATH / 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
Ecco una cosa strana. Ottengo risultati diversi da "quale adb" a seconda che lo esegua come root o lo esegua con sudo. Ecco l'output $ sudo che adb $
MountainX

Specifica quindi il percorso completo quando esegui adb come root.
EboMike

13

Sul mio sistema Linux Gentoo / Funtoo sto riscontrando problemi simili:

Ho sempre una descrizione del dispositivo non corretta e autorizzazioni insufficienti:

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

Per me aiuta l' howto di Google. Nel mio caso avevo bisogno di aggiungere la regola udev:

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

e impostare i diritti del filesystem

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

Dopo aver ricollegato il mio smartphone, l'accesso al telefono è andato a buon fine, ora appare anche in Scelta dispositivi Android di Eclipse:

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

Devi anche controllare l'appartenenza del tuo utente al plugdev -group.


3

Ogni risposta che ho letto indica il SUBSYSTEM=="usb". Tuttavia, il mio (forse antico) udev aveva bisogno di cambiarlo DRIVER=="usb". Finalmente posso eseguire il server adb come utente non root ... yay.

Può essere istruttivo guardare l'output di udevmonitor --env, seguito dall'output di

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

Se udevmonitore udevinfonon esistono sulla tua macchina, usa udevadm monitore udevadm info -a -p ...invece.
Ash

2

Tieni presente che IDE come IntelliJ IDEA tendono ad avviare il proprio adb-server.

Anche l'uccisione manuale del server e l'esecuzione di una nuova istanza con sudo non aiuterà qui fino a quando non fai in modo che il tuo IDE uccida il server stesso.


2

riavviare il server adb come root ha funzionato per me. vedere:

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

Anch'io: Linux Mint Serena 18.1 con HTC Sensation. Avviso di Noob: sono stato 2 giorni a lamentarmi con questo, quindi le cose sono quasi certamente distrutte
Aethelbald


0

HTC One m7 con Cyanogenmod 11 fresco.

Il telefono è collegato tramite USB e sta effettuando il tethering della connessione dati.

Poi ho questa 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

SOLUZIONE: disattivare il tethering sul telefono.

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

-3

Ho appena avuto la stessa situazione, il ripristino dei dati di fabbrica ha funzionato bene per me.


Sicuramente questo è un commento?
Matthew Taylor

colpa mia. Volevo dire che il ripristino del dispositivo e la pulizia dei dati hanno funzionato bene per me.
Andrii Krokhin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.