Як я можу визначити свій пристрій ADB в Linux?


18

Щойно я отримав свій блискучий новий Wileyfox Swift - і перед тим, як його використовувати для використання, я хочу його oem unlockвикорінити (як я зазвичай роблю з новими пристроями;) Проблема є, хоча на пристрої увімкнено , і відповідний рядок /etc/udev/rules.d/51-android.rulesіснує , пристрій не бачиться adb devices.

Я знаю, що є кілька відповідей, розкиданих по цьому сайту, але їх важко знайти, просто накрийте певний пристрій, або не покрийте всі кроки, які мені нарешті потрібні. Тож я сприймаю це як шанс для канонічного, незалежного від пристрою запитання і даю на нього детальну відповідь нижче:

Як я можу побачити і використовувати свій пристрій Android adbу Linux?


Я завжди відкритий до критики, але важко інтерпретувати без пояснень важко. Тож, будь ласка, поясніть, будь ласка, що слід покращити у питанні? Я обіцяю не зловживати модними повноваженнями для покарання :)
Izzy

3
Я припускаю, що виборець не зрозумів, що ви поставили запитання, щоб самостійно відповісти на нього (мабуть, не помітили вас у відповіді). Оскільки у питанні чи коментарях немає натяку на те, що він був розміщений з метою самовідповіді, виборця, можливо, заперечували проти другого до останнього пункту (показує лінь, якщо читати в контексті будь-якого звичайного користувача та їх питання). Я не можу придумати жодної іншої причини, як зараз.
Firelord

1
@Firelord звучить переконливо (трохи відредагував питання, щоб запобігти додатковим крокам). Але тоді цей користувач повинен був відповісти на відповідь. Або я щось там теж пропустив? ;)
Іззі

Відповіді:


24

Увімкніть налагодження USB на пристрої

Це робиться в Налаштуваннях ›Розробка . Якщо у меню налаштувань у вас немає цього пункту, перейдіть у меню Налаштування ›Про , перейдіть до“ Номер збірки ”та забийте його, як мавпа, доки ваш пристрій не привітає вас з тим, що ви стали розробником. Поверніться на головну сторінку меню " Налаштування" , а внизу ви побачите налаштування "Розробка" (або "Розробники"). Введіть його та увімкніть налагодження USB тут.

Визначте пристрій

Спочатку ми повинні знати, як пристрій ідентифікує на шині USB. Для цього, якщо Android-пристрій НЕ підключений, візьміть оболонку та запустіть команду lsusb. Потім підключіть пристрій і знову запустіть команду. Знайдіть новий рядок. Для Wileyfox Swift це "безіменний пристрій":

Bus 004 Device 003: ID 2970:2282

Встановлення правил для АБР

Тепер нам потрібно число в кінці попереднього рядка: 2970:2282. Вони вказують постачальника (2970) та самого пристрою (2282). Маючи ці подробиці, нам потрібна коренева оболонка на нашій машині Linux для редагування (або створення, якщо він ще не існує) /etc/udev/rules.d/51-android.rulesфайлу. Там додайте рядок для свого пристрою. Наступний приклад показує, як виглядає Wileyfox Swift: ¹

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

Якщо у вас інший пристрій, під час запуску замініть ідентифікатори продавця та продукту на те, що ви знайшли вище lsusb. Коротке пояснення рядка:

  • SUBSYSTEMS=="usb": очевидно, це правило стосується лише USB;)
  • ATTRS{idVendor}=="2970": ідентифікатор постачальника пристрою, для якого призначено це правило
  • ATTRS{idProduct}=="2282": ідентифікатор пристрою
  • MODE="0666": дозволи має отримати вузол пристрою. 0666є досить млявим, даючи кожному користувачеві вашої системи дозвіл на читання та запис - тому, якщо ви стурбовані, ви можете спробувати замінити це на 0660(надання лише власнику та групі читання-запису та забороняти іншим).
  • GROUP="androiddev": до якої групи належить вузол пристрою. Це повинна бути група, до якої належать користувачі, призначені для роботи з пристроєм.
  • SYMLINK+="android%n": просто, щоб дати вузлу приємне ім’я, щоб вам було легше /dev(у моєму випадку він пізніше з’явився там /dev/android5)

Це правило, яке введено /etc/udev/rules.d/51-android.rules, ми мусимо сказати, udevщоб ним скористатися. Найбезпечнішим способом (поруч із перезавантаженням;) є перезапуск udevпослуги. В залежності від вашого дистрибутива Linux, це можна зробити або з допомогою service udev restartабо /etc/init.d/udev restart.

