usb-gadget ==========
Cette bibliothèque permet l’implémentation de périphériques USB, appelés gadgets USB, sur des appareils Linux disposant d’un contrôleur de périphérique USB (UDC). Sont supportées à la fois des fonctions USB pré-définies et des implémentations entièrement personnalisées de l’interface USB.
Les fonctions USB pré-définies suivantes, implémentées par des pilotes du noyau, sont disponibles :
- interface réseau
- CDC ECM
- CDC ECM (sous-ensemble)
- CDC EEM
- CDC NCM
- RNDIS
- port série
- CDC ACM
- générique
- périphérique d’interface humaine (HID)
- périphérique de stockage de masse (MSD)
- périphérique imprimante
- interface numérique d’instrument de musique (MIDI)
- périphérique audio (UAC1 et UAC2)
- périphérique vidéo (UVC)
Le support des descripteurs spécifiques au système d’exploitation et de WebUSB est également fourni.
Outil CLI --------
L’outil CLI usb-gadget permet de configurer des gadgets USB à partir de fichiers de configuration TOML
sans écrire de code Rust.
Installation
cargo install usb-gadget --features cli
Utilisation
Créez un fichier de configuration TOML décrivant votre gadget, puis utilisez la CLI pour le gérer :
usb-gadget up gadget.toml # enregistrer et lier un gadget usb-gadget list # lister les gadgets enregistrés usb-gadget down my-gadget # supprimer un gadget par nom usb-gadget down --all # supprimer tous les gadgets usb-gadget check gadget.toml # valider un fichier de configuration
Vous pouvez également passer un répertoire à up ou check pour traiter tous les fichiers .toml qu’il contient.
Exemple de configuration
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"
Plusieurs fonctions peuvent être combinées dans un seul gadget en ajoutant davantage d’entrées [[config.function]]. Exécutez usb-gadget template --list pour voir tous les modèles disponibles.
Fonctionnalités ---------------
Cette crate propose les fonctionnalités optionnelles suivantes :
cli: construit l’outil CLIusb-gadgetpour configurer les gadgets à partir de fichiers TOML.tokio: active la prise en charge asynchrone pour les fonctions USB personnalisées sur la base du runtime Tokio.
La version minimale de Rust prise en charge (MSRV) est la 1.77.
Un contrôleur de périphérique USB (UDC) pris en charge par Linux est requis. En général, les PC standard ne comprennent pas d’UDC. Un Raspberry Pi 4 contient un UDC, qui est connecté à son port USB-C.
Les options de configuration du noyau Linux suivantes doivent être activées pour une fonctionnalité complète :
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 doit être monté.Licence -------
usb-gadget est sous licence [Apache 2.0].
[Apache 2.0 license]: https://github.com/surban/usb-gadget/blob/master/LICENSE
Contribution
Sauf indication explicite contraire de votre part, toute contribution soumise intentionnellement pour inclusion dans usb-gadget par vous, sera sous licence Apache 2.0, sans termes ou conditions supplémentaires.
--- Tranlated By Open Ai Tx | Last indexed: 2026-04-27 ---