我们应该使用哪个USB驱动程序来连接Nexus 5?

68

截至撰写此文时,Google未提供Nexus 5的USB驱动程序(适用于Windows)。通常链接(http://developer.android.com/sdk/win-usb.html)显示了几种Nexus系列的Windows USB驱动程序。然而,“Nexus 5”没有包括在内。请注意,Nexus“S”(字母S,不是数字5)是受支持的。

此外,从该网站获取的最新版本下载是版本8,日期为2013年7月17日。与其前任版本7相比,文件相同。

在Google修复此问题之前,我们该怎么办?如何为Nexus 5进行调试和开发?


2
没有新驱动程序的原因是从驱动程序版本8开始,驱动程序应该对所有新设备保持相同。我会更新文档以反映这一点。 - ralf at android
我成功地在WinXP上启用了ADB和MTP,方法如下: <br>
  1. 安装Wumdf 1.0驱动程序(如果没有这些驱动程序,以下步骤将失败)
  2. 安装Google USB驱动程序(版本8.0)
  3. 安装LG USB驱动程序
使用这个组合,当USB调试模式关闭时,我可以进行MTP文件传输(为什么只有关闭时?)。然而,当我启用USB调试模式时,MTP驱动程序被列为“配置错误”。非常令人沮丧......
- gadget
4
我们更新了http://developer.android.com/sdk/win-usb.html页面,明确说明所有Nexus设备都包含在Google USB驱动程序中,并且也声明该驱动程序仅需要用于ADB。 Nexus 5获得支持,如果只需传输文件,则不需要该驱动程序。 如果您仍然有问题,请在http://b.android.com上报告错误。 - ralf at android
2
更新:这可能与本题略不相关,但如果您的Nexus设备被设备管理器识别而未被ADB识别,请尝试以下操作:http://b.android.com/62365#c7。 - ralf at android
@ralfatandroid - 我们感谢您的帮助,但是您的编辑完全覆盖了原始问题并使其变得毫无意义。我已经尝试将其转换为更通用的问题,并建议将您编辑的内容转换为答案。同时,我已经回滚了问题的核心部分,剥离了冗长的内容,并重新打开了它。 - Brad Larson
显示剩余2条评论
18个回答

113

我只是想做出一点贡献,因为我已经在Windows 8上的Nexus 5设备上进行了调试,而不需要做所有这些。

当我插入它时,设备管理器中没有任何黄色感叹号。所以对我来说,驱动程序是好的。但是该设备未列在我的Eclipse DDMS中。经过一点搜索,这只是设备设置中要更改的选项。默认情况下,Nexus 5 USB计算机连接处于MTP模式(媒体设备)。

你需要做的是:

  • 从电脑中拔掉设备
  • 进入 设置 -> 存储。
  • 在操作栏中,单击选项菜单并选择“ USB计算机连接”。
  • 勾选“相机(PTP)”连接。
  • 插入设备,您应该会在设备上看到弹出窗口,允许您接受计算机的传入连接,或类似的内容。
  • 最后,你应该现在在DDMS中看到它。

希望这能帮到你!


1
太棒了,这解决了我的问题,非常感谢你,almighty972! - Nick
这对我也起作用了。我在其他设备上也遇到了同样的问题,切换到PTP模式可以让它在ddms中显示出来。 - Chris Feist
3
这应该是被接受的答案,不需要任何麻烦的操作,只需在设备上更改一个设置即可。 - jay
2
在驱动程序版本7和8之间,我们解决了适当的ADB+MTP支持不足的问题。在版本7中,INF添加了一个不正确的条目,导致MTP模式在某些情况下无法正常工作。还要注意,在Windows XP上,MTP不是基本操作系统的一部分(尽管它是由媒体播放器10添加的)。最后,如果您将Google USB驱动程序从rev 7更新到8,并且ADB仍然无法识别MTP模式下的设备,请尝试我在http://b.android.com/62365#c7中列出的解决方法。 - ralf at android
2
小提示:这个方法在我使用Windows 7时没有成功,可能是因为我没有看到almighty972的评论,他使用的是Windows 8。 :) 我使用了Alex B.下面的解决方案(从Google下载最新的USB驱动程序),并且成功了。 - Eric P
显示剩余13条评论

