Очень вероятно, что udev неправильно добавляет ваше устройство. У меня тоже была эта проблема и я нашел относительно простое решение.
Найди свое устройство в lsusb
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink)
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Интересная точка в этом случае:
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Проверьте соответствующий файл устройства
$ ls -l /dev/bus/usb/001/006
Скорее всего, вы увидите что-то вроде
crw-rw-r-- 1 root root 189, 5 Sep 8 21:47 /dev/bus/usb/001/006
Это означает, что файл устройства будет принадлежать пользователю root и root группы, поэтому adb может получить к нему доступ как root, но не как ваш обычный пользователь.
Эту проблему можно решить, создав новое правило udev, которое я использовал, /etc/udev/rules.d/51-android.rules
чтобы добавить устройство в группу plugdev
, в которой adb уже предполагает, что вы являетесь участником (вы должны проверить, используя id
)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660",
GROUP="plugdev", SYMLINK+="android%n"
** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы узнали на первом этапе. ** (Если вашим поставщиком не является Google Inc., также замените идентификатор поставщика на тот, который стоит перед двоеточием в lsusb).
Теперь просто отключите ваше устройство и подключите его снова (udev должен автоматически ответить на новый файл) и tadaa:
$ adb devices
List of devices attached
YC873P0G device
Источник: Добавление правил udev для отладки USB-устройств Android - Янош Герик
sudo adb devices
. Если это работает отлично, но по памяти, мне не нужно было иметь права root для проверки подключенных устройств.