Fix “???????????? no permissions” with adb and your Android phone

A common problem when using adb to access your Android phone via USB is:

$ adb devices
List of devices attached
????????????    no permissions

According to official Android Developers website:

If you’re developing on Ubuntu Linux, you need to add a rules file that contains a USB configuration for each type of device you want to use for development. Each device manufacturer uses a different vendor ID. The example rules files below show how to add an entry for a single vendor ID (the HTC vendor ID). In order to support more devices, you will need additional lines of the same format that provide a different value for the SYSFS{idVendor} property.

Quick fix:

sudo -s
adb kill-server
adb start-server
adb devices

Permanent fix:

$ lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 093a:2510 Pixart Imaging, Inc. Hama Optical Mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 18ea:0004 Matrox Graphics, Inc. TripleHead2Go [Digital Edition]
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 010: ID 0bb4:0c87 High Tech Computer Corp.  <<<<<<<< my HTC phone
Bus 001 Device 008: ID 046d:0817 Logitech, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Note 0bb4 is the vendor ID. Next, create /etc/udev/rules.d/51-android.rules with the following lines:

SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

Final steps:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules

Done.

A list of popular vendor IDs:

Acer 0502
Dell 413c
Foxconn 0489
Garmin-Asus 091E
HTC 0bb4
Huawei 12d1
Kyocera 0482
LG 1004
Motorola 22b8
Nvidia 0955
Pantech 10A9
Samsung 04e8
Sharp 04dd
Sony Ericsson 0fce
ZTE 19D2

ref. Android Developers

Leave a Comment