中兴ME3720无线4G模块移植及ppp方式拨号

本文主要介绍在Linux平台下进行中兴ME3720无线4G模块的驱动移植,并采用PPP的拨号方式进行拨号接通上网络。

该驱动主要包括本身系统的usb转串口驱动,和中兴提供的ndis口驱动,以及系统支持ndis口驱动需要加载的usbnet驱动。以下将按照从内核编译到应用层实现拨号连网的顺序来介绍:

1 内核编译

1.1 添加USB转串口驱动

在内核的编译配置支持USB转串口驱动之前,由于需要添加该无线模块产品的VID和PID,需要先找到内核源码文件option.c(一般路径在..\drivers\usb\serial\optopn.c),比较旧的linux版本,则是usb-serial.c中,路径相同。

在源码中添加中兴产品的VID(0x19d2)以及ME3720型号的PID(0x1529),如下:

        中兴ME3720无线4G模块移植及ppp方式拨号_第1张图片

中兴ME3720无线4G模块移植及ppp方式拨号_第2张图片

添加PID和VID后,就可以在内核编译配置中添加编译该usb转串口驱动了,配置如下:

在内核文件夹下输入命令make menuconfig

device drivers-->usb support-->usb serial converter support

选中如下组件:

USB driver for GSM and CDMA  modems

编译内核,即支持该驱动了。

1.2 ppp拨号方式需要支持的内核配置

由于之后应用层上采用的拨号方式为ppp拨号方式,需要系统先支持该拨号方式,配置如下:

在内核文件夹下输入命令make menuconfig

device drivers-->

[*]Network device support -->

中兴ME3720无线4G模块移植及ppp方式拨号_第3张图片

将以上全部选上;编译内核即可。

2 加载驱动

2.1 支持ndis口驱动需要的usbnet驱动

该驱动实际上也是系统内核中本身有的,这里需要将其编译成.ko的形式,如下:

在内核文件夹下输入命令make menuconfig

device drivers --> Network device support --> usb Network Adapters

选中如下组件:

Mutil-purpose USB Networking Framework

编译得到usbnet.ko

2.2 中兴提供的ndis口驱动

一般中兴会提供ndis口驱动的源代码包,如下:

中兴ME3720无线4G模块移植及ppp方式拨号_第4张图片

 

直接make编译即可得到cdc_encap.ko和cdc_ether.ko

2.2 加载驱动

得到以上三个.ko文件后,需要在系统启动项中进行加载这三个.ko文件,不过注意加载的顺序必须按照如下的加载顺序:

insmod usbnet.ko

insmod cdc_encap.ko

insmod cdc_ether.ko

 

至此,驱动便加载完成。

2.3 驱动加载成功验证

开机后若加载成功完成,会看到如下信息:

当插入无线模块后,会打印出如下信息:

中兴ME3720无线4G模块移植及ppp方式拨号_第5张图片

输入以下命令可看到如下信息:

中兴ME3720无线4G模块移植及ppp方式拨号_第6张图片

 

输入ifconfig -a 可看到如下信息:

中兴ME3720无线4G模块移植及ppp方式拨号_第7张图片

有以上现象,则说明驱动加载成功完成。

 

3 ppp方式拨号上网

3.1 系统需要有支持ppp的相关驱动

这一点在1.2中已经阐述如何配置支持。

如果配置支持成功,则可以看到以下现象:

/proc/devices下有:

/dev 下有:

3.2 安装ppp相关工具和脚本

(1)、下载ppp的源码包ppp-2.4.7.zip,然后运行以下命令:

tar zxvf ppp-2.4.7.zip
cd ppp-master

./configure

make CC=arm-none-linux-gnueabi-gcc

 

这里的CC后的交叉编译工具根据芯片的不同而采用不同的工具。编译后有四个是我们所需要的,分别是chat/下的“chat”,pppd/下的“pppd”,pppdump/下的“pppdump”,pppstats/下的“pppstats”。需要将这四个文件都放到文件系统的/usr/sbin/目录下。

(2)、建立三个文件夹:

