usb 3.0 linux libusb 問題

smilestone322發表於2017-09-30

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
usbmon2 表示對bus2抓包。


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)


相關文章