55

以下方法适用于我:

  1. Google USB Driver下载Nexus 5的驱动程序。
  2. 解压缩ZIP文件并将所有文件放在桌面上的一个文件夹中。
  3. 将您的设备连接到计算机上。
  4. 在计算机上启动设备管理器。
  5. 现在您应该在硬件列表中看到列出的Nexus 5。
  6. 右键单击“Nexus 5”行,然后单击更新驱动程序软件
  7. 接下来,单击“浏览我的计算机”选项。
  8. 在新窗口中,单击“浏览...”按钮。
  9. 转到在步骤2中解压缩的文件夹。选择您提取USB驱动程序的文件夹。单击下一步。
    • 确保也选中子文件夹框。
  10. 现在,Windows安装程序将搜索Nexus 5驱动程序。当要求权限时,单击安装
  11. 等待过程完成,然后检查设备管理器列表以确认安装成功。

来源:下载和安装Google Nexus 5 USB驱动程序(ADB / Fastboot)


2
在我电脑上运行良好,系统为Windows 8.1(启用USB调试)。 - user1480019
对我有用。附加说明:1)确保在手机上启用USB调试(设置->启用开发人员选项(谷歌此选项)-> USB调试)2)确保允许手机连接到计算机(手机应该会弹出一个提示)。如果您在安装驱动程序后不拔下USB,然后重新连接。 - Kevin
对我来说没问题。 MTP开启,USB调试也开启。最初我是关闭了MTP然后它无法正常工作。 - Julien
这对我起作用了,但使用SDK下载不起作用,所以我手动下载了压缩包。 - Sunny
在我的Windows 8.1上运行良好 - 谢谢! 我已启用“USB调试”,并将我的USB连接模式设置为“相机(PTP)”。 - Benny Code

54

我有一个解决方案。

我更新了文件android_winusb.inf,以反映Nexus-5VIDPID。现在它加载通用驱动程序并支持Eclipse中的ADB

请注意,在您进行过任何以前的尝试后,转到设备管理器并更新“ Nexus 5”(显示为黄色感叹号)的驱动程序。

您必须导航到USB驱动程序目录,在我的机器上是:C:\Users\Xxxxxxxxx\android-sdk\extras\google\usa_driver

在该目录中,在x86和amd64部分中编辑文件android_winusb.inf并插入一行:

%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE1&MI_01

这已经足够让我使它工作了。

这是我的文件内容:

;
; Android WinUsb driver installation.
;
;
;
; Includes FIX for the Nexus-5 ADB,
;                  --- jonovos         ---
;                  --- petuniaPlatypus ---
;                  --- 2013-11-07      ---
;
;        By snooping on the USB for the Nexus-5,
;        it is known that the VID = 18D1 and PID = 4EE1.
;        With this, we insert them into the GENERIC sections bwlow.
;
;
[Version]
Signature           = "$Windows NT$"
Class               = AndroidUsbDeviceClass
ClassGuid           = {3F966BD9-FA04-4ec5-991C-D326973B5128}
Provider            = %ProviderName%
DriverVer           = 07/09/2013,8.0.0000.00000
CatalogFile.NTx86   = androidwinusb86.cat
CatalogFile.NTamd64 = androidwinusba64.cat

[ClassInstall32]
Addreg = AndroidWinUsbClassReg

[AndroidWinUsbClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-1


[Manufacturer]
%ProviderName% = Google, NTx86, NTamd64


[Google.NTx86]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-new-line-added:
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE1&MI_01
;;;;;;;;
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01


[Google.NTamd64]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-new-line-added:
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE1&MI_01
;;;;;;;;
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01

[USB_Install]
Include = winusb.inf
Needs   = WINUSB.NT

[USB_Install.Services]
Include     = winusb.inf
AddService  = WinUSB,0x00000002,WinUSB_ServiceInstall

[WinUSB_ServiceInstall]
DisplayName     = %WinUSB_SvcDesc%
ServiceType     = 1
StartType       = 3
ErrorControl    = 1
ServiceBinary   = %12%\WinUSB.sys

[USB_Install.Wdf]
KmdfService = WINUSB, WinUSB_Install

[WinUSB_Install]
KmdfLibraryVersion  = 1.9

[USB_Install.HW]
AddReg  = Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}"

[USB_Install.CoInstallers]
AddReg    = CoInstallers_AddReg
CopyFiles = CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"

[CoInstallers_CopyFiles]
WinUSBCoInstaller2.dll
WdfCoInstaller01009.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

[SourceDisksNames]
1 = %DISK_NAME%,,,\i386
2 = %DISK_NAME%,,,\amd64

