19

精简版

adb devices可以列出设备,但adb shell或者adb 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端口后,它突然工作了!但我不确定问题是否真的解决了。等着瞧。

4

7 回答 7

6

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

于 2014-04-17T19:45:14.573 回答
2

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

短篇小说:购买新电缆!为我工作!

于 2015-04-02T11:32:32.330 回答
2

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

例如echo settings get secure sysui_qs_tiles | adb shell

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

于 2018-04-13T00:45:58.390 回答
0

就我而言,我使用此命令设置了 tcp 端口转发adb forward tcp:4321 tcp:4321,后来我以某种方式搞砸了连接。

之后的每一次都adb shell永远挂着。然后我跑了ps aux | grep adb,发现了这个

❯ ps aux | grep adb
username          10319   2.4  0.0  4380992   3080   ??  Ss   12:41PM   5:40.20 adb -L tcp:5037 fork-server server --reply-fd 4
username          34406   0.0  0.0  4278688    776 s007  S+    3:51PM   0:00.01 grep --color=auto  --exclude-dir=.tox adb

所以我杀死了正在运行的进程,kill 10319瞧……adb shell又回来了。

于 2022-01-21T00:09:09.237 回答
0

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

于 2020-10-24T11:34:13.740 回答
-1

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

于 2017-07-10T10:18:14.477 回答
-1

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

于 2016-02-09T20:14:00.130 回答