команда adb пристроїв не працює


86

Я використовую Ubuntu 10.10 64 bit. У мене встановлено ia32-libs разом із Android Debug Bridge версії 1.0.26.

Мої проблеми:

  1. adb devices>>> ???????????? відсутні дозволи
  2. sudo adb devices >>>> sudo: adb: команду не знайдено
  3. adb shell >>> помилка: недостатньо дозволів для пристрою

Я думаю, це все пов’язано. Ось відповідна інформація.

$ 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

Я отримую ті ж результати з укоріненим Moto Droid, що працює на CM6.1, і на G-Tab, що працює на ПЗУ на основі CM7.

Я переглянув такі відповідні публікації:

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

Одне, що я не спробував, - це редагування /etc/udev/rules.d/70-android.rules. Чи це може бути питанням? Я не можу зрозуміти, як це спричинить "sudo: adb: command not found". Можливо, мої проблеми не всі пов'язані. У будь-якому разі, на даний момент я думаю, що мені потрібні деякі вказівки інших людей, тому що я не вірю, що у мене є проблема із шляхами чи інші загальні проблеми, про які йшлося в цих інших повідомленнях.

РЕДАГУВАТИ: ВИРІШЕНО завдяки EboMike та RivieraKid. Це насправді були дві різні проблеми:

  1. Пункт №2 вище (sudo: adb: команду не знайдено) вирішено шляхом створення символічного посилання наступним чином:

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

    Це дозволило мені потім зробити те, що запропонував EboMike, і використовувати це рішення . Це було потрібно для мого Moto Droid. ( Однак запуск adb як sudo для мого планшета Viewsonic G не потрібен.)

  2. Інші два мої елементи були вирішені шляхом впровадження правила udev, як пропонував RivieraKid (за цим посиланням ).



Пункт №1 справді мені допоміг. Не впевнений у пункті №2
Франсіско Квінтеро

Відповіді:


87

Одне, що я не спробував, - це редагування /etc/udev/rules.d/70-android.rules. Чи це може бути питанням?

Якась конкретна причина, чому ви цього не зробили? Відповісти на питання - ТАК! Правила udev - це те, що інформує Ubuntu про те, яким є ваш пристрій, і дозволяє інструментам простору користувача отримати доступ до нього.

Ви не зможете використовувати adb, не дотримуючись інструкцій правильно .

Однак маючи це на увазі, ви не кажете, яку версію Ubuntu ви використовуєте, але у мене були проблеми з 10.10 - повідомте мене, якщо вам потрібно, щоб я опублікував вміст мого файлу правил.

Не хвилюйтеся про запуск adb через sudo, він вам не потрібен. MODE="0666"З правила Udev дозволяє отримати доступ до пристрою будь-якого користувача.


РЕДАГУВАТИ:

Не забудьте перезавантажити правила:

sudo udevadm control --reload-rules

EDIT # 2:

Як правильно зазначає @Jesse Glick, якщо adb вже працює в режимі демона, вам також потрібно буде перезапустити його, щоб це працювало:

sudo adb kill-server

Я використав тут sudo, оскільки це гарантує вбивство adb, і це офіційно підтримуваний метод зупинки сервера. Він буде автоматично перезапущений під час наступного використання adb, але цього разу з правильним середовищем.


1
Дякую за посилання . Не впевнений, як я пропустив той факт, що ці інструкції були офіційними. Я думав, що люди робили це як обхід. Я знайшов код постачальника для мого Viewsonic GTablet і додав правило udev, і тепер воно працює! Дякую.
MountainX

1
з якихось причин я не можу змусити Motorola Droid відображатися на пристроях adb. Тепер я можу отримати GTab та емулятор, але не Droid.
MountainX

Дивись вище. Запуск adb від імені кореня призвів до появи 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
... і вам потрібно перезапустити adbдемон, якщо він працював раніше.
Джессі Глік,

22

Вам потрібно перезапустити сервер adb як root. Дивіться тут .


не працював. Подробиці: 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

adbне на шляху вашого суперкористувача. Введіть, which adbщоб дізнатись, в якому шляху він знаходиться, а потім додайте його до шляху кореня.
EboMike

Сподіваюся, ви можете це прочитати. (Я не знаю, як відформатувати коментарі, щоб включити нові рядки.) Adb Є на шляху мого кореневого користувача. Я вставив команду adb у свій оригінальний пост. Шлях / 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
Ось дивна річ. Я отримую різні результати від "який adb", залежно від того, запускаю я його як root або запускаю за допомогою sudo. Ось вихід $ sudo which adb $
MountainX

Вкажіть повний шлях тоді, коли ви запускаєте adb як root.
EboMike

13

У моїй системі Linux Gentoo / Funtoo у мене виникають подібні проблеми:

Я завжди отримую не правильний опис пристрою та недостатньо дозволів:

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

Для мене допомагає HOWTO від Google. У моєму випадку мені потрібно було додати правило udev:

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

і налаштування прав на файлову систему

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

Після повторного підключення мого смартфона доступ до телефону був успішним, він також з'являється в Eclipse 'Android Device Chooser:

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

Ви також повинні перевірити приналежність свого користувача до plugdev -group .


3

Кожна відповідь, яку я прочитав, вказує на SUBSYSTEM=="usb". Однак моєму (можливо, давньому) udev потрібно було змінити це на DRIVER=="usb". Нарешті я можу запустити сервер adb як некорневий користувач ... так.

Це може бути повчальним поглядом на результати udevmonitor --env, за якими слідує результат

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

Якщо udevmonitorі udevinfoне існує на вашій машині, використання udevadm monitorі udevadm info -a -p ...замість цього.
Ash

2

Зверніть увагу, що IDE, такі як IntelliJ IDEA, як правило, запускають власний adb-сервер.

Навіть ручне вбивство сервера та запуск нового екземпляра за допомогою sudo тут не допоможуть, поки ви не змусите свою IDE вбити сам сервер.


2

перезапуск сервера adb як root працював у мене. подивитися:

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

Я теж: Linux Mint Serena 18.1 з HTC Sensation. Попередження Noob: Я вже два дні барукаюся з цим, тому речі майже напевно наїдаються
Aethelbald


0

HTC One m7 під управлінням свіжого Cyanogenmod 11.

Телефон підключений через USB і прив'язує моє з'єднання для передачі даних.

Тоді я отримую такий сюрприз:

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

РІШЕННЯ: Вимкніть модем на телефоні.

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

-3

Я щойно отримав таку саму ситуацію, скидання заводських даних у мене спрацювало.


Звичайно, це коментар?
Метью Тейлор

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