#usb #gadget #外设 #linux-kernel #configfs #functionfs

usb-gadget

通过 Linux 的 USB 设备控制器 (UDC) 暴露标准或完全定制的 USB 外设(设备)

12 个版本 (6 个重大更新)

0.7.2 2024年6月25日
0.7.0 2024年3月14日
0.6.0 2023年11月11日

170Unix API

Download history 20/week @ 2024-05-02 12/week @ 2024-05-09 9/week @ 2024-05-16 9/week @ 2024-05-23 31/week @ 2024-05-30 27/week @ 2024-06-06 40/week @ 2024-06-13 137/week @ 2024-06-20 63/week @ 2024-06-27 181/week @ 2024-07-04 70/week @ 2024-07-11 12/week @ 2024-07-18 74/week @ 2024-07-25 33/week @ 2024-08-01 15/week @ 2024-08-08 12/week @ 2024-08-15

每月 134 次下载
3 crates 中使用

Apache-2.0

180KB
4K SLoC

usb-gadget

crates.io page docs.rs page Apache 2.0 license

此库允许在具有 USB 设备控制器 (UDC) 的 Linux 设备上实现 USB 外设,即所谓的 USB 设备。支持预定义的 USB 功能和完全定制的 USB 接口实现。

以下预定义的 USB 功能由内核驱动程序实现,可用:

  • 网络接口
    • CDC ECM
    • CDC ECM(子集)
    • CDC EEM
    • CDC NCM
    • RNDIS
  • 串行端口
    • CDC ACM
    • 通用
  • 人机界面设备 (HID)
  • 存储设备 (MSD)

此外,还可以在用户模式 Rust 代码中实现完全定制的 USB 功能。

还提供对操作系统特定描述符和 WebUSB 的支持。

特性

此 crate 提供以下可选功能:

  • tokio:在 Tokio 运行时之上启用对自定义 USB 功能的异步支持。

要求

最小支持的 Rust 版本 (MSRV) 是 1.73。

需要 Linux 支持的 USB 设备控制器 (UDC)。通常,标准 PC 不包括 UDC。Raspberry Pi 4 包含一个 UDC,该 UDC 连接到其 USB-C 端口。

以下 Linux 内核配置选项应启用以实现全部功能:

  • CONFIG_USB_GADGET
  • CONFIG_USB_CONFIGFS
  • CONFIG_USB_CONFIGFS_SERIAL
  • CONFIG_USB_CONFIGFS_ACM
  • CONFIG_USB_CONFIGFS_NCM
  • CONFIG_USB_CONFIGFS_ECM
  • CONFIG_USB_CONFIGFS_ECM_SUBSET
  • CONFIG_USB_CONFIGFS_RNDIS
  • CONFIG_USB_CONFIGFS_EEM
  • CONFIG_USB_CONFIGFS_MASS_STORAGE
  • CONFIG_USB_CONFIGFS_F_FS
  • CONFIG_USB_CONFIGFS_F_HID

需要 root 权限来配置 Linux 上的 USB 设备,并且需要挂载 configfs 文件系统。

许可证

usb-gadget 在 Apache 2.0 许可证下授权。

贡献

除非您明确说明,否则您提交给 usb-gadget 的任何贡献,均应按照 Apache 2.0 许可证授权,不附加任何额外条款或条件。

依赖项

~2-11MB
~122K SLoC