仮想USB HIDデバイス


9

接続されているUSB HIDデバイスと通信するアプリケーションを開発しています。問題は、実際のデバイスがまだないことです(私たちのチームの別の部分によって開発中です)、それで、私は本当にそれをエミュレートするいくつかの方法が欲しいです。

私が考えることができる理想的なユーティリティは、次のようになります。ロードされると、システムに2つのデバイスノードを作成するカーネルモジュール:

  • おそらく実際のUSB隠しデバイスノードと区別がつかない仮想USB隠しデバイス/dev/hidraw0。そしてもちろん、このデバイスは、私が使用するusb-hidライブラリ(たとえば)から認識されhidapiます。
  • サービスデバイスノード、のような/dev/virtual_hid_1

したがって、誰かがに書き込む場合/dev/virtual_hid_1、このデータは文字通りから読み取られる必要が/dev/hidraw0あり、その逆も同様です。

このようにして、デバッグアプリを好きな言語で書くことができpythonます。読み書きするだけ/dev/virtual_hid_1です。開発にとても便利です。

このようなものはありますか?

回答:


5
  1. 開発中のUSBデバイスをエミュレートするための安価でエレガントでオープンなハードウェアソリューション、micropythonボードに興味があるかもしれません。(私はこのハードウェアに関係がありません)。

    これはpython 3を実行する小さなスタンドアロンボードで、USBにプラグインすると、たとえばマウスHIDやキーボードHIDとして表示されます。Pythonソースファイルをデバイスにコピーするだけで実行されます。美しいコンセプト。

    OK、それは本当にあなたが望むもののためのものではありません、そしてあなたはそれをあなたが必要とするとおりに正確に表示させるためにSDKをダウンロードしてCで少し仕事をする必要があるかもしれませんが、あなたのコードの大部分はPythonであるでしょう。ttlレベルのシリアルポート、i2c、spiなどのポートがあります。

  2. 別のソリューションとして、PythonでUSBデバイスをエミュレートするボードがありますが、完成品を購入できるかどうかはわかりません。

  3. 追加のハードウェアなしでusbip使用するusbエミュレーションもありますが、これはまだ見ていません。


5

あなたはおそらくuhidカーネルモジュールを探しています。カーネルソースのドキュメントを参照してください。

UHIDを使用すると、ユーザー空間トランスポートドライバーは、ユーザー空間制御バスに接続されている各デバイスのカーネルhidデバイスを作成できます。UHID APIは、カーネルからユーザー空間に、またはその逆に提供されるI / Oイベントを定義します。

./samples/uhid/uhid-example.cにサンプルのユーザー空間アプリケーションがあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.