摘要(我们做了什么,我们尝试了什么):
基本上,目的是使用adb源代码在两台Linux计算机之间通过usb建立adb协议。
Envinronment是Ubuntu 16.0.4。已经准备好在池中使用 android-tools-adbd (adb守护程序)包并提供其源代码。
此link(adbd)上还有一个源代码可与gcc选项-stc = c ++ 14兼容,默认情况下(或gcc 5.2)在16.0.4中受支持。
我们可以使用adb connect(依赖于TCP / IP)从源代码构建软件包或成功使用已构建的软件包。如果两台计算机连接到同一网络,则通过TCP / IP进行adb连接没有问题。
不幸的是,我们无法在两台带有A到A(两根公)电缆的计算机之间设置USB连接。 ADB小工具无法正常工作,并且所有设备都无法识别其他设备。除了ADB小工具之外,我们无法确定是否需要显式驱动程序。
问题是(要回答的真实问题):
如何在两台Linux计算机之间设置USB协议,以便通过USB进行adb通信?
有什么解决方案吗?
[--- --- EDIT]
备注:
日复一日,小问题遗留下来。对于那些想要参与的人;我们正在关注this guide。
(内核版本4.4.0-38-generic)
运行正确的 udc (USB设备控制器)驱动程序时遇到问题。在modprobe usb_f_fs
激活ConfigFS后,xdg-adbd
(来自源链接的可执行文件,adbd)正常工作,直到检测到udc的 if(...)
为止驱动程序。我们尝试运行modprobe musb_hdrc
但未在/sys/class/udc
下看到明确的驱动程序名称。
(2016年9月27日)
答案 0 :(得分:5)
首先,让我指出一下你所说的关于the guide的几件事:
它要求(在第一段中这样说) 了解USB ,这与尝试在具有A到A(两个都是)电缆的两台计算机之间设置USB连接相反 并希望它能够发挥作用。
Linaro(发布指南的组织)是众所周知的 因其在ARM平台上改进Linux的工作。指南就是这么做的 不适用于基于x86的PC。
除此之外,您需要了解USB
是USB Host
(主)和USB Device
(从属)之间的非对称协议。没有办法解决这条规则。为了能够使用USB
连接2个设备 - 一个设备需要配置为USB Host
的USB控制器,另一个设备需要配置为USB Device
的USB控制器。个人计算机(独立或内置于英特尔PCH)中使用的硬件USB控制器的问题在于它们只能用作USB Host
。没有软件可以改变它。
您在问题中链接到的所有项目和资源都试图证明您可以获得所需的结果,这些项目和资源是针对与PC不同的平台开发的。
如果您坚持使用PC作为USB Device
- 市面上很少有USB适配器(主要是USB控制器评估板),它们使用支持UDC的USB控制器芯片。但由于它们的稀有性,它们通常非常昂贵(我已经看到它们以200美元的价格出售)。因此,如果您的初衷是通过切换到商品硬件来降低开发成本 - 这个选项也不会对您有所帮助。
这就是其中一个适配器的样子: