一、模块配置

make menuconfig 进入图形界面配置

1、内核模块配置 

Kernel modules >>
    USB Support >>
        <*> Kmod -usb-core
        -*-Kmod -usb-net
        -*- kmod-usb-net-cdc-ether//【可选】
        <*> kmod-usb-net-cdc-mbim
        -*- kmod-usb-net-cdc-ncm
        <*> kmod-usb-net-cdc-subset//【可选】
        <*>kmod-usb-net-qmi-wwan
        <*>Kmod-usb-ohci     //这个选项一定要勾选,否则可能无法在系统中查看设备
        <*>Kmod-usb-serial
        <*>Kmod-usb-serial-option
        <*>Kmod-usb-serial-wwan
        <*>kmod-usb-uhci
        <*>Kmod-usb2

2、网络模块配置 

NetWork   >>
    <*>wwan    //
    <*>chat    //建立串行通行需要
    <*>ppp     //支持标准的点对点协议(point-to-point protocol)
    <*>uqmi    //支持qmi接口
    <*>umbim   //一些加密狗用mbim协议

 3、其他配置

Utilities
  <*>comgt
  <*>usb-modeswitch //自动模式更改,将设备置于USB调制解调器模式 @该处勾选之后编译报错、原因未知@
  <*>usbutils//【可选,可查看usb设备】

 4、Luci界面配置

Luci
1. Collections
  <*> luci
3. Applications
  <*> luci-app-multiwan (optional to support multiple 3g dongles) 可选,以支持多个3g加密狗
  <*> luci-app-qos (optional to provide QOS support) 可选,以提供QOS支持
6. Protocols
  <*> luci-proto-3g
  -*- luci-proto-ppp

二、EC20驱动移植

1、清理内核

make target/linux/clean V=99

2、拷贝内核补丁


999-widora-ec20.patch (见附件) 补丁放到  openwrt/target/linux/ramips/patches-3.18 文件夹下,编译时会自动打上。





3、应用内核补丁

将内核应用所有 patch 并生成最新代码到 build_dir 目录下


make target/linux/prepare V=99

 可以看到补丁已经应用成功了:

MT7622 架构 mt7621 mt7628_ci


4、移植 EC20R2.0 拨号程序 quectel-CM(见附件:已经移植好了的驱动文件)

把 ec20/quectel 文件夹放置在 openwrt/package 目录下



5、选中 quectel 软件包


make menuconfig



Utilities  ---> 
    <*>prince  ---> 
        <*>quectel

三、测试EC20上网

1、编译与升级固件

make V=s 全编译后更新固件,注意不要勾选“保留配置”

MT7622 架构 mt7621 mt7628_ci_02

2、接上了4G模块后启动LOG会有以下信息

MT7622 架构 mt7621 mt7628_OpenWRT_03

3、查看设备有 cdc-wdm0 则证明添加成功,且检测到4G模块了。 

root@LoRaGateway:~# ls /dev/
audio               mtd0                mtdblock0           random
autofs              mtd0ro              mtdblock1           regopt
bus                 mtd1                mtdblock2           shm
cdc-wdm0            mtd1ro              mtdblock3           snd
console             mtd2                mtdblock4           spidev32766.1
cpu_dma_latency     mtd2ro              mtdblock5           tty
dsp                 mtd3                mtdblock6           ttyS0
full                mtd3ro              network_latency     ttyS1
i2c-0               mtd4                network_throughput  ttyS2
kmsg                mtd4ro              null                urandom
log                 mtd5                port                watchdog
mem                 mtd5ro              ppp                 watchdog0
memory_bandwidth    mtd6                ptmx                zero
mixer               mtd6ro              pts

MT7622 架构 mt7621 mt7628_EC20_04

4、设置自动连接网络与连接状态查看:

uqmi -d /dev/cdc-wdm0 --get-data-status //查看连接状态
uqmi -d /dev/cdc-wdm0 --start-network internet --autoconnect //使网卡自动连接网络,让开发板重启后同样有效。

