如何模拟USB设备?

44

我的团队将为我的应用程序制作一个简单的非标准USB麦克风,但在他们完成之前,为了进行集成测试,我将不得不模拟它。

  1. 进行物理回环会有任何风险吗? 是的,有
  2. 物理回环能否工作? 只有使用USB桥接器时才可以。
  3. 有任何创建逻辑回环的方式吗?(MSDN有相关内容)
  4. 有任何通用的USB模拟器软件吗?

如果有很多选择可用,我更愿意使用.NET/Matlab/Python解决方案。


6
+1 对于丢弃方法论和良好结构化问题的赞赏 ;) - Hobhouse
2个回答

21

编辑:概念验证在这里

我强烈推荐这个项目,USB IP。它是一种通过网络连接USB设备的方法,并提供了Windows客户端。

这意味着您可以在Windows计算机上安装客户端。然后,该设备期望与连接到Linux计算机服务器上的USB设备通信: 一个USB IP客户端连接到USB IP服务器的图表

现在,您要么为Linux创建一个伪装成连接到物理USB设备的驱动程序,但实际上只是模拟您的USB设备的逻辑。关于编写Linux USB驱动程序的教程有很多。要么创建自己的设备控制管理器存根驱动程序(请参见上图)。此存根驱动程序可以在Windows或Linux上运行,不会有任何问题。它甚至可以在作为USB客户端的同一台Windows机器上运行。

在问题中提到的DSF USB Loopback Device将是与设备控制管理器存根驱动程序相同类型的解决方案,但完全排除了Linux。


1
只想添加一条注释:DSF已被弃用--http://msdn.microsoft.com/en-us/library/windows/hardware/br259131.aspx - Gishu
奇怪的是似乎没有替代品。你有任何指针可以告诉我在哪里寻找吗?我需要在Windows上编写一个USB设备模拟器,目前我只遇到了死路。 - Gishu
1
我会查看 USB IP Windows 客户端本身的源代码。它可以出现为任何类型的 USB 设备,因此您应该能够修改它。或者按照答案中提到的建议创建存根驱动程序。这可能有点繁琐和困难,但绝非不可能。@Gishu - Prof. Falken
1
您可以使用USB IP项目来模拟USB设备,就像我在这个示例中演示的那样。您需要在PC上安装USB IP驱动程序,该驱动程序会监听请求,而Python客户端则发送虚假请求以模拟设备。在此示例中,我演示了HID鼠标设备,但您可以模拟任何USB设备。重要提示:这只是一个POC,不是稳定的代码! - Yaron Shani
很棒的例子,@YaronShani。 - Prof. Falken

3

您可以使用QEMU编写虚拟USB设备。

您可以复制已经存在的设备,例如在 QEMU存储库中找到的dev-serial.c,并根据您的需求进行更改。
编写和编译USB设备后,您可以使用QEMU命令行界面将其简单地附加到虚拟机上。


真的吗?如何复制USB键盘 :) - TomeeNS
你可以基于 qemu HID 设备的代码进行开发,这些设备在 这里这里 可以找到。 - Yaron Shani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接