How to Add Udev Rules for USB Debugging in Linux

From wizarPOS
Revision as of 03:33, 24 February 2021 by Mahong (talk | contribs)

In Linux, when connecting devices for debugging, an error message is displayed:

 insufficient permissions for device: user in plugdev group; are your udev rules wrong?

Or the reply from ADB logcat is always waiting. Even if the terminal is connected, the reply from ADB device is to give permission error.

 $ adb logcat
 - waiting for device -
 ^C
 $ adb devices
 List of devices attached 
 ???????????? no permissions

The solution is to find the bus and device ID assigned by the kernel:

 $ lsusb 
 Bus 001 Device 041: ID 05c6:9025 Qualcomm, Inc. Qualcomm HSUSB Device

Add a udev rules file that contains the USB configuration for each device type you want to develop. In the rules file, each device manufacturer is identified by a unique vendor ID specified by the ATTR{ID vendor} attribute. Set device detection on Ubuntu Linux as follows:

 Log in as root and create this file: /etc/udev/rules.d/51-android.rules, or vim /etc/udev/rules.d/51-android.rules
 Use this format to add each vendor to the file:
 SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9025" MODE="0666"

In this case, the vendor ID is Qualcomm's. Mode assignment specifies read/write permissions. A GROUP defines which UNIX group owns the device node.

Now execute:

 $ chmod a+r /etc/udev/rules.d/51-android.rules
 $ adb kill-server

Connect successfully:

 $ adb devices 
 List of devices attached
 WP17451Q20003163 device

Please refer to https://developer.android.com/studio/run/device.html#developer-device-options