虚拟 USB HID 设备

Dmi*_*ank 11 virtual-machine usb hid

我正在开发一个将与连接的 USB HID 设备进行通信的应用程序。问题是还没有真正的设备(它正在由我们团队的另一部分开发),所以,我真的很想有一些方法来模拟它。

我能想到的理想实用程序应该是这样的:一个内核模块,当加载时,它会在系统中创建两个设备节点:

  • 一个虚拟的 usb-hid 设备,它可能与任何真正的 usb-hid 设备节点没有区别/dev/hidraw0;当然,这个设备应该被我使用的任何 usb-hid 库看到,例如,hidapi.
  • 一个服务设备节点,如/dev/virtual_hid_1

因此,当任何人写入 时/dev/virtual_hid_1,这些数据应该从字面上读取/dev/hidraw0,反之亦然。

通过这种方式,我可以用我想要的任何语言编写一些调试应用程序,无论是python什么;它应该只是写入和读取/dev/virtual_hid_1. 开发起来会很方便。

有这样的吗?

小智 6

您可能正在寻找uhid内核模块。请参阅内核源文件中的文档

使用 UHID,用户空间传输驱动程序可以为连接到用户空间控制总线的每个设备创建内核隐藏设备。UHID API 定义了从内核提供给用户空间的 I/O 事件,反之亦然。

./samples/uhid/uhid-example.c 中有一个示例用户空间应用程序


meu*_*euh 5

  1. 您可能对用于模拟开发中的 USB 设备的廉价、优雅和开放的硬件解决方案感兴趣:micropython 板。(我与这个硬件没有任何关系)。

    它是一个运行 python 3的小型独立,并插入 USB 中,它可以显示为例如鼠标 HID 或键盘 HID。您只需将您的 python 源文件复制到设备并运行它。一个美丽的概念。

    好的,它并不是真正适合您想要的,您可能需要下载 sdk 并在 C 中做一些工作以使其完全按照您的需要出现,但是您的大部分代码将在 python 中。有ttl级串口、i2c、spi等端口。

  2. 对于替代解决方案,有一个板子可以使用 python 模拟 USB 设备,但我不确定您是否可以购买成品。

  3. 还有使用usbip的usb仿真,没有额外的硬件,我还没有看过。