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を駆動します.
ダイヤルアップ後のスクリプトを実行すると、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でインターネットに接続できます
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でインターネットに接続できます