Bagaimana cara mendeteksi perangkat saya oleh ADB di Linux?

18

Saya baru saja mendapatkan Swift Wileyfox baru saya yang mengkilap - dan sebelum menggunakannya saya ingin oem unlockme-root-nya (seperti yang biasa saya lakukan dengan perangkat baru;) Masalahnya adalah, meskipun diaktifkan pada perangkat, dan baris yang sesuai /etc/udev/rules.d/51-android.rulesada , perangkat tidak terlihat oleh adb devices.

Saya tahu ada beberapa jawaban yang tersebar di sekitar situs ini, tetapi mereka sulit ditemukan, cukup tutup perangkat tertentu, atau jangan tutupi semua langkah yang akhirnya saya butuhkan. Jadi saya menganggap ini sebagai kesempatan untuk pertanyaan kanonik, independen-perangkat dan memberikan jawaban rinci di bawah ini:

Bagaimana saya bisa membuat perangkat Android saya terlihat dan digunakan adbdi Linux?

Izzy
sumber
Saya selalu terbuka untuk kritik - tetapi downvote tanpa penjelasan sulit ditafsirkan. Jadi, apakah para pemilih akan menjelaskan apa yang harus diperbaiki pada pertanyaan? Saya berjanji untuk tidak menyalahgunakan kekuatan mod saya untuk hukuman :)
Izzy
3
Saya kira pemilih tidak menyadari Anda memposting pertanyaan untuk menjawabnya sendiri (tidak harus memperhatikan Anda dalam jawabannya). Karena tidak ada petunjuk dalam pertanyaan atau komentar yang diposting untuk tujuan menjawab sendiri pemilih mungkin keberatan dengan paragraf kedua hingga terakhir (menunjukkan kemalasan, jika dibaca dalam konteks pengguna biasa dan pertanyaan mereka). Saya tidak bisa memikirkan alasan lain seperti sekarang.
Firelord
1
@Firelord terdengar meyakinkan (sedikit mengedit pertanyaan untuk mencegah langkah-gagal tambahan). Tapi kemudian, pengguna itu seharusnya menjawabnya dengan terbalik. Atau apakah saya juga melewatkan sesuatu di sana? ;)
Izzy

Jawaban:

24

Aktifkan USB debugging pada perangkat

Ini dilakukan di Pengaturan ›Pengembangan . Jika Anda tidak memiliki entri itu di menu pengaturan Anda, buka Pengaturan ›Tentang , gulir ke" Bangun nomor ", dan palu seperti monyet sampai perangkat Anda memberi selamat kepada Anda telah menjadi pengembang. Kembali ke halaman utama menu Pengaturan , dan tutup ke bawah Anda akan melihat pengaturan "Pengembangan" (atau "Pengembang") sekarang. Masukkan, dan aktifkan USB Debugging di sini.

Identifikasi perangkat

Pertama, kita perlu tahu bagaimana perangkat mengidentifikasi pada bus USB. Untuk itu, dengan perangkat Android TIDAK terhubung, ambil shell dan jalankan perintah lsusb. Kemudian hubungkan perangkat dan jalankan perintah lagi. Temukan baris baru. Untuk Wileyfox Swift ini adalah "perangkat tanpa nama":

Bus 004 Device 003: ID 2970:2282

Menyiapkan aturan untuk ADB

Kami sekarang perlu nomor pada akhir baris di atas: 2970:2282. Ini menentukan vendor (2970) dan perangkat itu sendiri (2282). Dengan memiliki perincian itu, kita perlu shell root pada mesin Linux kita untuk mengedit (atau membuat, jika belum ada) /etc/udev/rules.d/51-android.rulesfile tersebut. Di sana, tambahkan garis untuk perangkat Anda. Baris contoh berikut menunjukkan bagaimana tampilannya untuk Wileyfox Swift: ¹

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

Jika Anda memiliki perangkat yang berbeda, ganti vendor dan ID produk dengan apa yang Anda temukan di atas saat berjalan lsusb. Penjelasan singkat dari baris:

  • SUBSYSTEMS=="usb": jelas aturan ini hanya untuk USB;)
  • ATTRS{idVendor}=="2970": ID vendor perangkat untuk aturan ini
  • ATTRS{idProduct}=="2282": ID perangkat
  • MODE="0666": izin yang akan didapat simpul perangkat. 0666cukup longgar, memberi setiap pengguna di sistem Anda izin baca dan tulis - jadi jika Anda khawatir, Anda dapat mencoba menggantinya dengan 0660(hanya memberikan pemilik dan grup baca-tulis, dan tolak semuanya kepada orang lain).
  • GROUP="androiddev": ke grup mana node perangkat seharusnya berada. Ini harus berupa grup yang menjadi tujuan pengguna untuk bekerja dengan perangkat tersebut.
  • SYMLINK+="android%n": hanya untuk memberikan nama yang bagus pada simpul, sehingga Anda dapat menemukannya dengan lebih mudah /dev(dalam kasus saya, nanti muncul di sana sebagai /dev/android5)

Aturan itu masuk /etc/udev/rules.d/51-android.rules, kita harus memberitahu udevuntuk memanfaatkannya. Cara teraman (di sebelah reboot;) adalah me-restart udevlayanan. Tergantung pada distro Linux Anda, ini dapat dilakukan melalui service udev restartatau /etc/init.d/udev restart.

