Perintah adb devices tidak berfungsi

86

Saya menjalankan Ubuntu 10.10 64 bit. Saya telah menginstal ia32-libs bersama dengan Android Debug Bridge versi 1.0.26.

Masalah saya:

  1. adb devices>>> ???????????? tidak ada izin
  2. sudo adb devices >>>> sudo: adb: perintah tidak ditemukan
  3. adb shell >>> kesalahan: izin tidak cukup untuk perangkat

Saya kira ini semua terkait. Berikut info yang relevan.

$ 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

Saya mendapatkan hasil yang sama dengan Moto Droid yang di-rooting yang menjalankan CM6.1 dan G-Tab yang di-rooting yang menjalankan ROM berbasis CM7.

Saya telah meninjau posting terkait berikut:

Saya mencoba sebagian besar (tidak semua) saran dan saya belum dapat menyelesaikan masalah saya. Hal-hal yang tidak saya coba sepertinya tidak pantas. Saya akan menghargai beberapa tip lagi dan saya akan terus memecahkan masalah.

Satu hal yang tidak saya coba adalah mengedit /etc/udev/rules.d/70-android.rules. Mungkinkah itu masalahnya? Saya tidak dapat melihat bagaimana hal itu akan menyebabkan "sudo: adb: command not found". Mungkin masalah saya tidak semuanya terkait. Bagaimanapun, pada titik ini saya rasa saya perlu masukan dari orang lain karena saya tidak yakin saya memiliki masalah jalur atau masalah umum lainnya yang dibahas di posting lain itu.

EDIT: TERSELESAIKAN berkat EboMike dan RivieraKid. Ini sebenarnya dua masalah yang berbeda:

  1. Item # 2 di atas (sudo: adb: command not found) diselesaikan dengan membuat symlink sebagai berikut:

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

    Itu memungkinkan saya untuk melakukan apa yang disarankan EboMike dan menggunakan solusi ini . Melakukan itu diwajibkan untuk Moto Droid saya. (Namun, menjalankan adb sebagai sudo tidak diperlukan untuk Viewsonic G-Tablet saya.)

  2. Dua masalah saya yang lain diselesaikan dengan menerapkan aturan udev seperti yang disarankan RivieraKid (dari tautan ini ).

MountainX
sumber
kemungkinan duplikat Ubuntu: debug perangkat Android
EboMike
Item # 1 sangat membantu saya. Tidak yakin tentang item # 2
Francisco Quintero
Kemungkinan duplikat perangkat penyiapan untuk pengembangan (?????? tanpa izin)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:

87

Satu hal yang tidak saya coba adalah mengedit /etc/udev/rules.d/70-android.rules. Mungkinkah itu masalahnya?

Adakah alasan khusus mengapa Anda tidak melakukan itu? Untuk menjawab pertanyaan - YA! Aturan udev adalah yang memberi tahu Ubuntu tentang perangkat Anda dan memungkinkan alat ruang pengguna untuk mengaksesnya.

Anda tidak akan dapat menggunakan adb tanpa mengikuti petunjuk dengan benar .

Dengan mengingat hal itu, Anda tidak mengatakan versi Ubuntu apa yang Anda gunakan tetapi saya memiliki masalah dengan 10.10 - beri tahu saya jika Anda memerlukan saya untuk memposting konten file aturan saya.

Jangan khawatir tentang menjalankan adb melalui sudo, Anda tidak membutuhkannya. Aturan MODE="0666"dari udev memungkinkan Anda mengakses perangkat sebagai pengguna mana pun.


EDIT:

Jangan lupa untuk memuat ulang aturan:

sudo udevadm control --reload-rules

EDIT # 2:

Seperti yang ditunjukkan oleh @Jesse Glick dengan benar, jika adb sudah berjalan dalam mode daemon, Anda juga harus memulai ulang agar ini berfungsi:

sudo adb kill-server

Saya telah menggunakan sudo di sini, karena itu akan menjamin bahwa adb akan dimatikan, dan ini adalah metode yang didukung secara resmi untuk menghentikan server. Ini akan secara otomatis dimulai ulang saat adb digunakan lagi, tapi kali ini dengan lingkungan yang benar.

