ADB на Ubuntu не распознает Nexus 4

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

Устройство отображается в 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.
эхо 0x18d1 >> ~/.android/adb_usb.ini

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

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

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

Ответы (4)

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

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

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

Для получения более полного набора инструкций о том, как настроить правила Nexus 4 udev в Ubuntu, следуйте этим инструкциям:

Как узнать Vendor ID вашего устройства

Вы можете найти идентификатор поставщика для устройств, подключенных через 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. Я использовал только первый шаг этого руководства.

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

Я использую 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

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

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

убийство, а затем запуск с правами root у меня сработал. Использование Nexus 5
Я только что попробовал это решение в Ubuntu 14.04, но все равно получаю пустой список устройств.

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

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