Openwrt 3G拨号上网

1、添加VID、PID

在linux_src/drivers/usb/serial/option.c 文件中的
static const struct usb_device_id option_ids[]的id 列表中增长以下语句:
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },

openwrt-1407在以下位置:
build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620n/linux-3.10.49/drivers/usb/serial/option.c


2、内核的编译配置

包括USB串口驱动和PPP拨号相关的配置项:

一、USB 串口驱动相关的配置项:
   CONFIG_USB_SERIAL=y
   CONFIG_USB_SERIAL_OPTION=y
   CONFIG_USB_SERIAL_WWAN=y

make kernel_menuconfig

Device Drivers --->
  USB support --->
    USB Serial Converter support ---> (默认是M,且不能设为*)

习惯上=y 使得编译进内核而不是做为模块,那么得配置好一些USB相关
<*>  Support for Host-side USB (默认M,选择* 方便USB Serial能够=y)
<*>  USB announce new devices
[*]  Enable USB persist by default
<*>  EHCI HCD(USB 2.0) support
[*]  Root Hub Transaction Translators
[*]  Improved Transaction Translator scheduling
<*>  OHCI HCD support
<*>  USB Modem (CDC ACM) support
<*>  USB Printer support
<*>  USB Wireless Device Management support

USB Serial Converter support --->
  <*>  USB driver for GSM and CDMA modems

退出后保存,git status查看会修改target/linux/ramips/mt7620n/config-3.10 这里即是内核的默认编译配置文件

二、PPP 拨号的相关配置项:
   CONFIG_PPP=y
   CONFIG_PPP_MULTILINK=y
   CONFIG_PPP_FILTER=y
   CONFIG_PPP_ASYNC=y
   CONFIG_PPP_SYNC_TTY=y
   CONFIG_PPP_DEFLATE=y
   CONFIG_PPP_BSDCOMP=y

make kernel_menuconfig

Device Drivers --->
  [*] Network device support --->
      <*> PPP (point-to-point protocol) support
      <*> PPP BSD-Compress compression
      <*> PPP Deflate compression
      [*] PPP filtering
      [*] PPP multilink support
      <*> PPP MPPE compression (encryption)
      [*] PPP multilink support
      <*> PPP over Ethernet
      <*> PPP support for async serial ports
      <*> PPP support for sync tty ports


3、其它配置

make menuconfig

一、界面LuCI配置(web页面管理程序)
LuCI --->
  1. Collections --->
       <*> luci
  3. Applications --->
       <*> luci-app-commands
       <*> luci-app-ddns
       <*> luci-app-ntpc

二、网络配置
Netmowrk --->
  File Transfer --->
    <*> wget
  SSH --->
    <*> openssh-client
    <*> openssh-sftp-server

三、工具配置
Utilities --->
  <*> comgt


4、添加ppp0网络节点

target/linux/ramips/base-files/etc/uci-defaults/02_network

+       m201)
+               ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+               ucidef_set_interfaces_3g "ppp0"
+               ;;
+
        ur-336un)

package/base-files/files/lib/functions/uci-defaults.sh

+ucidef_set_interface_ppp0() {
+       local ifname=$1
+       
+       uci batch <<EOF
+set network.ppp0='interface'
+set network.ppp0.ifname='$ifname'
+set network.ppp0.proto='3g'
+set network.ppp0.apn='3gnet'
+set network.ppp0.service='umts'
+set network.ppp0.dialnumber='*99#'
+set network.ppp0.device='/dev/ttyUSB0'
+EOF
+}

+ucidef_set_interfaces_3g() {
+       local ppp0_ifname=$1
+       
+       ucidef_set_interface_ppp0 "$ppp0_ifname"
+}
+

package/network/config/firewall/files/firewall.config

config zone
+       option network          'wan ppp0'

调试的时候能够手动设置(我这里是华为MU709s-2 WCDMA 联通3G):
进入etc/config/修改network,增长一个3G 网络节点

config interface 'ppp0'
        option ifname 'ppp0'
        option proto '3g'
        option apn '3gnet'
        option service 'umts'
        option dialnumber '*99#'
        option device '/dev/ttyUSB0'

注:联通apn:3gnet 电信apn:ctnet 移动apn:cmnet/cmwap
联通dialnumber:3G为*99# 电信:3G为#777 移动为:*99***1# LTE为:*99#


拨号成功:
ifconfig
3g-ppp0   Link encap:Point-to-Point Protocol  
          inet addr:10.229.7.143  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:844 (844.0 B)  TX bytes:854 (854.0 B)

5、参考资料 openwrt官网 Use 3g/UMTS USB Dongle for WAN connection: http://wiki.openwrt.org/doc/recipes/3gdongle Wired WAN + 3G dongle: http://wiki.openwrt.org/doc/howto/wired.wan.with.3g.dongle Get your WAN interface up using ifup wan (or /etc/init.d/network restart if you changed more stuff; a reboot if you changed even more). 小笔记: 一、使用cat /sys/kernel/debug/usb/devices 看USB的VID, PID 二、gcom -d /dev/ttyUSB0 info