mkdir /etc/ppp;

mkdir /etc/ppp/peers;

mkdir /etc/ppp/chat;

(3)、脚本准备:

一般ppp拨号需要4个重要的脚本:规则文件、参数文件和两个认证文件pap-secret、chap-secret。

I、认证文件pap-secret、chap-secret

一般两个认证文件的内容是一样的,只是文件名不同以支持PAP方式和CHAP方式

这两个文件放在/etc/ppp下;

认证文件内容有四项:

呼叫者名称   服务器名称  呼叫者口令  与呼叫者关联的IP地址

其中,服务器名称和与呼叫者关联的IP地址可以为*,表示没有限制,可以是任何服务器和任何IP;电信卡的用户名和口令一般为[email protected],vnet.mobi;

如下:

pap-secret:

 
#/etc/ppp/pap-secrets # Secrets for authentication using PAP # client server secret IP addresses ####### redhat-config-network will overwrite this part!!! (begin) ########## ####### redhat-config-network will overwrite this part!!! (end) ############ [email protected] * "vnet.mobi" *
 
 
 

 

chap-secret:

 

#/etc/ppp/pap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
####### redhat-config-network will overwrite this part!!! (begin) ##########
####### redhat-config-network will overwrite this part!!! (end) ############
[email protected] * "123456" *

 

II、规则文件

规则文件对于各种无线模块以及不同的运营商,内容会有所不同,针对中兴ME3720,需要参考其AT命令指南,进行AT命令呼叫。且我使用的是电信卡,如下:

TIMEOUT 10 
ABORT 'NO CARRIER' 
ABORT 'ERROR' 
ABORT 'NODIALTONE' 
ABORT 'BUSY' 
ABORT 'NO ANSWER' 
''  \rAT 
OK  \rATZ 
OK-AT-OK ATDT*99# 
CONNECT \d\c 

规则文件的名字可以自定义,这里定义为chat-ppp0-connect。放在/etc/ppp下。

III、参数文件

参数文件影响和控制ppp连接,包括哪个串口,串口波特率,使用的规则文件名,认证的用户名等,如下:

debug 
nodetach 
lock 
#使用的串口
/dev/ttyUSB1
#串口波特率
115200 
#认证的用户名
user [email protected]
show-password 
usepeerdns 
nocrtscts 
noauth 
noipdefault 
novj 
novjccomp 
noccp 
#表示把服务器指定的服务器IP地址作为默认路由
defaultroute 
#表示接受服务器分配的本机IP地址 
ipcp-accept-local 
#表示接受服务器指定的服务器IP地址
ipcp-accept-remote 
mtu 1492 
mru 1492 
0.0.0.0:0.0.0.0
#使用的规则文件
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-ppp0-connect'

参数文件的名字可以自定义,这里定义为ppp0,放在/etc/ppp/peers下。

3.3 开始拨号并验证

上述四个脚本文件准备好了后,可以在Linux终端上输入pppd  call  /etc/ppp/ppp0 &进行拨号;

我这里是将该命令写到了4gCall-cd这个脚本中,然后运行该脚本;假如正常成功,应有如下信息:

中兴ME3720无线4G模块移植及ppp方式拨号_第8张图片

最后拿到了ip地址和DNS地址,就算是成功了。‘

但是要能连接到网络上,还需要运行如下命令,添加ppp0路由:

route add default dev ppp0

这样机可以连通外网了。可以通过ping百度的ip地址来检测是否正常连上外网:

中兴ME3720无线4G模块移植及ppp方式拨号_第9张图片

 

 

PS可以在终端上直接发送AT命令给无线模块,查询一下信息状态等,比如:

 

cat /dev/ttyUSB1 &
echo “AT+CGMI” > /dev/ttyUSB1

第一条指令可将无线模块回复得内容打印出来,

第二条指令将命令“AT+CGMI”发送给无线模块

中兴ME3720无线4G模块移植及ppp方式拨号_第10张图片

如上的命令“AT+CGMI”是查询厂家的意思,回复了是中兴。

 

你可能感兴趣的:(模块移植)