安卓快速启动等待设备

79

我试图在我的NVIDIA测试git上加载自定义内核。 我输入了fastboot boot myImage,然后我得到以下信息:

<Waiting for device> 

我认为这是我设备fastboot模式下驱动的问题。 但我不知道如何在Linux上安装驱动程序。

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


8
尝试使用sudo运行。sudo ${which fastboot} devices。参考链接:http://wiki.cyanogenmod.org/w/UDEV - phoad
1
针对搜索此错误信息的人们的注意事项——如果您在使用三星设备时遇到此问题,请使用Heimdall而不是Fastboot。 - melissa_boiko
7个回答

97
链接由D Shu提供的页面简短版本(不含可恶的弹窗广告)表明,“等待设备”的问题发生在USB设备节点对当前用户不可访问时。在fastboot模式下,USB id与adb模式不同,因此您可能在adb中有权限但在fastboot中没有权限。
要解决这个问题(在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

更简短的方法是以root身份运行fastboot。但这样你需要以root身份运行与设备通信的每个命令,这往往会导致其他复杂性。长远来看,更简单的方法是修复权限。


31
+2 如果你把最后一行放在开头。 +1 如果你提供一个更简短、通俗易懂的版本。 - espinchi
7
你应该把最后一行放在最上面。 - Klik
6
有些人不喜欢随便使用 root 身份来运行事物 :P但是,"sudo service udev restart" 没有起作用,权限没有改变。在网上搜索(https://bbs.archlinux.org/viewtopic.php?id=169103)后,以下命令适用于我:`udevadm control --reload`之后执行:`udevadm trigger` - orblivion
5
顺便说一句,没有人喜欢vi...只需使用“sudo vim 文件名”即可。@airtonix - user1974640
2
谁有一个非vim的vi? :P - poolie
显示剩余3条评论

89

只需使用sudo,快速启动需要管理员权限


15
不需要root权限,只需能够访问USB设备。 - poolie
5
确实如此!您还可以在http://wiki.cyanogenmod.org/w/Doc:_fastboot_intro#.3Cwaiting_for_device.3E_errors中找到此提示。 - espinchi
12
实际上并没有。一个随机的维基百科(即任何人都可以编辑的东西)不会改变这一点。它需要能够访问 USB 设备,但不需要 root 权限(尽管拥有 root 权限通常意味着它能够访问 USB 设备...)。 - Benjamin Podszun
1
实际上需要root权限,我不知道是否因操作系统而异,但在Fedora 22上运行fastboot command只会得到“等待设备”,而键入sudo fastboot command将实际执行该命令。你需要更改用户访问权限的原因是它被另一个用户拥有,这就是sudo所做的事情,只要他们是sudoers组中的成员,就提升用户权限。来源?我几分钟前刚试过。 - Juan Carlos Alpizar Chinchilla
6
@JuanCarlosAlpizarChinchilla 你把事情弄混了。不,你不需要root权限,你只需要访问USB设备的权限。我不知道Fedora具体情况,但是你不需要root权限。解决问题的正确方法应该是a)检查USB设备的权限并将你添加到有访问权限的组中(很可能)或b)更改udev规则以授予你访问权限。你需要访问文件/设备,不需要使用计算机可能授予的最高权限运行程序。你可以运行sudo firefox,但你不应该这样做。你可以运行sudo fastboot,但也不需要这样做。 - Benjamin Podszun
显示剩余6条评论

34

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

$ adb reboot bootloader

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

$ fastboot boot myboot.img

上述操作只会在设备重启时启动内核一次,下次重启设备时仍将使用旧版内核。要替换设备上的内核,您需要将其刷入设备:

$ fastboot flash boot myboot.img

希望这能有所帮助。


8
那个回答完全没有帮助。显然,提问的人已经执行了那个确切的命令,因此他们已经知道这一点。 - Marian
8
要在控制台成功执行“fastboot boot myboot.img”的命令,设备需要处于“fastboot模式”,这是我想要指出的。即使这不能帮助问问题的人,它可能会帮助其他人。 - Derek Gogol
5
这正是我过去一小时左右陷入困境的地方。谢谢! - Mala
3
这对我有用。我只是运行了 "adb reboot bootloader" 命令,然后 "fastboot devices" 开始显示已连接的设备。 - abjbhat
5
很遗憾,我现在处于这样一个状态:adb reboot bootloader 命令可以正常运行,但 fastboot [任何命令] 命令却一直停留在等待设备的状态。 - Sparr

3

当出现这种情况时,请尝试使用编译器生成的fastboot。文件路径为out/host/linux(或其他)/bin/fastboot,同时需要使用sudo。在大多数情况下,它都能正常工作。


2
在我的情况下(在Windows 10上),它能够成功连接到adb,我可以键入任何adb命令。但是一旦使用adb reboot bootloader进入引导程序,我就无法执行任何fastboot命令。
我注意到在设备管理器中,当我连接到设备时,它会刷新。下一步要做的是检查连接时发生了什么变化。显然,快速启动设备在Kedacom USB Device内部。不太确定那是什么,但是我更新了设备以使用不同的驱动程序,在我的情况下是Fastboot interface (Google USB ID),这解决了我的waiting for device问题。

1
在您的设备上,前往设置->开发人员选项,并选择“允许OEM解锁”,如Unlock Your Bootloader所示。
至少对于我的MotoE 4G,这个方法有效。

0

最简短的答案是首先运行fastboot命令(在我的Ubuntu系统中,即./fastboot-linux oem unlock)(这里我使用的是Ubuntu 12.04和rooting nexus4),然后在快速启动模式下启动您的设备(在nexus 4上通过按下音量减键和电源按钮)。


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