我的解决方案

我的解决方案

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

no permissions   fastboot

甚至sudo fastboot设备也无济于事

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

帮助!!

答案1

尝试使用sudo $(which fastboot)

例如sudo $(which fastboot) devices

sudo $(which fastboot) oem unlock

答案2

在这里找到了更好的解决方案:
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
$ 

让我们修复:

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

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

$ 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
$ 

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
$ 

集线器绝对不是智能手机,所以我们需要的 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
$ 

第三,重新插入您的设备以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

$ 

瞧!

答案3

我的解决方案

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

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

谷歌-18d1


51-android.规则

如果使用以下命令:

sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\" ..."

完全复制。我已经是 root 并尝试仅复制 echo 部分,但结果却不尽如人意。基本上,它将 \" 放在 .rules 文件中,而不是将斜线解释为转义字符。

如果您已经以 root 身份创建 .rules 文件,我建议使用以下命令(使用您的供应商 ID)。

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> /etc/udev/rules.d/51-android.rules


Udev 重新加载和触发

我重新加载了 udev 规则,然后发出了触发命令。我还拔下并插入了 USB,以确保万无一失。

udevadm control --reload
udevadm trigger


快速启动

然后,我以非特权用户身份运行:

fastboot devices

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

答案4

或者你可以添加所有的 udev 规则:Linux 的全套 Android USB 供应商 ID 规则 https://gist.github.com/jdamcd/6054951#file-51-android-rules

相关内容