如何在外设或 OTG 模式下跟踪 USB 流量?

如何在外设或 OTG 模式下跟踪 USB 流量?

我已在 Raspberry Pi Zero 上设置了 Raspbian Jessie,以将 USB OTG 与该dwc2模块配合使用。我现在想做的是嗅探外设端传入的 USB 流量。我找到并测试了usbmon内核模块,但它(显然,就我有限的知识而言)似乎不起作用:没有记录任何内容。

出于测试目的,我在主机端(Linux 上的另一台计算机)尝试了完全相同的操作,并且我可以使用usbmon.不幸的是,这不是我需要的。

结论:这可能吗?如果是的话,怎么办?我可以使用usbmon还是必须做其他事情(例如使用特定选项重新编译内核)?

答案1

该工具USBMon尚未完成

有一个同名的内核模块是最新的

确保内核模块usbmon可用加载它(modprobe usbmon)并且您可以使用以下命令嗅探USB流量

也可以看看http://discussions.flightaware.com/ads-b-flight-tracking-f21/monitoring-usb-utilization-on-raspberry-pi-t20691.html

答案2

由于我手头没有 RPi,所以我不能确定这是否适合您,但我已成功使用 和tcpdumpwireshark使用以下命令来监控远程计算机上的 USB 流量:

$ ssh user@remotehost 'tcpdump -U -i usbmon2 -w -' | wireshark -k -i -

此处,usbmon22连接 USB 设备的总线 ID。你可以通过 得到这个lsusb

答案3

经过大量挖掘后,当控制器处于状态时,似乎不可能(或者如果是的话,我只是在任何地方都找不到任何信息)跟踪 USB 流量设备(或外围设备)模式。仅当控制器配置为主持人

由于 没有生成任何跟踪usbmon,不幸的是我无法使用任何工具(Wireshark、dumpcap...),因为它们首先需要该跟踪。

因此,我现在要做的就是修改libcomposite内核模块以添加调试信息,甚至编写一个专为嗅探而设计的特定模块(但这远远超出了我目前对此事的了解)。

相关内容