web-dev-qa-db-ja.com

USBデバイスをエミュレートする方法は?

私のチームの残りの部分は、私のアプリケーションのために単純な非標準のUSBマイクを作成しますが、統合テストの目的で、完成するまでエミュレートする必要があります。

  1. 物理的なループバックにリスクはありますか? はい
  2. 物理的なループバックは機能しますか? [〜#〜] usb [〜#〜]bridge のみで
  3. 論理的なループバックを作成する方法はありますか? ( MSDNにはこれについて何かあります
  4. 汎用USBエミュレータソフトウェアはありますか?

多くのオプションが利用可能な場合、.NET/Matlab/Pythonソリューションを使用したいです。

35
Jader Dias

編集:概念実証 ここ

このプロジェクト、USB IP を強くお勧めします。これは、ネットワーク経由でUSBデバイスを接続する方法です。 Windowsクライアントがあります。

つまり、Windowsコンピューターにクライアントをインストールします。このデバイスは、Linuxコンピューター、サーバーに接続されたUSBデバイスと通信することを想定しています。 diagram over how a USB IP client connects to a USB IP server

あなたが今やっていることは、either物理的なUSBデバイスに接続されているように見えるLinux用の偽のデバイスドライバを作成することですが、実際には単なるロジックですUSBデバイスのふりをします。 Linux用のUSBドライバーを作成するためのチュートリアル があります。 またはデバイスコントロールマネージャー用の独自のスタブドライバーを作成します(上の図を参照)。このスタブドライバーはWindowsまたはLinuxで実行できますが、問題ではありません。 USBクライアントであるsameWindowsマシンでも実行できます。

DSF USB Loopback Device は、質問自体で言及されていますが、Device Control Managerのスタブドライバーと同じ種類のソリューションですが、Linuxを完全に除外します。

19
Prof. Falken

QEMUを使用して仮想USBデバイスを作成できます。 this QEMUリポジトリにあるdev-serial.cのように、既存のデバイスを複製し、必要に応じて変更できます。
USBデバイスを作成してコンパイルしたら、QEMUコマンドラインインターフェイスを使用して、それをVMに接続するだけです。

1
Yaron Shani