在OSX上嗅探USB串行通信的方法

加里:

在Windows上,有几种不错的选择(大多数是付费的),它们使您可以监视串行端口通信。在OSX上,有很多终端应用程序可以让您与串行设备进行通讯,但是我还没有找到一种监视串行端口通信的机制。

具体用例是:我有一个USB串行设备,位于/dev/tty.usbmodem99999

我编写了一个集成测试,可以成功运行多个命令。

但是,重新运行该命令时,设备不会响应。我已经(尽我所能)确认设备正常。它可以按预期在其他平台上运行。但是在OSX上,我只能在重置设备(重启后)后重新运行测试。

我的理论是我的代码无法正确释放设备,但是当我看不到设备与应用程序之间的通信时,很难确认。

该应用程序:“ http://www.aggsoft.com/serial-port-monitor.htm ”具有“间谍”功能,我无法在OSX上找到类似的功能。我已经在osx上尝试了“串行工具”,但是它看起来不像是在单个端口上执行间谍操作,在那种情况下,用例看起来像是两个设备之间的直通,而不是在端口上进行监视。

任何想法表示赞赏。

使用的串行库是:https : //github.com/jacobsa/go-serial

吸水剂

您使用过DTrace吗?

我用它来监视FTDI USB /串行转换器和第三者“黑匣子”应用程序之间的USB通信。所以,我可以在得到一切的应用程序发送到USB串行端口。

这非常简单,因为我知道应用程序的名称,因此DTrace可以观察到该名称。我编写了DTrace脚本,以观察应用程序打开的文件描述符(寻找“ /dev/tty.usbmodem ...”),然后观察与该文件描述符的交互。

我还没有观察到设备驱动程序。原则上,如果无法将内核或设备驱动程序编译为可与DTrace一起使用,则DTrace可以做到这一点,尽管尚不确定。苹果还可以构建DTrace“不可见”的代码(例如,我相信iTunes对DTrace而言是不透明的,以保护其DRM机制。)

因此,一个可能的出发点是观察所有OS的open / creat调用,查找/dev/tty.usbmodemXXX,并尝试识别子系统并观察该子系统。您可能会发现可以观察到该子系统,这应该有助于了解OS +设备驱动程序在做什么。

这不是小事。如果您的时间有价值,那么获取硬件USB嗅探器并将其插入电缆中可能会更便宜,更可靠,尤其是当它只有1.2Mbits或12MBits USB时(对于更高的数据速率,嗅探器要贵得多)。

这些链接可能会有所帮助:
关于DTrace
DTrace指南
DTrace书
Brendan Gregg的Mac OS X十大DTrace脚本
Apple DTrace手册
钩在DTrace上

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章