在osx上嗅探usb-serial通信的方法

时间:2015-11-16 20:45:39

标签: macos go serial-port

在Windows上,有几种不错的选择(主要是付费),可以监控串口通信。在OSX上有很多终端应用程序可以让你与串口设备通信,但我还没有找到监控串口通信的机制。

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

我编写了一个运行多个命令的集成测试(成功)。

然而,在重新运行命令时,设备不响应​​。我已经确认(以及我可以)该设备没问题。它可以按预期在其他平台上运行。但是在OSX上我只能在重置设备后重新运行测试(电源循环)。

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

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

任何想法都非常感激。

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

1 个答案:

答案 0 :(得分:5)

您使用过DTrace吗?

我用它监视FTDI USB /串行转换器和第三方黑盒子之间的USB通信。应用。所以我可以得到应用程序发送到USB串口的所有

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

我没有观察到设备驱动程序。原则上,如果编译内核或设备驱动程序以使用DTrace,DTrace可以这样做,尽管不确定它是什么。 Apple还可以构建“隐形”的代码。到DTrace(例如,我认为iTunes对DTrace不透明以保护其DRM机制。)

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

这不是一件轻而易举的事。如果您的时间有任何价值,那么获得硬件USB嗅探器并将其放入电缆可能更便宜,更可靠,特别是如果它只有1.2Mbits或12MBits USB(嗅探器对于更高的数据速率来说要贵得多)。 p>

这些链接可能有所帮助:
About DTrace
DTrace Guide
DTrace book
Brendan Gregg's Top 10 DTrace scripts for Mac OS X
Apple DTrace manual
Hooked on DTrace