【问题标题】:method to sniff usb-serial communication on osx在osx上嗅探usb串行通信的方法
【发布时间】:2015-11-16 20:45:38
【问题描述】:

在 Windows 上,有几个不错的替代方案(大部分是付费的),可让您监控串行端口通信。在 OSX 上,有很多终端应用程序可以让您与串行设备通信,但我还没有找到监控串行端口通信的机制。

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

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

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

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

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

任何想法都非常感谢。

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

【问题讨论】:

  • USB tracer 呢?
  • @gbulmer 这是一个 go 可执行文件。并使用 golang 串行库。但你的权利,这绝对不明显,我编辑显示我正在使用的串行库。
  • @nemo 我已经试过了,我没有从那个工具中看到任何东西。我再试一次,可能是我用错了。

标签: macos go serial-port


【解决方案1】:

您使用过 DTrace 吗?

我用它来监控 FTDI USB/串行转换器和第 3 方“黑匣子”应用程序之间的 USB 通信。所以我可以了解应用程序发送到 USB 串行端口的所有内容

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

我没有观察到设备驱动程序。原则上,如果内核或设备驱动程序被编译为与 DTrace 一起工作,DTrace 可以做到这一点,尽管不能确定它是。 Apple 还可以构建对 DTrace “不可见”的代码(例如,我认为 iTunes 对 DTrace 是不透明的,以保护其 DRM 机制。)

因此,一个可能的起点是观察所有操作系统打开/创建调用,寻找 /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

【讨论】:

  • 感谢您的信息,我会检查一下。我向我的老板提到了硬件跟踪器,令我大吃一惊......家里有一个用于个人项目......所以我可能最终会走这条路。
  • @Gary - 如果您可以将 USB 嗅探器与 DTrace 结合使用,您可能会看到“一切”。祝你好运。
  • 所以更新:我使用了硬件跟踪模块...但是跟踪的性质意味着使用 USB -> 串行适配器到嗅探器,然后 rs-232 -> rs-232 到硬件设备.这实际上意味着我使用的是不同的 USB -> 串行设备,问题就消失了。因此,我们已经非常明确地证明这是驱动程序级别或更低级别的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多