1. 程式人生 > >usb_modeswitch 自動轉化的問題

usb_modeswitch 自動轉化的問題

使用usb_modeswitch 在Linux下做自動的撥號,在以前的x86板子上面已經除錯通過,可以進行自動的轉化。

但是今天又拿來一個不同的x86板子,自動轉化就是不能成功,手動轉化可以成功的。檢視usb_modeswitch的log發現傳遞進來的裝置ID不對,,居然是usb hub的id。檢視/sys/usb/devices後設備的描述的是對的。

檢視usbmode的幾個指令碼檔案:

在/usr/sbin/usb_modeswitch_dispatcher檔案中。涉及到一個計算裝置描述父目錄的問題,


肯定是父目錄的計算出現問題,導致取到的裝置ID都是不對的。分析上述 的指令碼,在128 行 原是:

set dev_top 【lindex $argList 0】,正常時傳遞過來的引數是:2-1/2-1:1.0

Raw args from udev: 2-1/2-1:1.0,,,這樣 dev_top得到的目錄就是2-1 ,,這是沒有問題的。

但是現在傳遞進來的是 usb2/2-1:1.0 ,  導致計算出來的 dev_top 是usb2 ,,這樣就有問題了。

經過多次試驗,4個USB口中3個都是這樣不正常,不知道是板子本身有問題,還是udev處理的有問題,但是2-1:1.0這裡還是很有規律的,所以改成上圖所示使用 【lindex $argList 1】處理出來的結果就是正確的了。

還有問題就是,usb_modeswitch 的自動轉化,在開機啟動的時候,不能自動轉化成功。。。。