没有权限 fastboot - fastboot 和 adb 不工作

Rup*_*ali 36 android adb

我正在尝试使用 ADB 解锁我的 Moto 手机,但是当我这样做时,fastboot devices我不断收到

no permissions   fastboot
Run Code Online (Sandbox Code Playgroud)

即使sudo fastboot设备也无济于事

使用 sudo 我得到了这个 sudo: fastboot: command not found

帮助!!

Sri*_*wda 67

尝试使用 sudo $(which fastboot)

例如 sudo $(which fastboot) devices

sudo $(which fastboot) oem unlock

  • 必须有更好的解决方案,仅以 root 权限运行所有内容既不安全也不是好的做法。 (8认同)
  • **fastboot** 需要 sudo 吗? (2认同)

eli*_*ai2 33

在这里找到了更好的解决方案:https :
//stackoverflow.com/a/28127944/1621927

这是评论:您可以永久解决问题,

而不是在sudo每次需要运行时强制执行权限fastboot

  1. 用于lsusb识别您的设备 USB VendorID
  2. 配置udev为在您的设备插入时设置适当的权限
  3. 利润!

作为奖励 - 它也将被修复adb

例如,就我而言(对于“Megafon SP-A20i”):

$ fastboot devices
no permissions  fastboot
$ sudo fastboot devices
[sudo] password for kaa: 
MedfieldA9055F28    fastboot
$ 
Run Code Online (Sandbox Code Playgroud)

让我们修复:

首先,我们需要识别设备:

a) 查找 USB 总线编号(黑客:我知道该设备是基于 Intel 的设备)

$ fastboot -l devices
no permissions         fastboot usb:1-1.2
$ lsusb |grep 001 |grep -i intel
Bus 001 Device 044: ID 8087:09ef Intel Corp. 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
$ 
Run Code Online (Sandbox Code Playgroud)

b) 寻找其他英特尔设备:

$ lsusb |grep 8087
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 044: ID 8087:09ef Intel Corp. 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
$ 
Run Code Online (Sandbox Code Playgroud)

集线器绝对不是智能手机,因此 - 我们需要的 USB vendorID 是“8087”。

其次,配置udev(您必须用您的值替换“idVendor”值):

$ sudo sh -c "echo '# Megafon SP-A20i' >> /etc/udev/rules.d/51-android.rules"
$ sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\", MODE=\"0666\", GROUP=\"plugdev\"' >> /etc/udev/rules.d/51-android.rules"
$ sudo service udev restart
udev stop/waiting
udev  start/running, process 1821
$ 
Run Code Online (Sandbox Code Playgroud)

第三,重新插入您的设备udev以发挥它的魔力。

最后检查:

$ fastboot -l devices
MedfieldA9055F28       fastboot usb:1-1.2
$ adb devices
List of devices attached 

$ fastboot reboot
rebooting...

finished. total time: 0.253s
$ sleep 90
$ adb devices
List of devices attached 
MedfieldA9055F28    device

$ 
Run Code Online (Sandbox Code Playgroud)

瞧!

  • 这是正确答案。事实上,这是唯一的答案。使用 `sudo` 不是解决方案。 (4认同)
  • 这里有一个官方列表:https://developer.android.com/studio/run/device.html (3认同)
  • https://wiki.cyanogenmod.org/w/UDEV 上有一个很好的 android 供应商 ID 列表 (2认同)
  • 您还需要`sudo udevadm trigger`。 (2认同)

Bra*_*ier 5

我的解决方案

感谢 elichai2 和这个链接和列表,我能够解决我的 fastboot 权限问题。

我有 Google Nexus 6P,所以我使用以下作为我的供应商 ID:

谷歌 - 18d1


51-android.rules

如果使用以下命令:

sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\" ..."
Run Code Online (Sandbox Code Playgroud)

准确地复制它。我已经是 root 并试图仅复制给我带来不良结果的回声部分。基本上它将 \" 放在 .rules 文件中,而不是将斜杠解释为转义字符。

如果您已经创建了 .rules 文件(使用您的供应商 ID),我建议使用以下内容。

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> /etc/udev/rules.d/51-android.rules
Run Code Online (Sandbox Code Playgroud)


Udev 重新加载和触发

我重新加载了 udev 规则,然后发出了触发器命令。我还拔掉并插入了 USB 以进行良好的测量。

udevadm control --reload
udevadm trigger
Run Code Online (Sandbox Code Playgroud)


快速启动

作为一个非特权用户,我然后运行:

fastboot devices
Run Code Online (Sandbox Code Playgroud)

它按预期工作。我希望这对遇到权限问题的任何人都有用或有所帮助。