[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll  = 1
WdfCoInstaller01009.dll = 1

[SourceDisksFiles.amd64]
WinUSBCoInstaller2.dll  = 2
WdfCoInstaller01009.dll = 2

[Strings]
ProviderName                = "Google, Inc."
SingleAdbInterface          = "Android ADB Interface"
CompositeAdbInterface       = "Android Composite ADB Interface"
SingleBootLoaderInterface   = "Android Bootloader Interface"
WinUSB_SvcDesc              = "Android USB Driver"
DISK_NAME                   = "Android WinUsb installation disk"
ClassName                   = "Android Device"

1
当您获得PID = 4EE1时,您是否在开发者工具中启用了ADB?通常,PID 4EE1仅用于MTP(不带ADB)进行文件传输(在这种情况下,您不需要任何驱动程序,因为Windows 8应该可以透明地处理此操作),而PID 4EE2用于MTP + ADB。USB驱动程序仅对ADB有用,而不适用于简单的MTP或PTP使用。 - ralf at android
3
如果您在使用N5的MTP(媒体传输协议,用于访问文件)时没有同时激活ADB,则会得到PID = 4EE1。Windows 7和8本身支持此功能,无需安装驱动程序。如果要在Windows XP上使用,请先安装Media Player 10。请注意,在Google USB驱动程序中定义PID = 4EE1可能会阻止Windows使用其本机的MTP驱动程序(这是版本7驱动程序的问题,我们在版本8中已修复)。 - ralf at android
3
有人可以确认这在Windows 8上有效吗?我收到一条消息,告诉我该文件没有哈希值并且已被篡改,因此无法更新驱动程序。 - Syntax
1
@Syntax,请尝试使用Alex B的答案。 - Sedat Kapanoglu
1
@PetuniaPlatypus,它给了我“文件的哈希值在指定的目录文件中不存在。该文件可能已损坏或遭到篡改。”的错误。我已经禁用了设备驱动程序签名检查(在cmd中运行“BCDEDIT /set nointegritychecks OFF”),但仍然无法解决问题。 - tchelidze
显示剩余3条评论

13

我的Nexus 5的ID为USB\VID_18D1&PID_D001。

使用谷歌USB驱动程序,并修改文件android_winusb.inf。找到以下行:

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0

并在下面添加:

%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D001

重复操作,因为有两个部分需要修改:[Google.NTx86][Google.NTamd64]

如果您遇到问题,请尝试以下操作:

连接您的Nexus 5手机,打开设备管理器,在“其他设备”中找到Nexus 5并右键单击。选择“属性”,然后选择“详细信息”,在选项列表中选择“硬件ID”。记下短ID,并修改带以下内容的行:

%CompositeAdbInterface% = USB_Install, YOUR_SHORT_ID

4
这对我很有效!对于我的Nexus 5,硬件ID是USB\VID_18D1&PID_D002,所以我输入了:%CompositeAdbInterface% = USB_Install,USB\VID_18D1&PID_D002 - Tobias
4
我也一样,USB\VID_18D1&PID_D002 - Ian Mercer
在 Android L 的 OTA 更新之后,我必须再次更改它: USB\VID_18D1&PID_4EE7 - Khinsu
因为链接到维基百科的USB文章而被踩,我认为SO上的每个人都知道什么是USB或设备管理器! - AaA

10

我在如何修复Nexus 7上的MTP问题中找到了解决方案。


在Windows 8上解决这个问题的另一种方法:此问题可能发生是因为您安装了来自Android SDK的Google ADB驱动程序。即使在Nexus 7上关闭USB调试,Windows也会选择ADB驱动程序而不是MTP驱动程序。当从Windows 8升级到Windows 8.1时,它也会重新出现。要解决此问题:

  1. 将Nexus 7插入并确保USB模式设置为MTP
  2. 运行devmgmt.msc
  3. 找到ADB驱动程序,它可能位于“Android设备”或“ADB设备”下
  4. 右键单击它,然后选择“更新驱动程序软件”
  5. “浏览我的计算机以查找驱动程序软件”
  6. “从设备驱动程序列表中选择一个驱动程序”
  7. 如果选中了“显示兼容硬件”,则应该在“型号”下看到两个驱动程序:
  8. “Android ADB接口”
  9. “MTP USB设备”或“复合USB设备”之一
  10. 选择“MTP / Composite USB Device”(即不是“Android ADB Interface”的那一个),然后单击下一步。
  11. 该设备现在应出现为MTP设备。

它已被确认可用于Nexus 7 2013。


这对我在Nexus 5和Windows 8.1上起作用。谢谢。 - lalibi
加一千亿。为什么DAC上没有记录这个?我已经搜索了很久,想找到原因。 在我的N5上解决了这个问题。 - 43matthew
太感谢了!您的解决方案有效,其他所有方法都失败了。 - Raphael Royer-Rivard

3

3
我在Windows 7上使用Nexus 5时遇到了与这里的人类似的问题。不需要编辑任何.inf文件,我的计算机卡在旧版的Google USB驱动程序(7.0.0.1)上。即使我尝试手动选择目录或.inf文件,Windows 7也拒绝安装更新版本。必须手动删除WINDOWS \ inf文件夹中特定缓存的.inf文件,按照此处的说明进行操作:http://code.google.com/p/android/issues/detail?id=62365#c7 同时确保在开发者选项中打开USB调试。有一个技巧可以显示开发者选项,在“关于手机”信息底部的版本号上点击7次!

2

Nexus 5有多个硬件版本。因此,接受的答案并不适用于所有设备(对我也没用)。

  1. Open Device Manager, right click and Properties. Now go to the "Details" tab And now select the property "Hardware Ids". Note down the PID and VID.

  2. Download the Google driver

  3. Update the android_winusb.inf with above VID and PID

    %CompositeAdbInterface% = USB_Install, USB\VID_18D1&**PID_4EE1**
    
  4. Now in Device Manager, find Nexus 5, and update the driver software, and browse to the location where you downloaded.

  5. The driver should be installed, and you should be see the device in ADB.


这在Nexus 5和Nexus 4上进行了测试。 - coder000001

1
我一开始也很迷茫,但找到了一个相当简单的解决方案。请注意,我在启用Nexus 5(4.4.2)上的开发者选项和USB调试后,在Windows 7上完成了所有这些操作,然后通过USB连接到电脑。
如果您转到下载链接 - http://developer.android.com/sdk/win-usb.html - 您将在第4步底部注意到驱动程序的安装位置。如果您从控制面板中找到设备和打印机并找到您的设备,请右键单击并转到属性,然后单击顶部的硬件选项卡,单击出现问题的设备显示,单击属性,然后更改设置。接下来,选择更新驱动程序,手动选择位置,并选择Google指定为安装目录的目录,他们指定为\extras\google\usb_driver\
对我来说,这解决了问题,我的Nexus 5现在出现在DDMS中。

1

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