操作系统:Ubuntu 18.04.3
内核:5.3.8
大家好:)
我正在尝试使用 configfs 创建一堆 HID 小工具。
在设置第四个小工具之前它是成功的,
但是内核在创建第五个小工具期间发出错误消息。
错误信息如下。
# 4 successive gadget creation
g_mouse1 : /dev/hidg0
g_mouse2 : /dev/hidg1
g_mouse3 : /dev/hidg2
g_kbd1 : /dev/hidg3
# error occured
mkdir: cannot create directory ‘/config/usb_gadget/g_kbd2/functions/hid.usb0’: No such device
似乎无法再创建 HID 功能。
所以我的问题是
“小工具的数量是否有限?” 和
“如果用户可以调整限制,怎么可能?”
根据进一步研究,
我发现mass_storage函数最多可以创建5个,
midi函数可以创建10个以上。
因此每个USB类都有特定的限制。
但是,我的项目需要超出 HID 类的限制。
有谁知道操纵这些限制的方法?
感谢@mosvy!
问题通过这种方式解决。
- 更改
HIDG_MINORS
in的值/usr/src/linux-$(uname -r)/drivers/usb/gadget/function/f_hid.c
。 - 重新编译内核模块
/usr/src/linux-$(uname -r)/drivers/usb/gadget
。
需要更新的内核模块如下。- udc_core
- libcomposite
- usb_f_hid
现在您最多可以创建 HID 小工具HIDG_MINORS
是的,您只能创建 4 个 HID 小工具,这是一个硬编码限制:绕过它的唯一方法是修改代码并重新编译
usb_f_hid.ko
模块。此限制与 Linux 如何为
/dev/hidg#
设备分配动态主要/次要编号有关。来自
drivers/usb/gadget/function/f_hid.c
:其他创建设备节点的小工具也存在类似的限制(
/dev/g_printer#
= 打印机、/dev/ttyGS#
= gser + obex + acm 等)。