Ubuntu上的ADB无法识别Nexus 4


8

我无法在Ubuntu(12.04,安装了较新的内核:3.8.0-30-generic)上被ADB识别Nexus 4手机。手机已启用开发人员模式。

设备显示在lsusb中

$ lsusb
...
总线003设备034:ID 18d1:4ee5 Google Inc. 
...

但是,当我运行adb设备时,会得到一个空列表。我在互联网上发现了许多有关此问题的帖子,但都没有解决该问题的方法。有两种解决方案。

  • 将规则添加到/etc/udev/rules.d/51-android.rules中。我发现此文件的内容有各种变化。在大多数情况下,idVendoridProduct值应基于对输出进行设置的lsusb。以下是我尝试过的一些示例
SUBSYSTEM ==“ usb”,ATTRS {idVendor} ==“ 18d1”,ATTRS {idProduct} ==“ 4ee5”,MODE =“ 0666” GROUP =“ androiddev”,SYMLINK + =“ android%n”
SUBSYSTEM ==“ usb”,ATTR {idVendor} ==“ 18d1”,MODE =“ 0666”,GROUP =“ plugdev”
SUBSYSTEM ==“ usb”,ATTRS {idVendor} ==“ 18d1”,SYMLINK + =“ android_adb”,MODE =“ 0666”
SUBSYSTEM ==“ usb”,ATTR {idVendor} ==“ 18d1”,ATTR {idProduct} ==“ 4ee5”,MODE =“ 0666”,OWNER =“ my-login” 

添加此内容后,我将规则文件的权限设置为644,然后重新启动PC /重新启动了udev,重新启动了手机并插入了Nexus 4。

  • 将供应商ID添加到〜/ .android / adb_usb.ini。
回声0x18d1 >>〜/ .android / adb_usb.ini

我以root用户和普通用户身份运行adb设备,但仅得到一个空列表:

$ adb设备
*守护程序未运行。现在在端口5037上启动它*
*守护程序成功启动*
连接的设备列表 

关于如何解决此问题的任何想法?任何建议的帮助将不胜感激。

Answers:


7

使“ 开发人员选项”页面显示在设置菜单中是不够的(通过反复点击内部版本号)。在该页面上,有一个USB调试选项,默认为关闭。

启用“ USB调试”后,无论adb当前是否在PC上运行,使用USB将设备连接到PC都会显示“ USB调试已连接”通知。


您能否详细说明您的答案?在哪里可以找到此“页面”?
路易斯·德·索萨


我正在尝试通过adb触摸屏断开连接。我无法访问其任何菜单和应用程序。还有其他激活该USB调试功能的方法吗?
路易斯·德·索萨

1

有关如何在ubuntu上配置Nexus 4 udev规则的更完整说明集,请遵循以下说明:

如何找到您的设备供应商ID

您可以使用以下linux命令找到USB连接设备的供应商ID:

lsusb

这将生成所有已连接USB设备的列表,因此请确保已连接设备。

Bus 001 Device 004: ID 18d1:4ee2 Google Inc.

ID后面的字段的第一部分是供应商ID(18d1),第二部分对应于设备连接的模式。在这种情况下,4ee2等于启用调试的MTP模式。

为NEXUS 4创建UDEV规则

为了能够在Ubuntu下检测Nexus 4手机,首先要做的是创建适当的udev规则,使系统可以检测手机。

这些udev规则应能够处理4种不同的情况:

  • 手机以MTP模式连接(打开或关闭USB调试)
  • 手机以PTP模式连接(打开或关闭USB调试)
  • 手机以快速启动模式连接
  • 手机以恢复模式连接

它们将在中声明/etc/udev/rules.d/99-android.rules。如果文件已经存在,则只需在文件末尾附加内容。

# sudo gedit /etc/udev/rules.d/99-android.rules

以下内容必须添加。确保将您的登录字段替换为您登录时使用的正确用户名。

# Google Nexus 4 16 Gb
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee1", MODE="0666", OWNER="your-login" # MTP media (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0666", OWNER="your-login" # MTP media with USB debug on(multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee5", MODE="0666", OWNER="your-login" # PTP media (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee6", MODE="0666", OWNER="your-login" # PTP media with USB debug on (camera)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0666", OWNER="your-login" # Bootloader
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666", OWNER="your-login" # Recovery

重新启动服务

完成后,必须重新启动udev服务。

# sudo service udev restart

请注意,在某些情况下,还需要使用以下命令重新启动adb:

adb kill-server
adb start-server

或使用以下命令完全重新引导系统:

sudo reboot -n

重新连接USB电缆(而不是重新启动)也可能起作用。

授权ADB连接

如果您刚刚在手机上启用了ADB调试选项并创建了此新连接,则ADB命令可能会将您的设备列为unauthorized。只需检查手机屏幕,然后授权新连接即可。

学分

http://bernaerts.dyndns.org/android/267-android-nexus4-root-twrp-ubuntu中找到了大多数此类信息。这是ubuntu上nexus 4的生根指南。我只使用了本指南的第一步。


我刚刚从Ubuntu 14.04尝试了该解决方案,即使在重新启动系统后,仍无法识别Nexus 4。
路易斯·德·索萨

您是否尝试以root权限启动adb?查看有关Ubuntu 14.04 +的其他答复之一,您是否检查了设备上的USB连接模式?
hcpl

是的,我尝试了sudo。手机以MTP模式连接,并且调试已关闭。
路易斯·德·索萨

1

我正在运行Ubuntu 14.04 LTS,发现必须以root权限运行adb才能检测到我的手机。刚才,我从platform-tools目录运行./adb devices了,并提出了一个空清单。我通过运行./adb kill-server然后以root身份重新启动了adb sudo ./adb start-server。现在adb devices返回:

List of devices attached 
01d17087d29dec60    device

而之前看起来像这样:

连接的设备列表


杀死,然后以root身份开始对我有用。使用Nexus 5
Russ Wheeler

1
我刚刚在Ubuntu 14.04上尝试了此解决方案,但仍然得到一个空设备列表。
路易斯·德·索萨

0

仅供参考:我最近将手机上的android版本从4.4更新到了5.0,ADB不再将设备显示为已连接。似乎USB连接方法MTP现在必须是 PTP之前是正确的。


您能否详细说明您的答案?该方法到底应该在哪里进行调整?
路易斯·德·索萨

正如我之前所说,MTP是正确的,更新PTP之后是正确的。
flowtron
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.