我有一个类似的问题:
$ adb devices
List of devices attached
4df15d6e02a55f15 device
???????????? no permissions
调查
如果我运行lsusb
,我可以看到我连接了哪些设备,以及在哪里:
$ lsusb
...
Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ...
Bus 002 Device 049: ID 18d1:4e42 Google Inc.
这显示我的三星 Galaxy S3和我的Nexus 7 (2012)已连接。
检查这些权限:
$ ls -l /dev/bus/usb/002/{049,050}
crw-rw-r-- 1 root root 189, 176 Oct 10 10:09 /dev/bus/usb/002/049
crw-rw-r--+ 1 root plugdev 189, 177 Oct 10 10:12 /dev/bus/usb/002/050
等待。什么?那个“plugdev”组是从哪里来的?
$ cd /lib/udev/rules.d/
$ grep -R "6860.*plugdev" .
./40-libgphoto2-2.rules:ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", \
ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
./40-libgphoto2-2.rules:ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", \
ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
(我已经包装了这些行)
注意GROUP="plugdev"
线条。另请注意,这不适用于其他设备 ID:
$ grep -Ri "4e42.*plugdev" .
(不返回任何内容)
修复它
好的。那么解决方法是什么?
添加规则
创建一个/etc/udev/rules.d/99-adb.rules
包含以下行的文件:
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_GPHOTO2}="1",
ENV{GPHOTO2_DRIVER}="proprietary", ENV{ID_MEDIA_PLAYER}="1",
MODE="0664", GROUP="plugdev"
这应该是一行,为了便于阅读,我把它包装在这里
重启udev
$ sudo udevadm control --reload-rules
$ sudo service udev restart
就是这样
拔下/重新插入您的设备。
尝试一下
$ adb devices
List of devices attached
4df15d6e02a55f15 device
015d2109ce67fa0c device