Come posso rilevare il mio dispositivo da ADB su Linux?


18

Ho appena ricevuto il mio nuovo brillante Wileyfox Swift - e prima di metterlo in uso lo voglio oem unlocke eseguo il root (come faccio di solito con i nuovi dispositivi;) Il problema è, sebbene il sia abilitato sul dispositivo ed /etc/udev/rules.d/51-android.rulesesiste una linea corrispondente in , il dispositivo non è visto da adb devices.

So che ci sono diverse risposte sparse in questo sito, ma sono difficili da trovare, coprono solo un dispositivo specifico o non coprono tutti i passaggi di cui avevo finalmente bisogno. Quindi prendo questo come un'opportunità per una domanda canonica indipendente dal dispositivo e fornisco una risposta dettagliata di seguito:

Come posso vedere e utilizzare adbil mio dispositivo Android su Linux?


Sono sempre aperto alle critiche, ma un voto negativo senza spiegazioni è difficile da interpretare. Quindi il downvoter potrebbe spiegare cosa dovrebbe essere migliorato sulla domanda? Prometto di non abusare dei miei poteri mod per punizione :)
Izzy

3
Suppongo che l'elettore non si sia reso conto che hai pubblicato la domanda per risponderti (non averti notato nella risposta). Poiché non vi è alcun suggerimento nella domanda o nei commenti che è stato pubblicato allo scopo di auto-rispondere, l'elettore potrebbe aver obiettato al penultimo paragrafo (mostra la pigrizia, se letto nel contesto di qualsiasi utente ordinario e la sua domanda). Non riesco a pensare a nessun altro motivo per ora.
Firelord

1
@Firelord sembra convincente (modificato un po 'la domanda per evitare ulteriori errori). Ma poi, quell'utente avrebbe dovuto votare la risposta. O mi sono perso qualcosa anche lì? ;)
Izzy

Risposte:


24

Abilita il debug USB sul dispositivo

Questo viene fatto in Impostazioni ›Sviluppo . Se non hai quella voce nel menu delle impostazioni, vai su Impostazioni ›Informazioni , scorri fino a" Numero build "e martellalo come una scimmia fino a quando il tuo dispositivo si congratula con te per essere diventato uno sviluppatore. Torna alla pagina principale del menu Impostazioni e vicino al fondo dovresti vedere ora le impostazioni "Sviluppo" (o "Sviluppatori"). Inseriscilo e abilita il debug USB qui.

Identifica il dispositivo

Innanzitutto dobbiamo sapere come si identifica il dispositivo sul bus USB. Per questo, con il dispositivo Android NON connesso, prendi una shell ed esegui il comando lsusb. Quindi collegare il dispositivo ed eseguire nuovamente il comando. Trova la nuova linea. Per Wileyfox Swift questo è un "dispositivo senza nome":

Bus 004 Device 003: ID 2970:2282

Impostazione delle regole per ADB

Abbiamo ora bisogno i numeri alla fine della riga sopra: 2970:2282. Questi specificano il fornitore (2970) e il dispositivo stesso (2282). Avendo questi dettagli, abbiamo bisogno di una shell di root sulla nostra macchina Linux per modificare (o creare, se non esiste ancora) il /etc/udev/rules.d/51-android.rulesfile. Lì, aggiungi una linea per il tuo dispositivo. La seguente riga di esempio mostra come appare Wileyfox Swift: ¹

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Se hai un dispositivo diverso, sostituisci il fornitore e gli ID prodotto con quello che hai trovato sopra durante l'esecuzione lsusb. Una breve spiegazione della linea:

  • SUBSYSTEMS=="usb": ovviamente questa regola è solo per USB;)
  • ATTRS{idVendor}=="2970": l'ID fornitore del dispositivo per cui questa regola è valida
  • ATTRS{idProduct}=="2282": l'ID del dispositivo
  • MODE="0666": autorizzazioni che devono ottenere il nodo del dispositivo. 0666è piuttosto lassista, dare a tutti gli utenti del tuo sistema i permessi di lettura e scrittura - quindi se sei preoccupato, potresti provare a sostituirlo con un 0660(dare solo il proprietario e il gruppo a leggere e scrivere e negare tutto agli altri).
  • GROUP="androiddev": a quale gruppo deve appartenere il nodo del dispositivo. Questo dovrebbe essere un gruppo a cui gli utenti intendono lavorare con il dispositivo.
  • SYMLINK+="android%n": solo per dare al nodo un bel nome, così puoi trovarlo più facilmente in /dev(nel mio caso, in seguito è apparso lì come /dev/android5)

Quella regola è entrata /etc/udev/rules.d/51-android.rules, dobbiamo dire udevdi farne uso. Il modo più sicuro (accanto al riavvio;) è il riavvio del udevservizio. A seconda della distribuzione Linux, questo può essere fatto tramite service udev restarto /etc/init.d/udev restart.

