在 ubuntu 18.04 中,使用 usbmon,我可以通过以下方式查看总线 1 上的 ISO USB 流量:
cat /sys/kernel/debug/usb/usbmon/1u
这一行显示了一个 ISO 数据包:
ffff8ac78a58d300 1916648463 C Zi:1:013:1 0:1:450:0 1 0:0:32 34 = 00000000 ....
我可以看到从设备发送到主机的 32 字节。伟大的! ISO 数据包是从我的 USB 麦克风生成的。
但是,在我插入 USB 设备后,它仅转储前约 3000 个数据包的 ISO 数据包。有没有办法让 usbmon 转储 ISO 数据包?
编辑:看来我问的问题可能不切实际,因为 usbmon 在内核空间中运行。 usbmon 可能会被修改为采用用户空间事件来重新启动转储 ISO 数据,但这需要 usbmon 开发人员进行一些更改。目前,我很满意在重新插入设备后获得 ISO 数据包转储。
读取usbmon驱动文件,mon_bin.c有MON_IOCH_MFLUSH。我对 usbmon 不熟悉,也许可以使用用户空间 usbmon API/ioctl() 来刷新存储在缓冲区中的同步数据包。在我看来只要usbmon被加载到内核中,它就会对USB性能产生影响。