Linux OpenWrt 2.6.36+ファーウェイME 909 s-821 4 Gモジュールのデバッグ

3714 ワード

1、カーネルmenuconfigは以下の構成項目を追加する
Kernel modules
-->USB Support
    --> kmod-usb-net
        --> kmod-usb-net-cdc-ether
    --> kmod-usb-serial
        --> kmod-usb-serial-option
2、駆動コードの修正
drivers\usb\serial\option.c
でoption_idsリストにme 909 s-821モジュールを追加すると、駆動はttyUSB 0~ttyUSB 4デバイスに自動的にprobeされる
/*add HUAWEI ME909S-821*/{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0x02, 0x06, 0x10) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0x0a, 0x06, 0x11) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x10) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x13) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x12) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x06) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x15c1, 0xff, 0x06, 0x1b) },
\driverset\usb\cdc_ether.c
コードを見て、productsリストの中でWHITELISTはこのモジュールに一致することができるため、修正しなくてもデバイスにprobeすることができて、probeが成功すれば、usb 0のネットワークデバイスを生成して、ifconfig usb 0を通じてこのデバイスを見ることができます;ifconfigでusb 0が見えない場合は、probeがない場合は、このモジュールのproduct IDとvendor IDをproductsリストにBLACKLISTに従って追加すればよい.
3、ダイヤルアップスクリプト
正常なロードを駆動する、usb 0を生成した後、/etc/init.d/ディレクトリの下にダイヤルアップスクリプトが追加されました.pppdプロセスダイヤルとは異なり、ndisを使用してインターネットを利用すると、4 Gをより高い速度にすることができます.実は、4 Gモジュールをネットワークカードに仮想化し、probeが届いたusb 0を駆動します.
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org


START=99
STOP=98

start() {
        # commands to launch application
        if [ -f /sys/devices/platform/rt3xxx-ehci/usb1/1-1/1-1.2/idProduct ]; then
                idProduct=`sed -n 1p /sys/devices/platform/rt3xxx-ehci/usb1/1-1/1-1.2/idProduct`
                idVendor=`sed -n 1p /sys/devices/platform/rt3xxx-ehci/usb1/1-1/1-1.2/idVendor`
                if [ $? -eq 0  -a  -n "$idProduct" -a "$idProduct" ==  "15c1" -a  -n "$idVendor" -a "$idVendor" ==  "12d1" ]; then

                        ifup 4g
                        sleep 1
                        echo -en "AT^SYSCFGEX=\"030201\",3FFFFFFF,0,2,7FFFFFFFFFFFFFFF,,\r
" > /dev/ttyUSB2 sleep 1 echo -en "AT+CGDCONT=1,\"IPV4V6\",\"\"\r
" > /dev/ttyUSB2 sleep 1 echo -en 'AT^NDISDUP=1,1\r
' > /dev/ttyUSB2 fi fi } stop() { if [ -f /sys/devices/platform/rt3xxx-ehci/usb1/1-1/1-1.2/idProduct ]; then idProduct=`sed -n 1p /sys/devices/platform/rt3xxx-ehci/usb1/1-1/1-1.2/idProduct` idVendor=`sed -n 1p /sys/devices/platform/rt3xxx-ehci/usb1/1-1/1-1.2/idVendor` if [ $? -eq 0 -a -n "$idProduct" -a "$idProduct" == "15c1" -a -n "$idVendor" -a "$idVendor" == "12d1" ]; then echo -en 'AT^NDISDUP=1,0\r
' > /dev/ttyUSB2 sleep 1 ifdown 4g fi fi }

ダイヤルアップ後のスクリプトを実行すると、udhcpc-i usb 0、ifconfig usb 0がIPを取得したことがわかります.
usb0      Link encap:Ethernet  HWaddr 02:1E:10:1F:00:00             inet addr:170.0.18.173  Bcast:170.0.18.175  Mask:255.255.255.252           inet6 addr: fe80::1e:10ff:fe1f:0/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:3 errors:0 dropped:0 overruns:0 frame:0      TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collitions:0 txqueuelen:1000 RX bytes:682(682.0 B)TX bytes:2513(2.4 KiB)その後usb 0でインターネットに接続できます