注意:最有可能需要GadgetFS,而不是Raw Gadget。在这里看到差异。
USB Raw Gadget是Linux USB Gadget子系统的底层接口。它可以用于模拟具有特殊硬件的物理USB设备,也可以用于与Dummy HCD / UDC虚拟的硬件设备(对于正在运行的内核)。该存储库包含有关使用Raw Gadget的说明和示例。
Raw Gadget已在合并到Mainline Linux内核中
5.7。无需使用
5.7+内核,请参阅dummy_hcd和raw_gadget,以获取有关如何
insmod在较早的内核上构建以及相应模块的信息。这些模块应与最低至的内核版本兼容
4.14,请参见下表。
构建内核模块需要内核头文件。在桌面Ubuntu上,您可以通过安装安装它们
linux-headers-`uname -r`。在Raspberry Pi Zero上,请遵循以下说明。
USB Raw Gadget要求用户提供UDC设备和驱动程序名称,请参见示例。
UDC设备名称可以在以下位置找到
/sys/class/udc/:
$ ls /sys/class/udc/
dummy_udc.0
UDC驱动程序名称通常存在于
/sys/class/udc/$UDC/uevent:
$ cat /sys/class/udc/dummy_udc.0/uevent
USB_UDC_NAME=dummy_udc
下表中的“工作”表示UDC通过了所提供的测试,该测试仅涵盖部分功能,因此存在局限性。
硬件 | 核心 | 司机 | 设备 | 作品? |
---|---|---|---|---|
5.3.0-45-generic |
dummy_udc |
dummy_udc.0 |
是 | |
树莓派零 | 4.14.97+ |
20980000.usb |
20980000.usb( dwc2) |
是 |
BeagleBone黑色 | 4.19.94-ti-r42 |
musb-hdrc |
musb-hdrc.0 |
大概 |
BeagleBone AI | 4.14.108-ti-r131 |
48890000.usb |
dwc3-gadget |
还没 |
EC3380-AB | 5.3.0-45-generic |
net2280 |
0000:04:00.0(例如) |
不,net2280越野车 |
Odroid C2 | 3.14.79-116 |
dwc_otg_pcd |
dwc2_a |
不,内核太旧 |
海基960 | ? |
要研究的其他潜在修复/改进:
ep->maxburst,
ep->mult并
ep->maxpacket在小工具的驱动程序。
ep->dev上
ep分配。
ep0_status和
ep_status通过
dev,从得到
req代替。