可以将 USB 3 主机编程为 USB 3 外围设备(或 HID 键盘)吗?

Can a USB 3 Host machine be programmed as a USB 3 Peripheral (or a HID keyboard)?

我想做的事情:

主机上的AI程序,从感测目标机屏幕的摄像头读取输入,并通过USB连接将控制输出到目标机——将主机的USB主机编程为连接到目标机的USB外围设备目标机器。

我想一步步做的事情:(是否可以实现下面的步骤?)

  1. 有主机A和目标机B。
  2. 使用 USB 3.0 Type-A 公-公数据线连接 A 和 B。
  3. USB 连接在 B 上显示为 HID 键盘设备。
  4. 编写代码来模拟发送到 B 的 A 上的按键。
    (例如,在 A 上的程序 运行 上调用 press('F') 会向 B 的输入输入 F
  5. 它应该不需要在 B 上安装任何程序。

我已经搜索过:

  1. USB 3.0 主机到主机连接是可能的: https://superuser.com/questions/795053/how-do-i-connect-two-computers-using-usb-3-0

  2. USB 2.0 主机到主机连接是不可能的: https://superuser.com/questions/99274/how-to-connect-two-computers-with-usb

  3. 在不假设 USB 3.0 主机到主机连接可行的情况下提出的类似问题:

按可行性升序排列的建议:

USB 小工具

您正在使用 linux,因此默认方式是 create/configure/load 小工具驱动程序。看看 at this tutorial,虽然对于树莓派来说,应该也适用于您的 PC。但是,我找不到任何关于使用 USB3 的信息 - 本教程假设您的主机正在使用其中一个 OTG 端口,而您的 PC 很可能没有。因此,这是否适用于您需要测试的 USB3.1 Type-A-to-Type-A 连接。

USBIP

共享 USB 设备(不仅仅是键盘)的想法is not really new。使用 USBIP,您可以 "export" 将任何本地 USB 设备连接到网络,并且您的客户端将需要客户端 USBIP 驱动程序来访问键盘。

根本不用考虑 USB,只需使用以太网

我会简单地写两个用户空间 scripts/programs 来 send/receive+ 执行击键。非常容易实施,无论如何您可能熟悉 python。


如果您绝对不能在客户端 PC 上安装软件并且您的 Type-C 到 Type-C 连接不支持 USB 小工具,还有另一种方法。它主要涉及使用两个 USB 转串口适配器(约 15 美元)和一根串行电缆。虽然这不会被列为键盘,而是串行端口,但它是无需在客户端上安装额外软件即可传输数据的最省力的解决方案。两台计算机都将只执行文件 I/O。如果你的电脑还有COM端口,你甚至可以省略串口转换器!