RivieraKid
sumber
1
Terima kasih untuk tautannya . Tidak yakin bagaimana saya melewatkan fakta bahwa instruksi itu resmi. Saya pikir orang-orang melakukan itu sebagai solusi. Saya menemukan kode vendor untuk Viewsonic GTablet saya dan menambahkan aturan udev dan sekarang berfungsi! Terima kasih.
MountainX
1
untuk beberapa alasan saya tidak bisa menampilkan Motorola Droid dengan perangkat adb. Sekarang saya bisa mendapatkan GTab dan emulator untuk muncul, tetapi Droidnya tidak.
MountainX
Lihat di atas. Menjalankan adb sebagai root menyebabkan Moto Droid muncul.
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
… Dan Anda perlu me-restart adbdaemon, jika daemon telah berjalan sebelumnya.
Jesse Glick
22

Anda perlu memulai ulang server adb sebagai root. Lihat disini .

EboMike
sumber
tidak berhasil. Detail: 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
adbtidak berada di jalur pengguna super Anda. Enter which adbuntuk mengetahui jalurnya, lalu tambahkan ke jalur root.
EboMike
Semoga Anda bisa membaca ini. (Saya tidak tahu bagaimana memformat komentar untuk menyertakan baris baru.) Adb IS di jalur pengguna root saya. Saya menempelkan perintah adb di posting asli saya. Pathnya adalah / 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 / alat: / opt / android-sdk-linux_x86 / platform-tools
MountainX
1
Ini hal yang aneh. Saya mendapatkan hasil yang berbeda dari "which adb" tergantung pada apakah saya menjalankannya sebagai root atau menjalankannya dengan sudo. Berikut output $ sudo yang adb $
MountainX
Tentukan jalur lengkapnya saat Anda menjalankan adb sebagai root.
EboMike
13

Di sistem linux Gentoo / Funtoo saya, saya mengalami masalah serupa:

Saya selalu tidak mendapatkan deskripsi perangkat yang benar dan izin yang tidak memadai:

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

Bagi saya membantu howto dari Google. Dalam kasus saya, saya perlu menambahkan aturan udev:

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

dan mengatur hak sistem file

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

Setelah mengganti ponsel cerdas saya, akses ke ponsel berhasil, itu juga muncul sekarang di Eclipse 'Android Device Chooser:

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

Anda juga harus memeriksa keanggotaan pengguna Anda ke plugdev -group.

larkee
sumber
3

Setiap jawaban yang saya baca menunjukkan SUBSYSTEM=="usb". Namun, udev saya (mungkin kuno) membutuhkan ini untuk diubah DRIVER=="usb". Akhirnya saya dapat menjalankan server adb sebagai pengguna non-root ... yay.

Akan bermanfaat untuk melihat keluaran dari udevmonitor --env, diikuti dengan keluaran dari

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>
segera
sumber
Jika udevmonitordan udevinfotidak ada pada mesin Anda, gunakan udevadm monitordan udevadm info -a -p ...sebagai gantinya.
Ash
2

Harap perhatikan bahwa IDE seperti IntelliJ IDEA cenderung memulai server adb-nya sendiri.

Bahkan mematikan server secara manual dan menjalankan instance baru dengan sudo tidak akan membantu di sini sampai Anda membuat IDE Anda mematikan server itu sendiri.

sebastianwagner
sumber
2

memulai ulang server adb karena root berhasil untuk saya. Lihat:

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
keredson
sumber
Saya juga: Linux Mint Serena 18.1 dengan HTC Sensation. Peringatan Noob: Saya telah mengoceh selama 2 hari dengan ini jadi hal-hal hampir pasti tersesat
Aethelbald
0

HTC One m7 menjalankan Cyanogenmod 11 baru.

Ponsel terhubung ke USB dan menambatkan koneksi data saya.

Kemudian saya mendapatkan kejutan ini:

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

SOLUSI: MATIKAN tethering pada ponsel.

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device
cinderman.dll
sumber
-3

Saya baru saja mendapatkan situasi yang sama, Reset data pabrik berfungsi dengan baik untuk saya.

Andrii Krokhin
sumber
Tentunya ini sebuah komentar?
Matthew Taylor
salahku. Saya ingin mengatakan bahwa mengatur ulang perangkat dan membersihkan data telah bekerja dengan baik untuk saya.
Andrii Krokhin