adb может отображать список устройств, но adb shell/logcat не работает

Укороченная версия

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. Хост - виндовс 7.

Заранее спасибо за любую помощь или подсказки.

ОБНОВИТЬ

После подключения телефона к заднему usb-порту он внезапно работает! Но я не уверен, что проблема действительно решена. Увидим.


person Jinghao Shi    schedule 27.09.2013    source источник
comment
Full_AOSP_on_Toroplus звучит как неоригинальная прошивка - может быть проблема именно в этой прошивке телефона? Вы можете разговаривать с любыми другими устройствами с этого компьютера или разговаривать с этим телефоном с других компьютеров?   -  person Chris Stratton    schedule 27.09.2013
comment
@ChrisStratton: Да, это пользовательское ПЗУ. Он отлично работает с моим офисным ПК, изначально работающим под управлением Ubuntu. Просто это не сработает, если ubuntu внутри vmplayer. Так что я предполагаю, что это как-то связано с конфигурациями vmplay usb.   -  person Jinghao Shi    schedule 27.09.2013
comment
У меня такая же проблема. После подключения телефона в один из задних usb портов тоже заработало. Это должно подтвердить, что ваше решение работает.   -  person Tarik    schedule 29.10.2014
comment
NAA, но может быть полезно: в Windows у меня была такая же проблема с cygwin, но она работает в cmd   -  person lucidbrot    schedule 30.03.2019


Ответы (6)


У меня была точно такая же проблема с зависанием оболочки adb. Я запускаю гостевую виртуальную машину Ubuntu 12.04 на хосте Ubuntu. Проблема для меня заключалась в том, что параметр USB-совместимости для виртуальной машины был установлен на 1.1, он должен быть не ниже 2.0. Чтобы изменить настройку, выключите виртуальную машину и выберите «Изменить настройки виртуальной машины» в меню запуска VMPlayer. Затем выберите устройство «Контроллер USB» и измените «Совместимость с USB» на USB 2.0.

person user3546604    schedule 17.04.2014

У меня была та же проблема: я получал разные результаты (хотя ни один из них не работал хорошо), пробуя разные USB-порты на компьютере. Наконец-то я решил пойти в магазин и купить новый USB-кабель. Теперь работает безотказно! Я предполагаю, что USB-кабели могут быть изношены или плохи ...

Краткий рассказ: купите новый кабель! Мне помогло!

person JohnyTex    schedule 02.04.2015

Не уверен, что это предназначалось для использования таким образом, но у меня также висит adb shell, однако запуск echo my_command | adb shell позволил мне запускать команды на цели.

E.g. echo settings get secure sysui_qs_tiles | adb shell

Кроме того, adb shell < /dev/stdin может быть интересным.

person joetde    schedule 13.04.2018

Для моей комбинации VMWare (Windows 10 Host + Ubuntu 18 Guest + Galaxy S9) это действительно сработало после изменения совместимости USB на 1.1. Не знаю, почему, но стоит попробовать, если у вас есть эта проблема.

person Dauntless    schedule 24.10.2020

У меня такая же проблема. Я просто отсоединил USB-кабель мыши, подключенный ко второму USB-порту, и подключил к нему телефонный кабель (второй USB-порт). Это сработало!

person arun8    schedule 09.02.2016

Я заметил, что если я сначала подключаю USB к своему Mac, ЗАТЕМ подключаю его к Android, adb работает. Возможно, поэтому люди замечают, что разные кабели работают? (Возможно подключение/отключение кабелей в другом порядке)

person Alan    schedule 10.07.2017