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

Gar*_*ary 6 macos serial-port go

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

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

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

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

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

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

任何想法都非常感激.

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

gbu*_*mer 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(嗅探器对于更高的数据速率来说要贵得多).

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