adb可以列出设备,但adb shell/logcat不起作用

Jin*_*Shi 15 ubuntu android adb vmware-player

精简版

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 */
Run Code Online (Sandbox Code Playgroud)

似乎adb服务器期待一些来自手机的数据但却无法获得它,因此它就停留在那里.

我试过了:

  • 杀死并重启adb服务器
  • 拔下然后插上电话
  • 重启电话
  • 禁用手机上的usb调试,然后启用它

有时,拔下/插上手机后,它会工作一段时间(我可以adb shell),但很快就会停止工作.大多数时候,拔掉/拔插电话甚至根本没有效果!

我正在运行ubuntu作为vmplayer来宾.主机是Windows 7.

在此先感谢任何帮助或提示.

UPDATE

将手机插入后部USB端口后,突然工作!但我不确定问题是否真的解决了.等着瞧.

小智 5

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