Как установить 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). После активации ConfigFS
modprobe usb_f_fs
,xdg-adbd
(исполняемый файл из исходной ссылки, adbd) работает нормально доif(...)
который обнаруживает драйвер UDC. Мы пробовали бежатьmodprobe musb_hdrc
но не увидел явного имени драйвера под/sys/class/udc
,
(27.09.2016)
1 ответ
Во-первых, позвольте мне отметить пару вещей о руководстве, которое, как вы сказали, вы выполняете:
он требует (так говорится в самом первом абзаце)понимания USB, что является противоположностью попытки установить USB-соединение между двумя компьютерами с помощью кабеля A - A (оба штекера) и ожидать его работы.
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 долларов). Так что, если вы изначально планировали снизить затраты на разработку, перейдя на стандартное оборудование - этот вариант вам тоже не поможет.
Вот как выглядит один из таких адаптеров: