2015-11-16 27 views
5

Windowsでは、シリアルポートの通信を監視するためのいくつかのまともな選択肢があります(主に有料)。 OSXには、シリアルデバイスと通信できる多くの端末アプリケーションがありますが、シリアルポート通信を監視する仕組みは見つかりませんでした。osxでUSBシリアル通信を盗聴する方法

特定のユースケースは、次のとおりです。 私は複数のコマンド(成功した)を実行し、統合テストを書かれている/dev/tty.usbmodem99999

に住んでUSBシリアルデバイスを持っています。

しかし、コマンドを再実行すると、デバイスは応答しません。私は(と同様に)デバイスが正常であることを確認しました。これは、期待どおりに他のプラットフォームで動作します。しかし、OSXでは、デバイスをリセットした後(パワーサイクル)にしかテストを再実行できません。

私の理論では、自分のコードがデバイスを適切に解放していないということですが、私のデバイスとアプリケーションの間の通信が見えないときは確認が難しいです。

このアプリケーション: "http://www.aggsoft.com/serial-port-monitor.htm"には、OSX上で似た機能を見つけることができなかった「スパイ」機能があります。私はosxの 'シリアルツール'を試してきましたが、単一のポートで操作を偵察しているようには見えません。その場合、ポートを監視するのではなく、2つのデバイス間のパススルー。

どのような考えにも大変感謝しています。使用されて

シリアルライブラリです:あなたは、DTraceの https://github.com/jacobsa/go-serial

+1

何について[USBトレーサー](http://stackoverflow.com/a/32468703/1643939 )? – nemo

+0

@gbulmerこれは実行可能ファイルです。 golangシリアルライブラリを使用します。しかし、あなたの権利、それは明らかに明らかではありません、私は使用しているシリアルライブラリを表示するように編集しました。 – Gary

+0

@nemo私はすでにそれを試みましたが、私はそのツールから何も見ませんでした。私はもう一度やり直します、私はそれを悪用するかもしれません。 – Gary

答えて

4

使用することがありますか?

私はこれを使って、FTDI USB /シリアルコンバータとサードパーティの「ブラックボックス」アプリケーションの間のUSB通信を監視しています。だから私はにすべてアプリケーションがUSBシリアルポートに送信されることができます。

私はアプリケーションの名前を知っていたので、それはかなり簡単でした.DTraceはそのことを知ることができました。私はDTraceスクリプトを書いて、アプリケーションが開いたファイル記述子を観察しました( '/dev/tty.usbmodem ...'を探して)、そのファイル記述子とのやり取りを観察しました。

私はデバイスドライバを見ていません。原則として、DTraceは、カーネルやデバイスドライバがDTraceで動作するようにコンパイルされている場合は実行できますが、確実ではありません。 AppleはDTraceには目に見えないコードを作成することもできます(たとえば、iTunesがDRMメカニズムを保護するためにDTraceに不透明になったと思います)。

OS起動/作成呼び出しをすべて観察して、 /dev/tty.usbmodemXXXのために、サブシステムを特定し、それを観察してみてください。サブシステムが観察され、OS +のデバイスドライバが何をしているのか分かります。

これはささいなことではありません。あなたの時間に価値があるならば、ハードウェアUSBスニッファを入手してケーブルに入れることは安くて信頼できるかもしれません。特に1.2Mbitsまたは12MBitsのUSB(スニッファはデータレートが高くなるほど高価です)。

これらのリンクは役立つことがあります。
About DTrace
DTrace Guide
DTrace book
Brendan Gregg's Top 10 DTrace scripts for Mac OS X
Apple DTrace manual
Hooked on DTrace

+0

情報をありがとう、私はこれを確認します。私は上司にハードウェアトレーサを言いました。私の偉大な驚きには...個人的なプロジェクトのために自宅にいるのですか...だから、おそらくそのルートに行くでしょう。 – Gary

+0

@Gary - USBスニファとDTraceを組み合わせることができれば、「すべて」を見ることができます。運が良かった。 – gbulmer

+0

更新:私はハードウェアトレースモジュールを使用しました...しかし、トレースの性質は、USB - >シリアルアダプタを使用してスニファに、次にrs-232 - > rs-232をハードウェアデバイスに使用することを意味していました。 これは実際に私が別のUSB - >シリアルデバイスを使用していたことを意味し、問題はなくなりました。だから我々はかなり確かにそれがドライバのレベルまたはそれ以下で問題であることを証明しました。 – Gary

関連する問題