ホストポートでUSBセルラーGOBI 3000モデムをQMIモードで接続しようとしました。私はすでに他のデバイス(容量性タッチスクリーンなど)を接続して以来、USBホストサブシステムが動作します。必要なドライバは通常の「usbnet.ko」です。また、「GobiSerial.ko」と「GobiNet.ko」もあります。 私はブートした後、私のUSBハブ上のデバイスを、適切なメーカー、VID、PID、4つのインターフェースで見ることができます。 Iモデムを接続すると、私は、端末に次のメッセージがありますUSBデバイスを非シーケンシャルインターフェイス番号でバインドする方法
[352326.921871] usb 1-1.4: new full speed USB device using s5p-ohci and address 8
[352327.038871] usb 1-1.4: config 1 has an invalid interface number: 8 but max is 3
[352327.044804] usb 1-1.4: config 1 has no interface number 1
このメッセージは、「usb_parse_interface」機能の「ドライバ/ USB /コア/ CONFIG.C」によって生成されます。私はUSBのデバイスを一覧表示する場合 、私は(何のドライバがバインドされなかった)それを見る:
C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=5ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=5ms
E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
我々がライン上に見ることができるように、「C:」、デバイス4つのインタフェースを有しています。次に、ライン "I:"には、4つのインターフェイスが "0,2,3および8"としてリストされます。 "include/linux/usb.h"では、 "USB規格では、インタフェースは0からdesc.bNumInterfaces-1まで番号が付けられていると言われていますが、多くのデバイスでこの問題が発生しています。実際、モデムの別のブランドに接続すると、それはそのルールに従うので接続します。その時に見て:あなたが見ることができるように
C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=GobiNet
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=5ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=GobiSerial
E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=5ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=GobiSerial
E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
、4つのインターフェースは、モデムは、世界の他のシステム上で動作していることを、今、0〜3の番号が付けられています。ドライバーにシリアル番号の付いていないインターフェースを持つデバイスをバインドさせるにはどうしたらいいですか?
私は、その答えを探す場所のちょっとした手がかりに満足しています。私はO'Reillyの "Linux Device Drivers"でソースコードでも答えを見つけられず、私は1日以上を探していました。
セットアップは次のとおりです。
カーネル2.6.35.7でAndroid Gingerbreadを実行するカスタムARM Cortex A8プラットフォーム。そのためには、標準のLinux ARMと同じです。それだけでは完全なubuntuシステムのすべての鐘や笛がありません。