usbmon即usb monitor,是Linux内核提供的USB抓包⼯具,⽤于捕获USB核⼼层和设备类驱动程序 (如 UVC 驱动)之间交互的数据,以及捕获USB核⼼层和USB Host控制器驱动之间交互的数据。通过usbmon抓数据包,并使⽤数据包分析⼯具(如:vusb-analyzer或者Wireshark)解析USB通信协议,可以直观地看到内核UVC数据的处理流程,帮助我们分析和定位UVC驱动问题和USB控制器驱动问题。
usbmon驱动模块位置在内核drivers/usb/mon/,使能usbmon功能的⽅法:
1、内核使能CONFIG_USB_MON配置;
2、挂载debugfs⽂件系统:
mount -t debugfs none_debugs /sys/kernel/debug
3、数据包分析⼯具:
vusb-analyzer下载地址:
https://vusb-analyzer.sourceforge.net/download.html
Ubuntu 安装⽅法:
sudo apt-get install vusb-analyzer
4、使⽤usbmon抓取通信数据包(2代表USB BUS 2,u代表数据格式):
cat /sys/kernel/debug/usb/usbmon/2u > /data/usbmon.mon
5、使⽤vusb-analyzer⼯具分析数据包: