Ошибка: insufficient permissions for device: user in plugdev group; are your udev rules wrong?

Данная ошибка может возникать при попытке послать какую-нибудь команду телефону с помощью adb на ОС Linux. Выглядит эта ошибка, таким вот образом:

adb reboot bootloader
error: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
See [http://developer.android.com/tools/device.html] for more information

Исправляем ошибку (ADB)

В статье будут рассмотрены 2 способа, как эту ошибку можно исправить именно для случая, когда данная ошибка возникает при работе ADB. Первый способ — быстрый, но его придется проделывать каждый раз, второй — способ чуть дольше, зато это надо будет сделать лишь один раз.

Для корректной работы adb в вашем телефоне, необходимо чтобы была активирована настройка «Отладка Android», т.е. был включен интерфейс «Android Debug Bridge (ADB)». Как это сделать на вашей модели телефона, необходимо спросить гугл.

Подключаем кабель к телефону и включаем режим отладки:


Способ 1 (быстрый)

Быстро обойти эту ошибку можно поменяв режим работы USB на «Режим PTP».

Никаких дополнительных действий больше не требуется, после смены режима на PTP ошибка должна исчезнуть.


Способ 2 (чуть дольше)

Если вам лень каждый раз переключать режим работы USB, чтобы избежать этой ошибки, то можно пойти более правильным, но длинным путем.
Первым делом вводим команду Isusb и ищем ID нашего телефона:

lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 111: ID 046d:c539 Logitech, Inc. 
Bus 001 Device 007: ID 1b1c:0c13 Corsair 
Bus 001 Device 006: ID 046d:c53d Logitech, Inc. 
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:8297 Integrated Technology Express, Inc. 
Bus 001 Device 004: ID 0a89:0030  
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 117: ID 18d1:4ee7 Google Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

В моем случае, он называется Google Inc. и его ID 18d1:4ee7.

В вашем случае, ID будет другим и именно ВАШИ значения надо подставлять

Далее, нам необходимо создать файл с настройками для udev (если он уже не был создан ранее). В моем примере я воспользуюсь редактором nano для редактирования файла.

sudo nano /etc/udev/rules.d/51-android.rules

И вносим в этот файл следующую строчку:

SUBSYSTEM=="usb", ATTR{idVendor}=="ваши значения", ATTR{idProduct}=="ваши значения", MODE="0666", GROUP="plugdev"

Для ATTR{idVendor} мы берем первые 4 символа (до символа двоеточия), которые мы получили в предыдущем пункте для нашего телефона, а для ATTR{idProduct} оставшиеся 4 символа (после двоеточия).
После этого сохраняем изменения в файле и применяем изменения следующей командой:

sudo udevadm control --reload-rules

После этого ОБЯЗАТЕЛЬНО, вынимаем из телефона USB кабель и подключаем его еще раз. Включаем режим отладки и данная ошибка должна исчезнуть.


Исправляем ошибку (FASTBOOT)

Если вы получаете такую же ошибку при работе fastboot, то она исправляется аналогичным способом. Переводим наш телефон в режим bootloader.

Когда телефон загрузился соответствующий режим, то в консоли проделываем следующее:
Первым делом вводим команду lsusb и ищем ID нашего телефона:

lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 111: ID 046d:c539 Logitech, Inc. 
Bus 001 Device 007: ID 1b1c:0c13 Corsair 
Bus 001 Device 006: ID 046d:c53d Logitech, Inc. 
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:8297 Integrated Technology Express, Inc. 
Bus 001 Device 004: ID 0a89:0030  
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 119: ID 18d1:d00d Google Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Обратите внимание, что ID для режима работы adb и fastboot у вашего телефона могут различаться, поэтому в 51-android.rules необходимо добавлять 2 строчки с разными ID для каждого режима работы телефона (см. Заключение)

В моем случае, он называется Google Inc. и его ID 18d1:d00d.

В вашем случае, ID будет другим и именно ВАШИ значения надо подставлять

Далее, нам необходимо создать файл с настройками для udev (если он уже не был создан ранее). В моем примере я воспользуюсь редактором nano для редактирования файла.

sudo nano /etc/udev/rules.d/51-android.rules

И вносим в этот файл следующую строчку:

SUBSYSTEM=="usb", ATTR{idVendor}=="ваши значения", ATTR{idProduct}=="ваши значения", MODE="0666", GROUP="plugdev"

Для ATTR{idVendor} мы берем первые 4 символа (до символа двоеточия), которые мы получили в предыдущем пункте для нашего телефона, а для ATTR{idProduct} оставшиеся 4 символа (после двоеточия).
После этого сохраняем изменения в файле и применяем изменения следующей командой:

sudo udevadm control --reload-rules

После этого ОБЯЗАТЕЛЬНО, вынимаем из телефона USB кабель и подключаем его еще раз. Ошибка должна исчезнуть:

fastboot devices
20b5b6f5 fastboot

Заключение

В итоге файл настроек 51-android.rules у меня принял вот такой вид:

SUBSYSTEM=="usb", ATTR{idVendor}=="ваши значения", ATTR{idProduct}=="ваши значения", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="ваши значения", ATTR{idProduct}=="ваши значения", MODE="0666", GROUP="plugdev"

Первая строчка отвечает решает проблему с работой adb, а вторая строчка решает проблему с работой fastboot.