谷歌的安德烈·科诺瓦洛夫(Andrey Konovalov)正在开发一个新模块 USB Raw小工具, 允许 在用户空间模拟 USB 设备。 等待中 заявка 将此模块包含在主 Linux 内核中。 USB Raw 小工具已经 申请 Google 使用工具简化 USB 内核堆栈的模糊测试 塞兹卡勒.
该模块为内核子系统添加了新的编程接口 USB小工具 正在开发作为 GadgetFS 的替代品。 新 API 的创建是由于需要从用户空间获得对 USB Gadget 子系统的低级直接访问,从而允许其处理所有可能的 USB 请求(GadgetFS 独立处理一些请求,而不将其传递到用户空间) 。 USB Raw Gadget 通过 /dev/raw-gadget 设备进行控制,类似于 GadgetFS 中的 /dev/gadget,但交互使用基于 ioctl() 的接口而不是伪 FS。
除了用户空间中的进程直接处理所有 USB 请求外,新接口还具有返回任何数据以响应 USB 请求的功能(GadgetFS 检查 USB 描述符的有效性并过滤掉某些响应,从而防止错误)以免在 USB 堆栈模糊测试期间被检测到)。 Raw Gadget 还使您能够选择要连接的特定 UDC(USB 设备控制器)设备和驱动程序,而 GadgetFS 则连接到第一个可用的 UDC 设备。 可预测的名称分配给不同的 UDC 端点 分离一台设备内不同类型的数据交换通道。