Selesai itu, tinggalkan shell root. Putuskan sambungan dan hubungkan kembali perangkat Android Anda, coba adb deviceslagi. Sebagian besar perangkat muncul sekarang, tetapi bukan Wileyfox Swift - yang jelas menginginkan pelukan tambahan. Jika Anda berada dalam situasi itu, buka (atau buat jika tidak ada) file ~/.android/adb_usb.inidan tambahkan satu baris ke sana, beri nama vendor yang Anda temukan di lsusbatas; untuk Swift yang akan menjadi 0x2970(yupp, di sini Anda perlu awalan dengan 0xmenunjukkan bahwa itu adalah angka heksadesimal). Kemudian restart server ADB: adb kill-server && adb start-server. Putuskan sambungan dan hubungkan kembali perangkat. Sekarang adb devicesharus melihatnya.

Menghubungkan perangkat

Anda mungkin telah memperhatikan adb devicesmengatakan sesuatu kepada Anda 0123456789ABCDEF unauthorized. Tidak apa-apa dan untuk keamanan (perangkat) Anda: komputer Anda harus disahkan terlebih dahulu untuk dapat mengakses perangkat. Jadi cukup keluarkan adb shellsekarang - yang akan dihentikan dengan error: device unauthorized. Please check the confirmation dialog on your device.saran Ikuti itu (tandai centang kotak untuk mengesahkan komputer Anda secara permanen), dan Anda selesai: Sekarang Anda dapat menggunakan untuk mengakses perangkat Anda.


Pembaruan:

¹ Perhatikan bahwa dalam versi Linux yang lebih baru, sintaks untuk aturan UDEV sedikit berubah, seperti yang ditunjukkan oleh jcomeau_ictx dalam komentarnya. Untuk nilai yang kami temukan di atas adalah:

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

Dua perbedaan: sekarang SUBSYSTEM(tidak ada jamak), dan grup telah berubah dari androiddevmenjadi plugdev(yang pertama tidak ada pada sistem terbaru, yang terakhir tidak dan biasanya ditugaskan setidaknya untuk pengguna pertama).

Selain itu, Anda mungkin perlu menambahkan vendorID ke ~/.android/adb_usb.ini(satu ID per baris, dalam notasi hex):

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970
Izzy
sumber
1
format untuk aturan udev berbeda pada sistem Jessie saya: 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 Saya harus mengabaikan saran untuk menjalankan android update adbdan memasukkannya secara manual seperti yang Anda nyatakan.
jcomeau_ictx
@jcomeau_ictx terima kasih atas umpan baliknya! Sejauh yang saya bisa lihat dari komentar Anda, itu hanya menggunakan grup pengguna yang berbeda ( plugdevbukan androiddev). Tidak diverifikasi, tetapi saya akan mengatakan bagian penting di sini adalah bahwa itu adalah grup yang juga dimiliki oleh pengguna Anda (yang ingin Anda gunakan USB)
Izzy
1
juga SUBSYSTEMbukannya SUBSYSTEMS, ATTRbukannya ATTRS, koma setelah MODE="0666" tidak yakin apakah semua perubahan itu diperlukan, tapi itulah yang berhasil.
jcomeau_ictx
Oh - terima kasih, lewatkan yang kecil, @jcomeau_ictx - poin bagus!
Izzy
Untuk Linux Non Savvy people sudo wget -O /etc/udev/rules.d/51-android.rules dari sini bekerja untuk saya untuk Xiaomi Mi A1 saya. Tentu saja lebih baik belajar tetapi senang menjadi malas :)
beeshyams
0

Beberapa komentar dari distribusi Linux yang lebih baru. Fedora 29 dengan ponsel Nexus 5X atau Nokia 7.1 (Android One).

Pertama-tama lepaskan telepon, jika sudah terhubung.

  1. Instal android-tools yang akan memasok ADB ( sudo dnf install android-tools)
  2. Salin aturan udev ( sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d)
  3. Muat ulang aturan udev ( sudo udevadm control --reload-rules)
  4. Mulai ulang ADB untuk memastikan ( sudo systemctl restart adb)

Sekarang hubungkan telepon dan jalankan adb devicesdari baris perintah. Anda mungkin akan melihat perangkat yang terdaftar dengan "tanpa izin". Ini baik
JIKA tidak terdaftar, Anda harus menambahkan perangkat Anda ke file aturan udev, tetapi bagi saya, perangkat yang diuji hanya bekerja dengan aturan yang telah ditentukan sebelumnya.

Jalankan adb shelldan semoga Anda akan mendapatkan notifikasi keamanan di telepon yang menanyakan apakah Anda ingin mempercayai komputer, pilih ya.
JIKA sebaliknya komputer Anda mengatakan "error: izin tidak memadai untuk perangkat", Anda harus memastikan bahwa pada ponsel Anda telah mengatur port USB Anda ke mode "Transfer file", dan bukan "Mengisi daya perangkat ini". Pada Android 8.1 ini terletak di pengaturan di bawah "Perangkat yang terhubung"> "USB".

Saya telah memperhatikan bahwa bahkan jika Anda memiliki semuanya berfungsi hari ini, bahwa besok mungkin tiba-tiba rusak tanpa alasan yang jelas. Jika itu terjadi, periksa dulu pengaturan port USB pada perangkat, yang mungkin telah berubah kembali ke mode pengisian daya, dan jika itu gagal, cabut otorisasi debugging USB pada perangkat (dalam pengaturan di bawah Opsi pengembang), dan semoga Anda mendapatkan pop -di atas lagi ketika Anda menjalankan adb shell.

Dengan ini, saya dapat menjalankan Android Studio dan berjalan di perangkat yang terhubung.

rampok
sumber