Fatto ciò, lascia la shell di root. Disconnetti e riconnetti il ​​tuo dispositivo Android, riprova adb devices. La maggior parte dei dispositivi è ora disponibile, ma non il Wileyfox Swift - che ovviamente vuole delle coccole extra. Se ti trovi in ​​quella situazione, apri (o crea se non esiste) il file ~/.android/adb_usb.inie aggiungi una sola riga, nominando il fornitore che hai scoperto lsusbsopra; per lo Swift che sarebbe 0x2970(yupp, qui devi prefissarlo indicando 0xche è un numero esadecimale). Quindi riavviare il server ADB: adb kill-server && adb start-server. Scollegare e ricollegare il dispositivo. Adesso adb devicesdovrebbe vederlo.

Connessione del dispositivo

Potresti aver notato adb devicesche ti ha detto qualcosa del genere 0123456789ABCDEF unauthorized. Va bene e per la tua (dispositivi) sicurezza: il tuo computer deve prima essere autorizzato per poter accedere al dispositivo. Quindi semplicemente emetti adb shellora - che verrà chiuso con un error: device unauthorized. Please check the confirmation dialog on your device.Segui questo consiglio (facoltativamente selezionare la casella di controllo per autorizzare permanentemente il tuo computer), e il gioco è fatto: ora puoi usare per accedere al tuo dispositivo.


aggiornamenti:

¹ Si noti che nelle versioni successive di Linux, la sintassi delle regole UDEV è leggermente cambiata, come ad esempio jcomeau_ictx ha sottolineato nel suo commento. Per i valori che abbiamo trovato sopra sarebbero:

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

Due differenze: è ora SUBSYSTEM(nessun plurale) e il gruppo è cambiato da androiddeva plugdev(il primo non esiste su sistemi recenti, il secondo sì e di solito è assegnato almeno al primo utente).

Inoltre, potresti dover aggiungere il vendorID al tuo ~/.android/adb_usb.ini(un ID per riga, in notazione esadecimale):

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970

1
il formato per la regola udev era diverso sul mio sistema Jessie: jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d dovevo ignorare i consigli per eseguirli android update adbe inserirli manualmente come indicato.
jcomeau_ictx,

@jcomeau_ictx grazie per il feedback! Per quanto posso vedere dal tuo commento, sta solo usando un gruppo di utenti diverso ( plugdevinvece di androiddev). Non verificato, ma direi che la parte importante qui è che è un gruppo con il quale l'utente (con cui si desidera utilizzare l'USB).
Izzy

1
inoltre, SUBSYSTEMinvece di SUBSYSTEMS, ATTRanziché ATTRSvirgola, dopo MODE="0666" non sono sicuro se tutte queste modifiche fossero necessarie, ma è quello che ha funzionato.
jcomeau_ictx,

Oh - grazie, mi sono perso quei piccoli, @jcomeau_ictx - buon punto!
Izzy

Per Linux le persone non esperte sudo wget -O /etc/udev/rules.d/51-android.rulesda qui hanno lavorato per me per il mio Xiaomi Mi A1. Ovviamente è meglio imparare ma è bello essere pigri :)
Beeshyams,

0

Alcuni commenti da una nuova distribuzione Linux. Fedora 29 con un Nexus 5X o il telefono Nokia 7.1 (Android One).

Scollegare innanzitutto il telefono, se già collegato.

  1. Installa gli strumenti Android che forniranno ADB ( sudo dnf install android-tools)
  2. Copia regole udev ( sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d)
  3. Ricarica regole udev ( sudo udevadm control --reload-rules)
  4. Riavvia ADB per essere sicuro ( sudo systemctl restart adb)

Ora collega il telefono ed eseguilo adb devicesdalla riga di comando. Probabilmente vedrai un dispositivo elencato senza "nessuna autorizzazione". Questo va bene.
Se non è elencato, dovrai aggiungere il tuo dispositivo al file delle regole udev, ma per me i dispositivi testati hanno funzionato con le regole predefinite.

Esegui adb shelle spero che riceverai una notifica di sicurezza sul telefono che ti chieda se vuoi fidarti del computer, seleziona Sì.
Se invece il tuo computer dice "errore: autorizzazioni insufficienti per il dispositivo", devi assicurarti che sul telefono sia stata impostata la porta USB in modalità "Trasferisci file" e non "Carica questo dispositivo". Su Android 8.1 questo si trova nelle impostazioni in "Dispositivi collegati"> "USB".

Ho notato che anche se oggi hai tutto funzionante, domani potrebbe improvvisamente rompersi senza una ragione apparente. In tal caso, controlla innanzitutto l'impostazione della porta USB sul dispositivo, che potrebbe essere tornata alla modalità di ricarica e, in caso contrario, revoca le autorizzazioni di debug USB sul dispositivo (nelle impostazioni in Opzioni sviluppatore) e, si spera, dovresti ottenere il pop di nuovo quando corri adb shell.

Con questo, sono in grado di eseguire Android Studio ed eseguire sul dispositivo collegato.

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.