Зробивши це, залиште кореневу оболонку. Відключіть і підключіть свій пристрій Android, повторіть adb devicesспробу. Більшість пристроїв з'явилися зараз, але не Wileyfox Swift - який, очевидно, бажає додаткових частувань. Якщо ви знаходитесь в такій ситуації, відкритої (або створити , якщо він не існує) файл ~/.android/adb_usb.iniі додайте один рядок до нього, називаючи постачальника ви знайшли з lsusbвище; для Swift, який би був 0x2970(yupp, тут вам потрібно встановити префікс, 0xщоб вказати, що це шістнадцяткове число). А після перезапуску сервер ADB: adb kill-server && adb start-server. Відключіть і підключіть пристрій знову. Тепер adb devicesслід це побачити.

Підключення пристрою

Можливо, ви помітили, adb devicesсказали вам щось подібне 0123456789ABCDEF unauthorized. Це нормально і з точки зору безпеки (пристроїв): ваш комп'ютер повинен бути авторизований спочатку, щоб мати доступ до пристрою. Отож просто випустіть adb shellзараз - що буде закрито з error: device unauthorized. Please check the confirmation dialog on your device.дотриманням цієї поради (необов’язково позначте прапорець, щоб остаточно авторизувати ваш комп'ютер), і ви закінчили: Тепер ви можете використовувати для доступу до свого пристрою.


Оновлення:

¹ Зауважте, що в пізніших версіях Linux синтаксис правил UDEV трохи змінився, як, наприклад, jcomeau_ictx зазначив у своєму коментарі. Для значень, які ми знайшли вище, було б:

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

Дві відмінності: це зараз SUBSYSTEM(немає множини), і група змінилася з androiddevна plugdev(першої не існує в останніх системах, остання є і зазвичай призначається принаймні першому користувачеві).

Крім того, вам може знадобитися додати vendorID до свого ~/.android/adb_usb.ini(один ідентифікатор на рядок, у шістнадцятковій нотації):

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

1
формат правила udev відрізнявся в моїй системі Джессі: 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 мені довелося ігнорувати поради щодо запуску android update adbта введення його вручну, як ви заявили.
jcomeau_ictx

@jcomeau_ictx дякую за відгук! Наскільки я бачу з вашого коментаря, це просто використання іншої групи користувачів ( plugdevзамість androiddev). Не підтверджено, але я б сказав, що тут важлива частина полягає в тому, що це група, яку має і ваш користувач (з яким ви хочете використовувати USB).
Іззі

1
також SUBSYSTEMзамість SUBSYSTEMS, ATTRа не ATTRSчерез коми після того , як MODE="0666"не впевнені, чи потрібні всі ці зміни, але це працювало.
jcomeau_ictx

О, дякую, пропустили цих маленьких, @jcomeau_ictx - хороший момент!
Іззі

Для Linux Non Знаючі люди sudo wget -O /etc/udev/rules.d/51-android.rulesз тут працювали для мене для мого Xiaomi Mi A1. Звичайно, краще вчитися, але добре бути лінивим :)
beeshyams

0

Кілька коментарів із нової дистрибуції Linux. Fedora 29 з Nexus 5X або телефоном Nokia 7.1 (Android One).

Спочатку відключіть телефон, якщо він уже підключений.

  1. Встановіть android-інструменти, які постачатимуть ADB ( sudo dnf install android-tools)
  2. Скопіюйте правила udev ( sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d)
  3. Перезавантажити правила udev ( sudo udevadm control --reload-rules)
  4. Перезапустіть ADB, щоб бути впевненим ( sudo systemctl restart adb)

Тепер підключіть телефон і запустіть adb devicesз командного рядка. Напевно, ви побачите пристрій із зазначенням "без дозволів". Це добре.
Якщо його немає в списку, вам доведеться додати свій пристрій до файлу правил udev, але для мене перевірені пристрої просто працювали з попередньо визначеними правилами.

Запустіть adb shellі, сподіваємось, ви отримаєте сповіщення про безпеку по телефону з запитом, чи хочете ви довіряти комп’ютеру, виберіть так.
Якщо замість цього ваш комп’ютер каже "помилка: недостатньо дозволів для пристрою", вам потрібно переконатися, що на телефоні ви встановили свій порт USB у режимі "Передача файлів", а не "Заряджайте цей пристрій". На Android 8.1 це розміщено в налаштуваннях у розділі "Підключені пристрої"> "USB".

Я помітив, що навіть якщо у вас все працює сьогодні, то завтра воно може раптом зламатися без видимих ​​причин. Якщо це трапиться, спочатку перевірте налаштування USB-порту на пристрої, яке, можливо, змінилося в режим зарядки, а якщо це не вдалося, скасуйте авторизацію налагодження USB на пристрої (у налаштуваннях у розділі Параметри розробника), і, сподіваємось, ви отримаєте поп - знову знову, коли ти біжиш adb shell.

Завдяки цьому я можу запустити Android Studio і запустити на підключеному пристрої.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.