【问题标题】:adb can list devices but adb shell/logcat doesn't workadb 可以列出设备,但 adb shell/logcat 不起作用
【发布时间】:2013-10-03 05:07:18
【问题描述】:

短版

adb devices 可以列出设备,但adb shelladb logcat 只是挂起并且不起作用。

加长版

这里有各种命令输出。

/* system info */
$ uname -a
Linux ubuntu-vm 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64    x86_64 GNU/Linux

/* udev info */
$ cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" 

$ lsusb
Bus 001 Device 003: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-P7500 [Galaxy Tab 10.1]
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub



$ adb devices -l
List of devices attached 
0A3C294805017006       device usb:1-1 product:full_toroplus model:Full_AOSP_on_Toroplus device:toroplus

$ adb shell
/* no output, just hang */

$ adb logcat
/* no output either */

/* verbose mode */
$ ADB_TARCE=1 adb shell
system/core/adb/adb.c::main():Handling commandline()
system/core/adb/commandline.c::adb_commandline():starting interactive shell
system/core/adb/adb_client.c::_adb_connect():_adb_connect: host:version
..........
4f4b4159 OKAY
system/core/adb/adb_client.c::switch_socket_transport():Switch transport success
system/core/adb/transport.c::writex():writex: fd=3 len=4: 30303036 0006
system/core/adb/transport.c::writex():writex: fd=3 len=6: 7368656c6c3a shell:
system/core/adb/transport.c::readx():readx: fd=3 wanted=4
/* hang at this point */

似乎 adb 服务器正在等待来自手机的一些数据但无法获取它,因此它卡在那里。

我试过了:

  • 杀死并重新启动 adb 服务器
  • 拔下手机再插上
  • 重启手机
  • 在手机上禁用 USB 调试,然后启用它

有时,拔下/插入手机后,它会工作一段时间(我可以这样做adb shell),但很快它就会停止工作。而且大多数时候,拔/插手机甚至都没有任何作用!

我正在运行 ubuntu 作为 vmplayer 来宾。主机是windows 7。

提前感谢任何帮助或提示。

更新

将手机插入后置usb端口后,它突然工作了!但我不确定问题是否真的解决了。会看到的。

【问题讨论】:

  • “Full_AOSP_on_Toroplus”听起来像是售后固件版本——这可能是手机固件的问题吗?您是否可以通过这台计算机与任何其他设备通话,或通过其他计算机与此手机通话?
  • @ChrisStratton:是的,它是一个自定义 ROM。它适用于我的本地运行 ubuntu 的办公室 PC。只是它不会在vmplayer中运行ubuntu。所以我猜它与 vmplay usb 配置有关。
  • 我遇到了同样的问题。将手机插入其中一个后置 USB 端口后,它也可以正常工作。这是为了确认您的解决方案有效。
  • NAA 但可能会有所帮助:在 Windows 上,我遇到了与 cygwin 相同的问题,但它在 cmd 中有效

标签: android ubuntu adb vmware-player


【解决方案1】:

我遇到了与 adb shell 挂起完全相同的问题。我在 Ubuntu 主机上运行 Ubuntu 12.04 VM 来宾。对我来说,问题是 VM 的 USB 兼容性设置设置为 1.1,它至少需要为 2.0。要更改设置,请关闭 VM 并在 VMPlayer 启动菜单中选择“编辑虚拟机设置”。然后选择“USB Controller”设备并将“USB Compatibility”更改为USB 2.0。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,通过在计算机上尝试不同的 USB 端口得到了不同的结果(虽然效果不好)。我最终决定去商店买一条新的 USB 数据线。现在它完美无缺!我猜 USB 电缆可能会磨损或坏...

    小故事:购买新电缆!为我工作!

    【讨论】:

      【解决方案3】:

      不确定这是否意味着以这种方式使用,但我也有 adb shell 挂起,但是运行 echo my_command | adb shell 允许我在目标上运行命令。

      例如echo settings get secure sysui_qs_tiles | adb shell

      另外,adb shell < /dev/stdin 可能很有趣。

      【讨论】:

        【解决方案4】:

        对于我的 VMWare 组合(Windows 10 Host + Ubuntu 18 Guest + Galaxy S9),在将 USB 兼容性更改为 1.1 后,它实际上可以工作。不知道为什么,但如果你有这个问题值得一试。

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题。我刚刚移除了连接到第二个 USB 端口的鼠标 USB 线,并将电话线连接到那个(第二个 USB 端口)。有效!

          【讨论】:

            【解决方案6】:

            我注意到如果我先将usb插入我的mac,然后将它插入android,adb可以工作。 也许这就是人们注意到不同电缆工作的原因? (碰巧以不同的顺序连接/断开电缆)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-07-27
              • 2013-04-03
              • 1970-01-01
              • 2012-04-17
              • 1970-01-01
              • 1970-01-01
              • 2011-07-29
              相关资源
              最近更新 更多