fastboot和adb无法使用sudo

Guy*_*her 13 linux ubuntu android sudo fastboot

在尝试运行fastboot命令时,我的Ubuntu机器上有一个非常奇怪的问题.

当我跑:

fastboot devices

我明白了

no permissions   fastboot

所以我用adminidtrator权限运行命令:

sudo fastboot devices

然后我得到了结果

sudo: fastboot: command not found

怎么会这样?我有我的PATH中的目录,一切正常,没有sudo.

小智 34

您可以永久修复问题,而不是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供应商ID是"8087".

其次,配置udev(您必须用您的"idVendor"替换"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)

瞧!

  • 谢谢这个工作,但与"lsusb | grep 001 | grep -i intel"的界限搞砸了我,因为我试图添加一个谷歌手机的nexus 5x手机.所以我省略了"| grep -i intel"部分并仅使用了"lsusb | grep 001",它给了我一个显示我的nexus 5x设备的完整列表.'Bus 001 Device 015:ID 18d1:d00d Google Inc."然后我使用18d1代替8087并且它工作了 (2认同)

Mac*_*ado 9

您可以使用

sudo $(fastboot)设备

  • 请不要使用sudo作为答案.如果没有必要,以root身份运行真的很糟糕. (2认同)