Как установить ADB-соединение по USB между двумя ПК

Резюме (что мы сделали, что мы пробовали):

По сути, цель состоит в том, чтобы установить протокол adb через usb между двумя компьютерами linux с использованием исходных кодов adb.

Envinronment - это Ubuntu 16.0.4. Существует пакет android-tools-adbd (adb daemon), готовый для использования в пуле с доступным источником.

В этой ссылке также есть источник (adbd), который можно скомпилировать с опцией gcc -stc= C++14, которая поддерживается в 16.0.4 по умолчанию (или gcc 5.2).

Мы можем собрать пакет из исходного кода или успешно использовать уже созданный, используя adb connect (зависит от TCP/IP). Нет проблем с подключением ADB через TCP/IP, если два компьютера подключены к одной сети.

К сожалению, мы не можем установить соединение USB между двумя компьютерами с помощью кабеля A - A (оба штекера). Гаджет ADB не работает, и ни одно из устройств не распознает другое. Мы не можем решить, нужен ли явный драйвер помимо гаджета ADB.

Вопрос (РЕАЛЬНЫЙ вопрос, на который нужно ответить):

Как установить протокол USB между двумя компьютерами Linux, чтобы можно было осуществлять связь по ADB через USB?

Есть ли какое-то решение для этого?

[---РЕДАКТИРОВАТЬ---]

ЗАМЕТКИ:

  • Идя дальше изо дня в день, небольшие проблемы остались. Для тех, кто хочет участвовать; мы следуем этому руководству.

  • (Ядро версии 4.4.0-38-generic)

  • Возникли проблемы с запуском правильного драйвера udc (USB Device Controller). После активации ConfigFSmodprobe usb_f_fs,xdg-adbd (исполняемый файл из исходной ссылки, adbd) работает нормально доif(...) который обнаруживает драйвер UDC. Мы пробовали бежать modprobe musb_hdrc но не увидел явного имени драйвера под /sys/class/udc,

(27.09.2016)


1 ответ

Во-первых, позвольте мне отметить пару вещей о руководстве, которое, как вы сказали, вы выполняете:

  1. он требует (так говорится в самом первом абзаце)понимания USB, что является противоположностью попытки установить USB-соединение между двумя компьютерами с помощью кабеля A - A (оба штекера) и ожидать его работы.

  2. Linaro (организация, опубликовавшая руководство) известна своей работой по улучшению Linux на платформе ARM. Руководство не относится к компьютерам на базе x86.

Кроме этого вам нужно понять, что USB это асимметричный протокол между USB Host (мастер) и USB Device (Ведомый). Обойти это правило просто невозможно. Чтобы можно было подключить 2 устройства, используя USB - одно устройство должно иметь USB-контроллер, настроенный как USB Host а другой должен иметь USB-контроллер, настроенный как USB Device, Проблема с аппаратными USB-контроллерами, используемыми в персональных компьютерах (автономных или встроенных в Intel PCH), заключается в том, что они могут работать только как USB Host, Никакое программное обеспечение не может изменить это.

Все проекты и ресурсы, на которые вы ссылались в своем вопросе, пытаясь доказать, что желаемый результат возможен, были разработаны для платформ, отличных от ПК.

Если вы настаиваете на использовании ПК в качестве USB Device - имеется очень мало коммерчески доступных USB-адаптеров (в основном, оценочных плат USB-контроллеров), в которых используются микросхемы USB-контроллеров с поддержкой UDC. Но из-за их редкости они обычно довольно дороги (те, которые я видел, продавались примерно за 200 долларов). Так что, если вы изначально планировали снизить затраты на разработку, перейдя на стандартное оборудование - этот вариант вам тоже не поможет.

Вот как выглядит один из таких адаптеров:NET2280EVB

Другие вопросы по тегам