14

总结(我们做了什么,我们尝试了什么):

基本上,目的是使用 adb 源代码在两台 linux 计算机之间通过 usb 建立 adb 协议。

环境是 Ubuntu 16.0.4。池中有android-tools-adbd(adb 守护进程)包可供使用,其源代码可用。

此链接(adbd)上还有一个可使用 gcc 选项 -stc=c++14 编译的源代码,默认情况下在 16.0.4 (或gcc 5.2)中受支持。

我们可以通过使用 adb connect(依赖于 TCP/IP)从源代码构建包或成功使用已经构建的包。如果两台计算机连接到同一网络,则通过 TCP/IP 进行 adb 连接没有问题。

不幸的是,我们无法使用 A 到 A(均为公头)电缆在两台计算机之间设置 USB 连接。ADB 小工具无法正常工作,并且没有一个设备可以识别对方。除了 ADB gadget,我们无法确定是否需要显式驱动程序。

问题是(要回答的真正问题):

如何在两台linux计算机之间设置USB协议,以便可以通过USB进行adb通信?

有什么解决办法吗?

[ - -编辑 - -]

笔记:

  • 一天比一天更进一步,小问题就留下了。对于那些想要参与的人;我们正在遵循本指南

  • (内核版本 4.4.0-38-generic)

  • 运行正确的udc(USB 设备控制器)驱动程序时出现问题。激活 ConfigFS 后modprobe usb_f_fsxdg-adbd (可从源链接执行,adbd)工作正常,直到if(...)检测到 udc 驱动程序。我们尝试运行modprobe musb_hdrc,但在/sys/class/udc.

(27.09.2016)


4

1 回答 1

6

首先,让我指出关于您所说的您正在遵循的指南的几件事:

  1. 它需要(在第一段中这样说)您 了解 USB,这与尝试使用 A 到 A(均为公头)电缆在两台计算机之间设置 USB 连接 并期望它能够工作相反。

  2. Linaro(发布该指南的组织)以其在 ARM 平台上改进 Linux 的工作而闻名。该指南不适用于基于 x86 的 PC。

除此之外,您需要了解这是(主)和(从)USB之间的不对称协议。没有办法绕过这条规则。为了能够使用 2 个设备连接- 一个设备需要将 USB 控制器配置为,而另一个需要将 USB 控制器配置为。个人计算机(独立或内置于英特尔 PCH)中使用的硬件 USB 控制器的问题在于它们只能作为. 没有软件可以改变这一点。USB HostUSB DeviceUSBUSB HostUSB DeviceUSB Host

您在问题中链接到的所有项目和资源试图证明您期望的结果是可能的,都是为不同于 PC 的平台开发的。

如果您坚持使用 PC 作为USB Device- 很少有市售的 USB 适配器(主要是 USB 控制器评估板),它们使用支持 UDC 的 USB 控制器芯片。但由于它们的稀有性,它们通常非常昂贵(我见过的售价约为 200 美元)。因此,如果您的初衷是通过切换到商品硬件来降低开发成本 - 此选项也无济于事。

这是其中一个适配器的样子: NET2280EVB

于 2016-09-22T14:07:47.170 回答