adb devices => 没有权限(用户在plugdev组中; 你的udev规则是否有误?)

167

如果我将运行Android Oreo OS的安卓手机连接到Linux PC,就会收到以下错误日志:

$ adb devices
List of devices attached
xxxxxxxx    no permissions (user in plugdev group; are your udev rules wrong?);
see [http://developer.android.com/tools/device.html]

我尝试使用错误信息提供的链接,但仍然遇到相同的错误。


5
我曾经遇到同样的问题,按照链接中的步骤解决了。我手动安装了adb并将其添加到我的路径中(在Linux上进行了新安装),但仍然出现错误。我随后通过apt install adb(基于Ubuntu的发行版)将其删除并重新安装。之后,我再次检查了我的用户是否确实是plugdev组的一部分,重新启动了机器并重新插入了设备。权限对话框显示,并且所有操作都按预期工作,没有任何黑客攻击。 :) - Mokkun
只需使用sudo运行它 https://dev59.com/H2Yq5IYBdhLWcg3weAej#15043526 - JRichardsz
请执行以下命令以安装 Android SDK 平台工具:sudo apt-get install android-sdk-platform-tools-common - Md. Ruhul Amin
3
sudo apt-get install -y android-sdk-platform-tools-common && sudo cp /lib/udev/rules.d/51-android.rules /etc/udev/rules.d/ - ealfonso
@Mokkun的评论在我的Rpi Zero上完美运作。 - kyrlon
2个回答

425

检查设备厂商id和产品id:

$ lsusb
Bus 001 Device 002: ID 8087:8000 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 078: ID 138a:0011 Validity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 002 Device 003: ID 8087:07dc Intel Corp. 
Bus 002 Device 002: ID 5986:0652 Acer, Inc 
Bus 002 Device 081: ID 22b8:2e81 Motorola PCS 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

这里我的安卓设备是摩托罗拉PCS。因此,我的 vid=22b8pid=2e81

现在创建一个udev规则:

$ sudo vi /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e81", MODE="0666", GROUP="plugdev"

现在设备只要重新加载udev规则就可以被检测出来。那么,让我们来做一下:

$ sudo udevadm control --reload-rules

完成后,再次检查您的设备是否被adb检测到:

$ adb devices
List of devices attached
ZF6222Q9D9  device

好的,你已经完成了。

如果还是不行,尝试拔下/重新插入设备。

如果还是不行,重启你的操作系统。


8
这应该是被接受的答案。 - Roger
5
不要笑,但为了让这个工作起来,实际上我不得不重新启动Mint系统,似乎udevadm命令没有生效。 - Henrique de Sousa
31
@HenriquedeSousa 不得不拔掉并重新插入,这触发了 Android 设备上的“允许此计算机…”对话框。 - Majkeee
2
@HenriquedeSousa 我在Mint上也不得不做同样的事情。 - Wiktor Wardzichowski
4
在设备上浏览 USB / 网络共享设置(下拉全局通知菜单),切换到文件传输并禁用网络共享对我有用。 - fatal_error
显示剩余14条评论

225
我不知道这个问题背后的原因。但一个临时解决方法是将手机设置为文件传输模式MTP模式
这种解决方法的问题在于每次连接电缆时都需要从充电模式切换到文件传输模式或MTP模式。

4
由于某些原因,这项工作出现了问题。将其切换到文件传输模式并请求设备授权。然后运行 adb kill-server、adb start server 命令,现在我的设备得到了识别。谢谢。 - cesarsicas
13
最简单有效的答案。 - nmeln
11
这种方法有效的原因在于它将 lsusb 中的 pid 更改为您的 udev 规则中的一个。 - Pieter
1
如果你只需要 adb,那么这个方法可以使用,但是如果你还需要 fastboot,你需要使用另一个答案。 - Jan Pokorný
1
我也遇到了同样的问题!启用文件传输模式解决了各种麻烦,谢谢! - Code Cooker
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接