АБР на Ubuntu не распознает Nexus 4

8

Мне не удается распознать мой телефон Nexus 4 по ADB в Ubuntu (12.04 с установленным более новым ядром: 3.8.0-30-generic). Режим разработчика включен на телефоне.

Устройство отображается в lsusb :

$ lsusb
...
Шина 003 Устройство 034: ID 18d1: 4ee5 Google Inc. 
...

Но когда я запускаю устройства adb, я получаю пустой список. Я нашел много сообщений в Интернете об этой проблеме, но ни один из них не решает проблему. Есть два решения.

  • Добавьте правило в /etc/udev/rules.d/51-android.rules . Я нашел различные варианты содержания этого файла. В большинстве случаев значения idVendor и idProduct должны быть установлены на основе вывода lsusb . Ниже приведены некоторые примеры, которые я пробовал
SUBSYSTEM == "usb", ATTRS {idVendor} == "18d1", ATTRS {idProduct} == "4ee5", MODE = "0666" GROUP = "androiddev", SYMLINK + = "android% n"
SUBSYSTEM == "usb", ATTR {idVendor} == "18d1", MODE = "0666", GROUP = "plugdev"
SUBSYSTEM == "usb", ATTRS {idVendor} == "18d1", SYMLINK + = "android_adb", MODE = "0666"
SUBSYSTEM == "usb", ATTR {idVendor} == "18d1", ATTR {idProduct} == "4ee5", MODE = "0666", OWNER = "my-login" 

После добавления этого я установил разрешения для файла правил на 644 и перезагрузил компьютер / перезапустил udev, перезапустил телефон и подключил Nexus 4.

  • Добавьте идентификатор поставщика в ~ / .android / adb_usb.ini.
echo 0x18d1 >> ~ / .android / adb_usb.ini

Я запускал устройства adb от имени пользователя root и обычного пользователя, но получаю только пустой список:

$ adb devices
* демон не работает. начиная сейчас на порту 5037 *
* демон успешно запущен *
Список подключенных устройств 

Есть идеи, как решить эту проблему? Любая помощь предложений будет принята с благодарностью.

Lespaul86
источник

Ответы:

7

Недостаточно, чтобы страница параметров разработчика появлялась в меню настроек (многократно нажимая номер сборки). На этой странице есть опция отладки по USB , которая по умолчанию отключена.

Когда отладка по USB включена, при подключении устройства к ПК с помощью USB появляется уведомление «USB отладка подключена», независимо от того, adbзапущено ли в данный момент на ПК.

Дэн Халм
источник
Не могли бы вы подробно изложить свой ответ? Где можно найти эту «страницу»?
Луис де Соуза
@ LuísdeSousa android.stackexchange.com/q/33496/12442
Дэн Халм,
Я пытаюсь подключиться, adbпотому что сенсорный экран сломан. У меня нет средств для доступа к любому из его меню и приложений. Есть ли другой способ активировать эту функцию отладки USB?
Луис де Соуза
1

Чтобы получить более полный набор инструкций по настройке правил udev для Nexus 4 в ubuntu, выполните следующие инструкции:

Как найти идентификатор вашего устройства

Вы можете найти идентификатор поставщика для устройств, подключенных по USB, с помощью следующей команды linux:

lsusb

Это создаст список всех подключенных USB-устройств, поэтому убедитесь, что ваше устройство подключено, прежде чем вы это сделаете.

Bus 001 Device 004: ID 18d1:4ee2 Google Inc.

Первая часть поля после идентификатора - это идентификатор поставщика (18d1), а вторая часть соответствует режиму, в котором подключено устройство. В этом случае 4ee2 соответствует режиму MTP с включенной отладкой.

СОЗДАЙТЕ ПРАВИЛО UDEV ДЛЯ NEXUS 4

Чтобы иметь возможность обнаруживать телефон Nexus 4 под Ubuntu, прежде всего необходимо создать правильные правила udev, которые позволят системе обнаруживать телефон.

Эти правила udev должны обрабатывать 4 разных случая:

  • телефон подключен в режиме MTP (отладка по USB включена или выключена)
  • телефон подключен в режиме PTP (отладка по USB включена или выключена)
  • телефон подключен в режиме Fastboot
  • телефон подключен в режиме восстановления

Они будут объявлены в /etc/udev/rules.d/99-android.rules. Если файл уже существует, просто добавьте его содержимое в конце.

# sudo gedit /etc/udev/rules.d/99-android.rules

Ниже содержание должно быть добавлено. Обязательно замените поле your-login на правильное имя пользователя, с которым вы вошли.

# Google Nexus 4 16 Gb
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee1", MODE="0666", OWNER="your-login" # MTP media (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0666", OWNER="your-login" # MTP media with USB debug on(multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee5", MODE="0666", OWNER="your-login" # PTP media (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee6", MODE="0666", OWNER="your-login" # PTP media with USB debug on (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0666", OWNER="your-login" # Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666", OWNER="your-login" # Recovery

Перезапустите сервисы

После этого служба udev должна быть перезапущена.

# sudo service udev restart

Обратите внимание, что в некоторых случаях также необходимо перезапустить ADB с:

adb kill-server
adb start-server

Или полностью перезагрузите систему:

sudo reboot -n

Повторное подключение USB-кабеля (вместо перезагрузки) также может работать.

Авторизовать соединение ADB

Если вы только что включили опцию отладки ADB на своем телефоне и создали это новое соединение, команда ADB может отобразить ваше устройство как unauthorized. Просто проверьте экран вашего телефона, чтобы авторизовать новое соединение.

кредиты

Большая часть этой информации была найдена по адресу http://bernaerts.dyndns.org/android/267-android-nexus4-root-twrp-ubuntu . Это руководство по рутингу для Nexus 4 на Ubuntu. Я использовал только первый шаг этого руководства.

HCPL
источник
Я только что попробовал это решение из Ubuntu 14.04, и даже после перезагрузки системы Nexus 4 не распознается.
Луис де Соуза
Вы пытались запустить ADB с правами root? Смотрите один из других ответов об Ubuntu 14.04 +. Вы проверяли режим USB-подключения на устройстве?
hcpl
Да, я попробовал это с sudo. Телефон подключается в режиме MTP с отключенной отладкой.
Луис де Соуза
1

Я использую Ubuntu 14.04 LTS и обнаружил, что мне нужно запустить adb с правами root, чтобы он обнаружил мой телефон. Только сейчас я запустил (из каталога platform-tools) ./adb devicesи придумал пустой список. Я перезапустил ADB как root, запустив ./adb kill-serverи затем sudo ./adb start-server. Теперь adb devicesвозвращается:

List of devices attached 
01d17087d29dec60    device

Тогда как раньше это выглядело так:

Список подключенных устройств

the.laurence
источник
убийство, а затем запуск от имени root работал для меня. Используя Nexus 5
Расс Уилер
1
Я только что попробовал это решение на Ubuntu 14.04, и у меня все еще есть пустой список устройств.
Луис де Соуза
0

К вашему сведению: я недавно обновил версию Android с 4.4 до 5.0 на моем телефоне, и ADB больше не будет показывать устройство как подключенное. Кажется, где метод подключения USB MTP был правильным, прежде чем он теперь должен быть PTP .

flowtron
источник
Не могли бы вы подробно изложить свой ответ? Где именно этот метод должен быть настроен?
Луис де Соуза
Как я уже говорил, MTP был правильным ДО, ПОСЛЕ обновления PTP было правильным.
Flowtron