5、查询或否获取到 IP 地址:

udhcpc -i wwan0
或者
ifconfig wwan0

MT7622 架构 mt7621 mt7628_MT7622 架构_05

6、ping 百度的 IP 地址成功:

MT7622 架构 mt7621 mt7628_4G_06

7、ping 百度的域名失败,需要添加DNS解析地址:

ping www.baidu.com

MT7622 架构 mt7621 mt7628_ci_07

解决:在 /etc/resolv.conf 文件添加DNS:

vi /etc/resolv.conf

新增以下内容:

nameserver 114.114.114.114               
nameserver 8.8.8.8

修改后文件内容: 

MT7622 架构 mt7621 mt7628_MT7622 架构_08

再次ping成功:

MT7622 架构 mt7621 mt7628_ci_09

四、Luci界面添加新网卡接口

1、登陆 openwrt 配置页面,打开“网络” -> “接口” -> “添加新接口”。

MT7622 架构 mt7621 mt7628_4G_10

2、输入接口名称“4G" - 协议”DHCP客户端“ - 接口”以太网适配器 wwan0“

MT7622 架构 mt7621 mt7628_EC20_11

3、"防火墙设置 "配置成”wan“模式

MT7622 架构 mt7621 mt7628_OpenWRT_12

4、保存&应用,接口创建成功

MT7622 架构 mt7621 mt7628_OpenWRT_13

5、查看网络配置文件

(1)/etc/config/network

root@LoRaGateway:~# cat /etc/config/network

可以看到新增了”config interface '4G'“ 的配置

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fda3:4d40:0f83::/48'

config interface 'lan'
        option ifname 'eth0.1'
        option force_link '1'
        option macaddr '8c:88:2b:00:06:b3'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.8.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'eth0.2'
        option force_link '1'
        option macaddr '8c:88:2b:00:06:b1'
        option proto 'dhcp'

config interface 'wan6'
        option ifname 'eth0.2'
        option proto 'dhcpv6'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 4 6t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '0 6t'

config interface '4G'
        option proto 'dhcp'
        option ifname 'wwan0'

(2)/etc/config/firewall

cat /etc/config/firewall

可以看到 option network 'wan wan6 wwan 4G'  项增加了4G的配置

config defaults
        option syn_flood '1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        option network 'lan'

config zone
        option name 'wan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
        option network 'wan wan6 wwan 4G'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option src_ip 'fe80::/10'
        option src_port '547'
        option dest_ip 'fe80::/10'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config include
        option path '/etc/firewall.user'

config rule
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

五、其他

1、插拔4G模块,会提示注册成功:

root@LoRaGateway:~# [  198.540000] usb 1-1: USB disconnect, device number 2
[  199.000000] usb 1-1: new high-speed USB device number 5 using ehci-platform
[  199.160000] hub 1-1:1.0: USB hub found
[  199.170000] hub 1-1:1.0: 4 ports detected
[  209.610000] usb 1-1.1: new high-speed USB device number 6 using ehci-platform
[  209.740000] qmi_wwan 1-1.1:1.4: cdc-wdm0: USB WDM device
[  209.750000] qmi_wwan 1-1.1:1.4: Quectel EC21&EC25&EC20 R2.0work on RawIP mode
[  209.770000] qmi_wwan 1-1.1:1.4 wwan0: register 'qmi_wwan' at usb-101c0000.ehci-1.1, WWAN/QMI device, 8a:64:a0:62:5a:79

2、quectel-CM 拨号

CONNET 为连接成功:

quectel-CM
或者
quectel-CM &

没有天线的效果:

root@LoRaGateway:~# quectel-CM
[11-02_11:35:43:740] Quectel_Linux_ConnectManager_SR01A01V21
[11-02_11:35:43:740] quectel-CM profile[1] = (null)/(null)/(null)/0, pincode = (null)
[11-02_11:35:43:741] Find qmichannel = /dev/cdc-wdm0
[11-02_11:35:43:741] Find usbnet_adapter = wwan0
[11-02_11:35:43:752] cdc_wdm_fd = 7
[11-02_11:35:43:836] Get clientWDS = 18
[11-02_11:35:43:868] Get clientDMS = 1
[11-02_11:35:43:900] Get clientNAS = 3
[11-02_11:35:43:932] Get clientUIM = 1
[11-02_11:35:43:964] Get clientWDA = 1
[11-02_11:35:43:996] requestBaseBandVersion EC20CEHCR06A03M1G
[11-02_11:35:44:060] requestGetSIMStatus SIMStatus: SIM_READY
[11-02_11:35:44:092] requestGetProfile[1] cmnet///0
[11-02_11:35:44:124] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:35:44:155] requestQueryDataCall ConnectionStatus: DISCONNECTED
[11-02_11:35:44:220] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:35:49:276] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:35:54:332] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:35:59:388] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:36:04:444] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:36:09:500] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:36:14:556] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[11-02_11:36:16:412] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: UNKNOW
[11-02_11:36:16:476] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: UNKNOW
[11-02_11:36:18:108] requestSetupDataCall WdsConnectionIPv4Handle: 0x845172e0
[11-02_11:36:18:172] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_11:36:18:203] requestQueryDataCall ConnectionStatus: CONNECTED
[11-02_11:36:18:236] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_11:36:18:268] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_11:36:18:344] udhcpc (v1.23.2) started
[11-02_11:36:18:399] Sending discover...
[11-02_11:36:18:405] Sending select for 10.131.75.183...
[11-02_11:36:18:409] Lease of 10.131.75.183 obtained, lease time 7200
[11-02_11:36:18:414] udhcpc: ifconfig wwan0 10.131.75.183 netmask 255.255.255.240 broadcast +
[11-02_11:36:18:422] udhcpc: setting default routers: 10.131.75.184

MT7622 架构 mt7621 mt7628_MT7622 架构_14

有天线的效果:

root@LoRaGateway:~# quectel-CM
[11-02_14:04:23:118] Quectel_Linux_ConnectManager_SR01A01V21
[11-02_14:04:23:118] quectel-CM profile[1] = (null)/(null)/(null)/0, pincode = (null)
[11-02_14:04:23:119] Find qmichannel = /dev/cdc-wdm0
[11-02_14:04:23:119] Find usbnet_adapter = wwan0
[11-02_14:04:23:129] cdc_wdm_fd = 7
[11-02_14:04:23:204] Get clientWDS = 18
[11-02_14:04:23:236] Get clientDMS = 1
[11-02_14:04:23:268] Get clientNAS = 3
[11-02_14:04:23:300] Get clientUIM = 1
[11-02_14:04:23:332] Get clientWDA = 1
[11-02_14:04:23:364] requestBaseBandVersion EC20CEHCR06A03M1G
[11-02_14:04:23:428] requestGetSIMStatus SIMStatus: SIM_READY
[11-02_14:04:23:460] requestGetProfile[1] cmnet///0
[11-02_14:04:23:492] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_14:04:23:524] requestQueryDataCall ConnectionStatus: DISCONNECTED
[11-02_14:04:23:588] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_14:04:23:620] requestSetupDataCall WdsConnectionIPv4Handle: 0xe17cb050
[11-02_14:04:23:684] requestQueryDataCall ConnectionStatus: CONNECTED
[11-02_14:04:23:725] udhcpc (v1.23.2) started
[11-02_14:04:23:736] Sending discover...
[11-02_14:04:23:741] Sending select for 10.131.75.183...
[11-02_14:04:23:744] Lease of 10.131.75.183 obtained, lease time 7200
[11-02_14:04:23:749] udhcpc: ifconfig wwan0 10.131.75.183 netmask 255.255.255.240 broadcast +
[11-02_14:04:23:758] udhcpc: setting default routers: 10.131.75.184