1)usb3.0 在windows使用winusb时,出现ReadFile的input buffer 太大时,读不到数据问题?
2)linux下,usb 3.0 libusb_claim_interface fail ,error=-5
对于一些linux标准支持的设备(如HID设备),可能需要使用libusb_detach_kernel_driver,或libusb_set_auto_detach_kernel_driver,将kernel提供的驱动卸载掉,否则会与libusb的通信产生冲突。对于支持多configuration的设备,还需要使用libusb_set_configuration,选择要使用的configuration number。之后,调用libusb_claim_interface,选择要使用的interface。
问题分析过程:
1)usbmon抓包环境搭建
1.1) 首先下载内核源码4.10.17,编译安装;
http://blog.csdn.net/smilestone_322/article/details/78163994
1.2) 配置usbmon抓包环境;
http://blog.csdn.net/smilestone_322/article/details/78144702
1.3)下载tcpdump 4.9.2 依赖libpcap 1.8.1 下载网址:
http://www.tcpdump.org/#latest-releases
安装过程报错:
configure: error: Neither flex nor lex was found.
apt-get install flex bison
错误消失,
然后重新执行configure,make ,make install .安装完成
只有先安装好libpcap后,TCPdump安装才没有问题
- tcpdump -i usbmon2 -w /data/usblog.pcap &
- killall tcpdump
1.4)下载wireshark
http://www.cnblogs.com/BlackStorm/p/5876148.html
安装好后,使用wireshare打开使用tcpdump 抓的数据包,进行分析。
经过分析:
第一次设备运行时候,正常,然后ctrl+c退出应用程序,这时,设备的最后一帧数据没有读完整,这个时候在开启应用程序,就读不到数据了。
主要错误:
第一次结束时:
URB status: Cannot send after transport endpoint shutdown (-ESHUTDOWN) (-108)
第二次运行时:
-EPROTO 表示传输中发生了bitstuff 错误或者硬件未能及时收到响应数据包
URB status: Operation now in progress (-EINPROGRESS) (-115)