虚拟USB HID设备


9

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

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

  • 一个虚拟的USB隐藏设备,可能与任何真实的USB隐藏设备节点都没有区别/dev/hidraw0;当然,无论我使用哪种USB隐藏库,都应该可以看到此设备hidapi
  • 服务设备节点,例如/dev/virtual_hid_1

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

这样,我可以用任何想要的语言编写调试应用程序,无论是哪种语言python。它应该只往返读写/dev/virtual_hid_1。这将非常方便开发。

有这样的东西吗?

Answers:


5
  1. 您可能对廉价,优雅且开放的硬件解决方案感兴趣,以在开发中模拟usb设备:micropython板。(我与此硬件没有任何关系)。

    它是运行python 3的小型独立开发板,可插入USB,在其中可以以鼠标HID或键盘HID的形式出现。您只需将python源文件复制到设备上即可运行它。一个美丽的概念。

    好的,它并不是真正针对您想要的内容,您可能需要下载sdk并在C中做一些工作以使其完全符合您的需要,但是大部分代码都在python中。有ttl级串行端口,i2c,spi等端口。

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

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


5

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.