私はLinux USBスタックで多くのことをしたことがなく、常に動作します。しかし、私が読んでいたのはUSBダイナミックデバイスマッピングそしてこれが可能かどうか疑問に思います。
たとえば、Linux コンピュータの USB ポートにマウスを接続し、デバイスを Linux の別の USB ポートに動的にマッピングするコマンドを実行できますか?それでは、どのコマンドやツールセットを調べる必要がありますか?
この質問の目的のために、ホストモードにある可能性のある1つのUSBポートと、デバイスモードにある可能性がある別のUSBポートがあるとします。適切なハードウェアがある場合は、どうすればこれを行うのか疑問に思います。
ベストアンサー1
私は過去に同様のことをしたことがあります。
- 使用USBプロファイルHIDデバイスを含む必要なUSBガジェット設定を作成します
(ガジェットは複数のデバイス「機能」を持つことができます)。 - 使用
uinput
とintercept
ブロックツールフレームワーク必要に応じて物理デバイスから仮想デバイスへのHIDイベントの移動
オーディオおよびビデオストリーム、大容量記憶装置、シリアルポートのように「動作」するデバイスなど、デバイスのユーザ空間で同様の「配信」を実行できます。
ffmpeg
オーディオとビデオの場合、以下を使用して、実際のデバイスとシミュレートされた(alsa / v4l2)デバイス間でストリームを中継できます。たとえば、socat
シリアルポートデバイスのデータを中継するために使用されます。
これは実際にはUSBコントローラハードウェアやカーネルドライバを使用して「USBデバイスを転送する」のではなく、ユーザースペースツールとスクリプト、udev、および/または体系化されています。
あなたが興味を持っているかもしれない他のリソース:
- https://www.kernel.org/doc/Documentation/usb/gadget-testing.txt
- https://www.collabora.com/news-and-blog/blog/2019/02/18/modern-usb-gadget-on-linux-and-how-to-integrate-it-with-systemd-part- 1/
- https://developer.ridgerun.com/wiki/index.php/How_to_use_the_UVC_gadget_driver_in_Linux
- https://www.kernel.org/doc/html/latest/usb/functionfs.html
今日はもっと詳しく説明する時間がありませんが、上記の情報をスタートシードとして使ってインターネット検索をした後、不明な内容があれば私に連絡してください。