5

Windowsドライバーを持っているデバイスにLinuxドライバーを書き込もうとしています(ここで説明した場合と同様ですが、デバイスが異なります)

Linux側の通信にはLibusbを使用し、USBスニファーとしてSourceUSBを使用しています(Windowsマシン上)。これで、コントロールとバルクを適切に複製したと思いますが、LinuxログをWindowsログに対して実際にテストすることはできません。VM上でUbuntu12.04を実行しています。

だから私の質問は:

  1. マルチプラットフォームのロガーはありますか?これにより、ログ比較プロセスが本当に簡素化される可能性があります。
  2. USBデバイスをVMに接続すると、WindowsでVMドライバーを取得します。このデバイスをスニッフィングすると、デバイスが認識しているものが正確にわかりますよね?つまり、これは私が嗅ぎたい場所ですか?

編集:私は自分のアプリケーションをWindows上でコンパイルしました(libusbはクロスプラットフォームです-とても良い仕事をしてくれたlibusb開発者に大いに感謝します)そして私のアプリケーションは正しく動作しました。

Linuxでアプリケーションを実行しているときにVMドライバーをスニッフィングすると、USBへの要求がCONTROL_TRANSFERおよびBULK_OR_INTERRUPTではなくVENDOR_DEVICEとして表示されます。これはデバイスが「見る」ものであるため、私が正しく理解していれば、これは問題のようです。

だから今の私の問題は、なぜLinuxが私のリクエストをベンダーとして送信するのかということだと思います。

別の編集:問題は解決しました:

  1. VMドライバーをリッスンすると、間違った要求が発生しました(VMドライバーのトラフィックをリッスンしていましたが、USBLinuxドライバーのトラフィックをリッスンしていませんでした。
  2. Libusbは完全にマルチプラットフォームです。コードをWindowsでコンパイルするのに数分かかり、そこからログのデバッグと比較が非常に簡単になりました。
4

1 に答える 1

5

Wireshark を使用して USB トラフィックをキャプチャできます。このページでは、Linux および Windows での方法について説明します: CaptureSetup/USB

于 2012-10-02T13:14:58.303 に答える