ADB不再识别设备

5
一整行的平板电脑不再显示在ADB设备中(它们一周前还能正常工作)。其他Android设备可以工作(例如我的Nexus 5手机)。这是我第一次遇到这个问题。我已经阅读并尝试了大多数我在SO和其他网站上找到的解决方案,但都没有成功。以下是情况:
  • 它们在lsusb中显示为Bus 010 Device 004: ID 18d1:dddd Google Inc.
  • 创建/编辑/etc/udev/rules.d/51-android.rules并添加SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"(以及几种其他属性组合)。
  • 通过sudo service udev restart重新启动udev
  • 通过adb kill-server; adb start-server`重启ADB服务器。
  • 尝试了PC上的所有USB端口。
  • 尝试了另一个USB电缆。
  • 重新启动了PC和平板电脑。
奇怪的是,即使我清空/etc/udev/rules.d/51-android.rules文件并重新启动udev守护程序,adb仍然会检测到我的Nexus 5手机。
在这个问题出现之前,我记得做了以下更改:
  • 开始使用Android Studio而不是Eclipse(虽然我使用的是相同的ADK和工具)
  • 将Ubuntu升级到最新版本14.04(也许存在一些udev的变化/问题?)
欢迎提出任何进一步的建议,提前感谢。
编辑:当按照评论中建议的运行lsusb -v时,我可以看到以下描述:
  bInterfaceClass         8 Mass Storage
  bInterfaceSubClass      6 SCSI
  bInterfaceProtocol     80 Bulk-Only
  iInterface              1 Mass Storage

尽管Nexus 5显示为

  bInterfaceClass       255 Vendor Specific Class
  bInterfaceSubClass    255 Vendor Specific Subclass
  bInterfaceProtocol      0
  iInterface              4 MTP

编辑:这些平板在其他电脑中通过ADB完美地工作(包括Windows和Linux)。所以问题肯定是出现在我的电脑上了。


编辑:根据评论中的建议,我尝试使用TCP模式的ADB,效果很好。运行dmesg后,我发现系统正在尝试使用ndiswrapper加载Windows驱动程序来识别ADB。

[277701.803751] usb 1-4: reset high-speed USB device number 48 using ehci-pci
[277701.952803] ndiswrapper (load_wrap_driver:103): couldn't load driver android_winusb; check system log for messages from 'loadndisdriver'

在其他正常通过USB使用ADB的Linux设备上不会出现此消息。


4
关于关闭投票:请阅读FAQ。这个问题非常适合在StackOverflow上提问。 - m0skit0
我昨天遇到了这个问题,通过从USB切换到相机再切回来解决了它(当您连接时,通知会出现在状态栏中)。这是唯一的问题,而且突然发生。 - Opiatefuchs
请查看http://ktnr74.blogspot.com/2014/09/the-most-comprehensive-write-up-on-how.html。 - Alex P.
@AlexP,那个链接里充斥着错误的信息。不过我还是会尝试一下。 - m0skit0
你没有理解重点。当运行 lsusb -v 命令查看设备时,你是否看到了 255/66/1 接口?如果没有看到,那么设备本身存在问题。在 PC 端进行的任何更改都无法改变这一点。 - Alex P.
显示剩余10条评论
2个回答

1

既然同样的设备在其他电脑上可以工作,你可以排除掉平板电脑方面的硬件问题。需要检查的进一步事项包括:

  • PC上的USB权限: 尽管其他设备可以工作,但您可能仍然没有足够的权限使用adb访问平板电脑。您提到的udev规则是特定于供应商的,有时也是特定于设备的。排除权限问题的唯一方法是以root用户身份启动adb。adb分叉一个守护进程,因此在尝试这样做之前必须杀死任何adb实例:
    $ pkill adb
    $ sudo adb devices
    如果设备显示在列表中,则必须调整udev规则。暂时地,您可以继续正常使用adb - 它将连接到现在以root身份运行并按预期工作的服务。
  • 驱动程序问题: 在平板电脑的开发者菜单中,您可以选择“通过tcp进行adb”作为选项。启用它,然后从计算机连接到它。如果这有效,则调试桥本身很好,并且USB连接必须是问题的来源。我们已经排除了有缺陷的电缆,因为设备出现在lsusb中并且其他功能按预期工作。运行dmesg应该为您提供解决问题所需的信息,很可能是干扰设备驱动程序。尝试使用rmmod/modprobe卸载它。

0
12.10+版本以来的一个不同之处是MTP支持。我知道14.04一旦插入手机就会自动使用它。这应该比“大容量存储”更快,更简单。也许它正在妨碍你,你应该找到一种方法从PC端或设备上禁用它?

谢谢,我已经尝试过了。在这些平板电脑中,MTP无法正常工作。当我激活它时,甚至在USB总线上也看不到它。 - m0skit0

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