usb-gadget ==========
このライブラリは、USBデバイスコントローラ(UDC)を搭載したLinuxデバイス上で、USBガジェットと呼ばれるUSB周辺機器の実装を可能にします。 あらかじめ定義されたUSB機能と、USBインターフェースの完全なカスタム実装の両方をサポートしています。
カーネルドライバによって実装された以下のあらかじめ定義されたUSB機能が利用可能です:
- ネットワークインターフェース
- CDC ECM
- CDC ECM(サブセット)
- CDC EEM
- CDC NCM
- RNDIS
- シリアルポート
- CDC ACM
- ジェネリック
- ヒューマンインターフェースデバイス(HID)
- 大容量記憶装置デバイス(MSD)
- プリンタデバイス
- ミュージカルインストゥルメントデジタルインターフェース(MIDI)
- オーディオデバイス(UAC1およびUAC2)
- ビデオデバイス(UVC)
OS固有のディスクリプタおよびWebUSBのサポートも提供されています。
CLIツール --------
usb-gadget CLIツールを使うと、Rustコードを書かずにTOML設定ファイルからUSBガジェットを構成できます。
インストール
cargo install usb-gadget --features cli
使い方
ガジェットを記述したTOML設定ファイルを作成し、CLIで管理します:
usb-gadget up gadget.toml # ガジェットを登録してバインドする usb-gadget list # 登録されたガジェットを一覧表示する usb-gadget down my-gadget # 名前でガジェットを削除する usb-gadget down --all # すべてのガジェットを削除する usb-gadget check gadget.toml # 設定ファイルを検証する
up または check にディレクトリを渡すと、その中のすべての .toml ファイルを処理できます。
設定例
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"
複数の機能は、より多くの [[config.function]] エントリを追加することで、単一のガジェットに組み合わせることができます。利用可能なテンプレートを確認するには、usb-gadget template --list を実行してください。機能 --------
このクレートは以下のオプション機能を提供します:
cli: TOMLファイルからガジェットを設定するためのusb-gadgetCLIツールをビルドします。tokio: Tokioランタイム上でのカスタムUSB機能の非同期サポートを有効にします。
サポートされる最低Rustバージョン(MSRV)は1.77です。
LinuxでサポートされているUSBデバイスコントローラ(UDC)が必要です。通常、標準的な PCにはUDCは含まれていません。 Raspberry Pi 4にはUDCが含まれており、USB-Cポートに接続されています。
完全な機能を利用するためには、以下のLinuxカーネル設定オプションを有効にする必要があります:
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ファイルシステムをマウントする必要があります。ライセンス -------
usb-gadgetは[Apache 2.0ライセンス]の下でライセンスされています。
[Apache 2.0ライセンス]: https://github.com/surban/usb-gadget/blob/master/LICENSE
貢献
明示的に異なる記載がない限り、usb-gadgetへの含有を意図して提出された 貢献はすべて、追加の条件なしにApache 2.0ライセンスで提供されます。
--- Tranlated By Open Ai Tx | Last indexed: 2026-04-27 ---