Я следовал различным инструкциям и, наконец, смог подключить свой ZTE Blade к ноутбуку Ubuntu для отладки по USB. Такая же настройка не работает при обмене телефона на свой "безымянный" планшет i.onik TP10.1-1500DC.
Я пробовал разные кабели и разные порты USB. Нужен ли специальный кабель для подключения планшета для отладки по USB?
Это то, что я получаю из корневой оболочки:
~# adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
~#
(Я знаю, что должна быть возможность запуска adb
без полномочий root, но этот тест должен был исключить ошибки прав доступа.)
Вывод lsusb
является специальным для этого устройства, текстовое описание не отображается. Первая запись ниже с другого устройства, вторая запись с планшета. Я проверил это, запустив lsusb
с подключенным планшетом и без него:
Bus 002 Device 005: ID 10d5:5000 Uni Class Technology Co., Ltd
Bus 002 Device 009: ID 2207:0010
Разумеется, в настройках планшета включена отладка по USB, и я его уже перезагружал.
Любые дополнительные подсказки?
Ответ Иззи вводит в заблуждение. Были перепутаны две несвязанные вещи (список идентификаторов поставщиков в adb с одной стороны и настройка разрешений в Linux с другой).
1) устройства, рассматриваемые adb:
У Adb есть жестко закодированный список идентификаторов поставщиков USB, которые он пытается использовать. Например, мобильные телефоны HTC используют 0xbb4, который указан ( исходный файл usb_vendors.c ), а 0x2207 — нет.
Единственный способ добавить в этот список (без исправления исходного кода) — поместить идентификаторы поставщиков в файл $HOME/.android/adb_usb.ini
, строка за строкой. (HOME настроен правильно?)
Специальный кабель не требуется.
2) настройка разрешений для доступа без полномочий root:
udev-fiddling должен предоставить пользователю доступ, например, к /dev/bus/usb/002/009 (изменение номера шины/номера устройства; см. lsusb
текущие значения).
Подробности этого не имеют отношения к вопросу исходного постера, так как он запускал adb как root.
Как описано в разделе «Настройка ADB для Nexus 4 в Ubuntu 11.10 », в Linux важно, чтобы он был указан либо в ~/.android/adb_usb.ini
(на основе пользователя), либо в /etc/udev/rules.d/51-android.rules
. Синтаксис для обоих файлов различается: если в первом случае достаточно просто добавить идентификатор поставщика ( echo 0x18d1 >> ~/.android/adb_usb.ini
для Nexus 4), запись для правила UDEV немного сложнее. Подробности можно найти в связанном вопросе (точнее, его ответах).
В случае с krlmlr это не было "или-или", но, похоже, были необходимы обе части (у меня никогда не было этого раньше, и я даже никогда не использовал adb_usb.ini
- но это не значит, что таких исключений нет). Добавив устройство в обоих местах (что в любом случае не помешает), устройство наконец появилось.
Два дополнительных замечания: после изменения правил UDEV необходимо перезапустить службу UDEV, чтобы изменения вступили в силу. В Ubuntu это можно сделать через sudo service udev restart
(в качестве альтернативы вы можете просто заставить UDEV перезагрузить свои правила с помощью udevadm control --reload-rules
). Если ваше устройство по-прежнему не обнаружено, скорее всего, оно было подключено, когда вы вносили изменения; вам нужно отключить и снова подключить USB-кабель. Разумеется, на вашем устройстве должна быть включена отладка по USB :)
автор: krlmlr
На основе следующего вывода lsusb
для рассматриваемого устройства Android:
Bus 002 Device 009: ID 2207:0010
нужно было создать /etc/udev/rules.d/51-android.rules
as root
со следующим содержимым:
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0660", GROUP="plugdev"
и создать ~/.android/adb_usb.ini
со следующим содержимым:
0x2207
Первый необходим, чтобы разрешить обычным пользователям (входящим в группу plugdev
) доступ к устройству. Обратите внимание на маску разрешений 0660
вместо часто встречающейся 0666
, которая слабее с точки зрения безопасности (последняя разрешает «мировой» доступ, а первая разрешает доступ только «пользователям и группам»). Второй требуется для того, чтобы adb
попытки поговорить с устройством в первую очередь. После того:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
и отключите + подключите ваше устройство Android. Затем,
adb devices
наконец-то показали Android-устройство.
Примечание Иззи:
Для моего LG Optimus 4X HD было достаточно добавить одну строку /etc/udev/rules.d/51-android.rules
:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61a6", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
Возможно, эта SYMLINK
опция имеет значение, потому что мне не нужна дополнительная запись в ~/.android/adb_usb.ini
.
rules.d
. Насколько я понимаю, мне нужно было сделать и то, и другое: настройка в .ini
файле требуется для «безымянных» устройств, о которых adb
не известно, что они работают под управлением Android, а rules.d
настройка требуется для доступа к устройству без root
привилегий..ini
файл, и он работал даже без перезагрузки udev
, как обычный пользователь. (Правда, мне пришлось перезапустить adb
сервер.) Я уже добавил устройство в правила, но безрезультатно. Эту конкретную информацию о .ini
файле очень сложно найти, давайте создадим вопросы и ответы, которые, наконец, разберутся во всем :-).ini
. Действительно. Я только что проверил все комбинации. Более того, как вы правильно сказали, он .ini
должен находиться в доме соответствующего пользователя, поэтому, если вы собираетесь работать adb
от имени root
, вы должны добавить его в root
каталог .android
.udev
(или запустить udevadm control --reload-rules
) и отключить + подключить ваше USB-устройство.adb
как root
и (при необходимости) имеете каталог adb_usb.ini
in root
. .android
Только что тоже проверил.SYMLINK
вариант не помог, .ini
файл все равно нужен.Попробуйте отредактировать adb_usb.ini и добавить идентификатор вашего устройства, вы можете найти его, перейдя в диспетчер устройств, найдите «Android ADB Interface», дважды щелкните его, перейдите на вкладку сведений и в раскрывающемся меню «Свойства» выберите «Оборудование». Ids» в поле под ним с надписью «Значения». Вы должны увидеть что-то вроде «USB\VID_2207&PID_0010&MI_01». Числа могут отличаться в зависимости от идентификатора поставщика вашего устройства, например, мой идентификатор поставщика «2207». Не открывайте файл adb_usb.ini, расположенный на папки ниже и добавьте идентификатор вашего устройства в шестнадцатеричном формате
например, идентификатор моего устройства "2207", я поставлю его там как "0x2207"
Обычно он находится в
Но если папка не существует, попробуйте создать ее с помощью cmd. И если файл adb_usb.ini также не существует, вы можете создать его с помощью блокнота и вставить только идентификатор вашего устройства и сохранить его в папке .android.
Иззи
крлмлр
adb_usb.ini
файл сразу решило проблему. Большое спасибо! Хотите написать ответ, чтобы я мог его принять?Иззи
крлмлр
adb
с помощьюapt-get install android-tools-adb
. Нет необходимости когда-либо копировать файлы или изменятьPATH
настройки. Сам пакет крошечный и содержит толькоadb
пару необходимых файлов.Иззи
крлмлр
Иззи
крлмлр
apt
подход, если только установка не попытается удалить половину моей системы, но здесь это не так. В любом случае, оба метода получения файлов действительны и работают большую часть времени :-)