在做sdr專案的時候由於韌體版本原因,每次使用完之後都需要重新插拔一下usb介面才能恢復正常。實際生成環境中肯定不能容忍這種情況發生,所以需要實現一種檢測到usb裝置異常後能夠自動復位的功能
先找資料,去網上搬磚
再拿來直接用,在使用過程中找出不足之處
對缺點進行改進,形成通用庫並進行發布
google了一些資料,發現網上有許多現成的**,而且也是可以用的。不過有很大的問題在於需要手動去查詢usb裝置的各種引數。
問題的關鍵就在於:如何獲取usb的引數
dmesg可以檢視usb裝置的詳細情況
lsusb可以檢視當前系統已經連線的usb裝置情況
通過上述兩個命令是可以得到usb bus number 和 device number這兩個關鍵引數的
最終的解決方案就是,通過指令碼得到相關cmd命令的輸出,然後進行文字分析和正規表示式匹配,得到關鍵引數後提供給已有usb復位**,實現usb裝置的復位。
舉例說明:
[19716.055236] usb 1-2: usb disconnect, device number 18
[19716.317559] usb 2-2: new superspeed usb device number 13 using xhci_hcd
[19716.338361] usb 2-2: lpm exit latency is zeroed, disabling lpm.
[19716.339434] usb 2-2: new usb device found, idvendor=2500, idproduct=0020
[19716.339441] usb 2-2: new usb device strings: mfr=1, product=2, serialnumber=3
[19716.339445] usb 2-2: product: usrp b200
[19716.339449] usb 2-2: manufacturer: ettus research llc
[19716.339452] usb 2-2: serialnumber: 3107336
可知usrp b200的bus number = 2, device number = 13
2. cmd line輸入:lsusb
bus 002 device 013: id 2500:0020
bus 002 device 001: id 1d6b:0003 linux foundation 3.0 root hub
bus 001 device 005: id 0cf3:e007 atheros communications, inc.
bus 001 device 004: id 0bda:0129 realtek semiconductor corp. rts5129 card reader controller
bus 001 device 003: id 0bda:5689 realtek semiconductor corp.
bus 001 device 002: id 046d:c077 logitech, inc. m105 optical mouse
bus 001 device 001: id 1d6b:0002 linux foundation 2.0 root hub
可進一步確認002/013兩個引數
修改了網上已有usb復位**,使得可以通過模糊欄位來自動獲取復位所需的usb引數,從而達到全自動的功能。便於工程應用。
缺點在於復位邏輯是有缺陷的,實際上該**只能復位最新的記錄。在很複雜的情況下很有可能會失敗。
稍等。。。
Linux下USB裝置檢測
usb裝置檢測也是通過 proc目錄下的usb檔案系統進行的。為了使乙個usb裝置能夠正常工作,必須要現在系統中插入usb橋接器模組。在檢測開始時,一般要先檢測是否存在 proc bus usb目錄,若不存在則嘗試插入usb橋接模組。現在一般的usb橋接器模組有兩種型別,uhci和ohci。在決定插...
Linux下USB裝置檢測
usb裝置檢測也是通過 proc目錄下的usb檔案系統進行的。為了使乙個usb裝置能夠 正常工作,必須要現在系統中插入usb橋接器模組。在檢測開始時,一般要先檢測是否存在 proc bus usb目錄,若不存在則嘗試插入usb橋接模組。現在一般的usb橋接器模組有兩種型別,uhci和ohci。在決定...
Linux下USB裝置檢測
usb裝置檢測也是通過 proc目錄下的usb檔案系統進行的。為了使乙個usb裝置能夠正常工作,必須要現在系統中插入usb橋接器模組。在檢測開始時,一般要先檢測是否存在 proc bus usb目錄,若不存在則嘗試插入usb橋接模組。現在一般的usb橋接器模組有兩種型別,uhci和ohci。在決定插...