Android fastboot等待设备


72

我正在尝试在NVIDIA测试git上加载自定义内核。我输入fastboot boot myImage之后,我得到:

<Waiting for device> 

我认为这是fastboot设备上的驱动程序处于打开状态的问题。但是我不知道如何在Linux上安装驱动程序。

你们知道如何安装驱动程序吗?


7
尝试使用sudo运行。sudo $ {which fastboot}设备wiki.cyanogenmod.org/w/UDEV
pho15年

请注意在网上搜索此错误消息的人员-如果通过Samsung设备收到此消息,请使用heimdall而不是fastboot。
melissa_boiko

Answers:


93

D Shu链接的页面的简短版本(并且没有可怕的弹出广告)是,当当前用户无法访问USB设备节点时,会发生此“等待设备”问题。USB ID在快速启动模式下是不同的,因此您可以轻松地在adb中获得对它的许可,而在快速启动中则没有。

要对其进行修复(在Ubuntu上;其他系统可能略有不同):

运行lsusb -v | less并找到相关的部分,看起来像这样:

Bus 001 Device 027: ID 18d1:4e30 Google Inc. 
Couldn't open device, some information will be missing
Device Descriptor:
...
  idVendor           0x18d1 Google Inc.

现在做

sudo vi /etc/udev/rules.d/11-android.rules

该文件尚不存在就可以;用这样的一行创建它,并插入您自己的用户名和供应商ID:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", MODE="0640", OWNER="mbp"

然后

sudo service udev restart

然后验证设备节点权限已更改:

ls -Rl /dev/bus/usb

甚至更短的俗气的版本只是fastboot作为root运行。但是,然后您需要以root用户身份运行与设备通信的每个命令,这往往会导致其他复杂情况。从长远来看,更简单的方法是修复权限。


30
+1为较短的俗气版本。+2(如果您将最后一行放在最上面)
espinchi 2014年

7
您绝对应该将最后一行放在最上面。
Klik 2015年

6
好吧,我们中的某些人不喜欢以rooty willy nilly的身份运行事物:P但是,sudo service udev restart这没有用,权限没有更改。闲逛在因特网和(bbs.archlinux.org/viewtopic.php?id=169103)对我下面的工作: udevadm control --reload 其次是: udevadm trigger
orblivion

4
顺便说一句,没有人喜欢vi sudo vim filename。@airtonix

2
谁拥有非vim vi?:P
poolie

85

只需使用sudo,快速启动需要root权限


14
它不需要root权限,只需要能够访问USB设备即可。
poolie

5
确实可以!您也可以在wiki.cyanogenmod.org/w/…中
espinchi 2014年

12
实际上不是。随机维基(即每个人都可以编辑的东西)不会改变它。它需要能够访问USB设备。它不需要root(尽管拥有root通常意味着它可以访问USB设备。)
Benjamin Podszun 2014年

1
@BenjaminPodszun实际上确实需要root权限,我不知道它是否会根据操作系统而变化,但是仅键入afastboot command来运行Fedora 22会得到“等待设备”,但键入sudo fastboot command实际上会执行命令。您需要更改对用户的访问权限的事实是,因为它是由另一个用户拥有的(实际上是sudo这样),只要用户位于sudoers组中,它就会升级用户权限。资源?我刚刚在几分钟前尝试过
Juan Carlos Alpizar Chinchilla

5
@JuanCarlosAlpizarChinchilla你把事情弄糊涂了。不,您不需要root用户访问权限。您只需要访问USB设备。我不特别了解Fedora,但是您不需要root。解决此问题的正确方法是:a)检查USB设备的权限并将您添加到具有访问权限的组(最有可能),或b)更改udev规则以授予您访问权限。您需要访问文件/设备,无需使用计算机可能授予的最大特权来运行内容。您可以运行sudo firefox,但不应这样做。您可以运行sudo的FASTBOOT,但你不应该,也不需要
本杰明Podszun

31

要使用fastboot命令,首先需要将设备置于fastboot模式:

$ adb reboot bootloader

设备进入快速启动模式后,您可以使用自己的内核启动它,例如:

$ fastboot boot myboot.img

上面的代码只会引导您的内核一次,而重新引导设备时将再次使用旧内核。要替换设备上的内核,您需要将其刷新到设备上:

$ fastboot flash boot myboot.img

希望能有所帮助。


7
这个答案根本没有帮助。显然,询问的人知道这一点,因为他们已经确实执行了该确切命令。
玛丽安

7
要从控制台成功执行fastboot boot myboot.img命令,设备需要处于fastboot模式,这就是我要指出的内容。即使这对提出问题的人没有帮助,也可能会帮助其他人。
Derek Gogol 2013年

5
这正是我过去一个小时左右所遇到的问题。谢谢!
马拉

3
这对我有用。我只是做了adb reboot bootloader,然后fastboot设备开始显示连接的设备。
2014年

2
可悲的是,我处在adb reboot bootloader可以正常工作的位置,但fastboot [anything]仍然无法等待设备
Sparr 2015年

3

尝试使用编译器fastboot在这种情况下生成的。文件路径是out/host/linux(or other)/bin/fastboot 并且sudo也是必需的。它在大多数时间都有效。


1

就我而言(在Windows 10上),它将很好地连接到adb,我可以键入任何adb命令。但是,一旦使用引导程序到达引导加载程序,adb reboot bootloader我就无法执行任何fastboot命令。

我确实注意到,在设备管理器中,连接到设备后会刷新。下一步是检查连接时发生了什么变化。显然,fastboot设备位于Kedacom USB Device。不太清楚那是什么,但是我将设备更新为使用其他驱动程序,在我的情况下为Fastboot interface (Google USB ID),这解决了我的waiting for device问题



0

最短的答案是先运行fastboot命令(在我的ubuntu情况下,即./fastboot-linux oem unlock)(这里我使用ubuntu 12.04并以nexus4为根),然后以快速启动模式打开设备的电源(在nexus 4中,按vol -向下键和电源按钮)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.