Linux kernel Linux:在内核模块中发送原始usb数据包

Linux kernel Linux:在内核模块中发送原始usb数据包,linux-kernel,usb,kernel-module,Linux Kernel,Usb,Kernel Module,我知道usb数据包有一种非常特殊的格式,但我想自己编写这些数据包,我知道usb\u control\u msg是一种控制数据包的接口,但是这个函数已经负责发送设置令牌、输入/输出令牌,并可能检查ACK。我如何自己构造这些数据包,然后发送它们?似乎您想要的是编写自己的usb主机驱动程序。我建议您尝试分析现有的usb主机驱动程序(ehci/xhci),然后尝试编写自己的驱动程序,但请注意,这不是一项容易的任务。还请注意,对于给定的usb主机控制器(ehci/xhci),不可能存在多个驱动程序。如果您

我知道usb数据包有一种非常特殊的格式,但我想自己编写这些数据包,我知道
usb\u control\u msg
是一种控制数据包的接口,但是这个函数已经负责发送设置令牌、输入/输出令牌,并可能检查ACK。我如何自己构造这些数据包,然后发送它们?

似乎您想要的是编写自己的usb主机驱动程序。我建议您尝试分析现有的usb主机驱动程序(ehci/xhci),然后尝试编写自己的驱动程序,但请注意,这不是一项容易的任务。还请注意,对于给定的usb主机控制器(ehci/xhci),不可能存在多个驱动程序。如果您真的想做这些事情,您需要完全了解两个方面:USB协议和ehci/xhci规范,这可能需要很多时间。此外,需要有编写Linux驱动程序的丰富经验。正如我所说,这不是一件容易的事情。

这个问题必须解决,因为通过USB传输到虚拟机是可行的。您应该能够执行与VM相同的操作,从虚拟(用户空间)进程控制真正的USB设备。