usb-gadget ==========
Esta biblioteca permite la implementación de periféricos USB, llamados gadgets USB, en dispositivos Linux que cuentan con un controlador de dispositivo USB (UDC). Se soportan tanto funciones USB predefinidas como implementaciones completamente personalizadas de la interfaz USB.
Las siguientes funciones USB predefinidas, implementadas por controladores del kernel, están disponibles:
- interfaz de red
- CDC ECM
- CDC ECM (subconjunto)
- CDC EEM
- CDC NCM
- RNDIS
- puerto serie
- CDC ACM
- genérico
- dispositivo de interfaz humana (HID)
- dispositivo de almacenamiento masivo (MSD)
- dispositivo de impresora
- interfaz digital para instrumentos musicales (MIDI)
- dispositivo de audio (UAC1 y UAC2)
- dispositivo de video (UVC)
También se proporciona soporte para descriptores específicos del sistema operativo y WebUSB.
Herramienta CLI ---------------
La herramienta CLI usb-gadget permite configurar gadgets USB desde archivos de configuración TOML
sin necesidad de escribir código Rust.
Instalación
cargo install usb-gadget --features cli
Uso
Cree un archivo de configuración TOML que describa su gadget, luego use la CLI para gestionarlo:
usb-gadget up gadget.toml # registrar y vincular un gadget usb-gadget list # listar gadgets registrados usb-gadget down my-gadget # eliminar un gadget por nombre usb-gadget down --all # eliminar todos los gadgets usb-gadget check gadget.toml # validar un archivo de configuración
También puede pasar un directorio a up o check para procesar todos los archivos .toml en él.
Configuración de ejemplo
name = "serial-debug"[device]
vendor = 0x1209
product = 0x0002
manufacturer = "Example Inc."
product_name = "Debug Console"
serial = "0001"
[[config]]
description = "Serial Config"
[[config.function]]
type = "serial"
class = "acm"
Se pueden combinar múltiples funciones en un solo dispositivo agregando más entradas [[config.function]]. Ejecute usb-gadget template --list para ver todas las plantillas disponibles.
Características --------
Esta crate proporciona las siguientes características opcionales:
cli: construye la herramienta CLIusb-gadgetpara configurar dispositivos a partir de archivos TOML.tokio: habilita soporte asíncrono para funciones USB personalizadas sobre el runtime Tokio.
La versión mínima soportada de Rust (MSRV) es 1.77.
Se requiere un controlador de dispositivo USB (UDC) soportado por Linux. Normalmente, los PCs estándar no incluyen un UDC. Un Raspberry Pi 4 contiene un UDC, que está conectado a su puerto USB-C.
Las siguientes opciones de configuración del kernel de Linux deben estar habilitadas para funcionalidad completa:
CONFIG_USB_GADGETCONFIG_USB_CONFIGFSCONFIG_USB_CONFIGFS_SERIALCONFIG_USB_CONFIGFS_ACMCONFIG_USB_CONFIGFS_NCMCONFIG_USB_CONFIGFS_ECMCONFIG_USB_CONFIGFS_ECM_SUBSETCONFIG_USB_CONFIGFS_RNDISCONFIG_USB_CONFIGFS_EEMCONFIG_USB_CONFIGFS_MASS_STORAGECONFIG_USB_CONFIGFS_F_FSCONFIG_USB_CONFIGFS_F_HIDCONFIG_USB_CONFIGFS_F_PRINTERCONFIG_USB_CONFIGFS_F_MIDICONFIG_USB_CONFIGFS_F_UAC1CONFIG_USB_CONFIGFS_F_UAC2CONFIG_USB_CONFIGFS_F_UVC
configfs debe estar montado.Licencia --------
usb-gadget está licenciado bajo la [licencia Apache 2.0].
[licencia Apache 2.0]: https://github.com/surban/usb-gadget/blob/master/LICENSE
Contribución
A menos que declares explícitamente lo contrario, cualquier contribución enviada intencionalmente para su inclusión en usb-gadget por ti, se licenciará como Apache 2.0, sin términos o condiciones adicionales.
--- Tranlated By Open Ai Tx | Last indexed: 2026-04-27 ---