英创信息技术Linux主板基于3G和4G的无线通讯方案

描述

随着3G和4G网络的普及,在嵌入式产品中越来越多的使用到他们,特别是在没有以太网的环境中,使用3G或者4G无线模块能够有效的解决网络通讯问题。英创公司也针对各种型号的主板,推出了通用的3G和4G的通讯方案,这篇文章主要总结了各种在主板上评估过的3G和4G模块,以及使用方法和常见的一些问题。

基础介绍

英创公司支持的为MINI-PCIe接口的全长或者半长尺寸模块,3G和4G模块只使用了MINI-PCIe接口中的供电、复位和USB信号,所以这种接口的模块在英创公司所有型号的主板上都能够适用,并且为了方便客户评估,英创公司在ESMARC通用评估底板上已经增加了接口,可以直接和评估底板连接测试。MINI-PCIe接口的模块如下图:

ESMARC系列主板和MINI-PCIe接口模块

目前测试过的3G和4G模块整理如下:

型号 厂商 网络制式 Vendor ID Product ID Modem口
MU709S-2 华为 3G,联通WCDMA 0x12d1 0x1c25 /dev/ttyUSB0
MC2716 中兴 3G,电信CDMA2000 0x19d2 0x5238 /dev/ttyUSB0
ME909S-821 华为 4G,全网通 0x12d1 0x15c1 /dev/ttyUSB1
ME3630 中兴 4G,全网通 0x19d2 0x1476 /dev/ttyUSB1
EC20 移远 4G,全网通 0x05c6 0x9215 /dev/ttyUSB1

 

无线模块和英创公司主板在物理上是通过USB虚拟串口进行通讯的,而软件上通过ppp协议转换提供给客户一个标准的网络设备。英创公司在主板中已经添加了3G和4G模块的驱动(USB虚拟串口驱动)和ppp协议的支持。板卡中的驱动是以模块(usbserial.ko)的形式提供,usbserial.ko是一个通用的驱动,已经集成了大部分常用模块的支持。驱动加载成功后系统会生成多个虚拟串口,他们分别有不同的用处,比如作为数据通讯口(即modem口)、响应AT指令的设备口以及传输GPS信息的设备口等,生成USB虚拟串口后通过ppp调用modem口拨号即可连接上网,需要注意的是3G模块的modem口一般都为/dev/ttyUSB0,而4G模块的modem口一般为/dev/ttyUSB1。

拨号使用的文件在/etc/ppp/peers/目录下,英创公司已经编写好了3G和4G的拨号文件,客户只需要选用对应的拨号文件即可,本文使用的是4G模块MU909S-2作为例子,所以使用/etc/ppp/peers/目录下的lte-connect-script文件,对于4G来说,移动、联通和电信的SIM卡都可以使用这一个拨号文件。如果客户使用的是3G模块,就需要根据不同的网络制式选择脚本,如果是联通的3G,需要使用wcdma-connect-script这个拨号文件,如果是使用的电信3G,就需要使用cdma-connect-script这个拨号文件,若客户有其他特殊的要求,可以根据英创公司提供的这三个拨号文件进行修改,满足自己的需要,下表列出了网络制式和拨号文件的对应关系:

无线信道 网络制式 对应拨号文件
3G 联通CDMA /etc/ppp/peers/wcdma-connect-script
3G 电信CDMA 2000 /etc/ppp/peers/cdma-connect-script
4G 通用 /etc/ppp/peers/lte-connect-script

 

使用步骤

接下来以4G模块MU909S-2作为例,说明具体的使用步骤:

1、插入无线模块,上电启动英创Linux主板。在没有加载驱动的时候,会被识别成CDROM或者USB移动存储设备。

2、加载驱动模块,需要代入上面的vender id和product id,英创Linux主板的驱动模块都放在/lib/modules//下面,例如使用ESM6800加载驱动模块,因为ESM6800的内核版本为4.1.15,输入命令为:insmode /lib/modules/4.1.15/usbserial.ko vendor=0x12d1 product=0x15c1,注意如果使用的主板为ESM7000,ESM6802,ESM6800H或者ESM6800V系列的板卡,可以使用命令:modprobe usbserial vendor=0x12d1 product=0x15c1,不需要代入路径了,输入驱动后会自动生成usb虚拟串口,如下:

嵌入式主板

转换成虚拟串口

可以看到系统生成了多个USB虚拟串口。注意,如果客户使用的无线模块不在上面的表格之中,可以通过模块的手册来确定vendor id和product id,或者使用一台装有Linux系统的PC,将模块连接到PC上使用lsusb命令也可以查看到两个id号。

3、接下来就可以拨号了,输入命令:pppd call lte-connect-script 使用4G网络的拨号文件lte -connect-script进行拨号,完成以后,可以使用ifconfig命令查询,如果成功联网,会有ppp0的网络信息。如图所示:

嵌入式主板

ppp0节点信息

常见问题

如果拨号后遇到无法生成ppp0节点的情况,客户可以通过修改拨号文件来查看调试信息,拨号文件中有一行为#nodetch,去掉前面的#,就可以输出调试信息了,如下图:

嵌入式主板

拨号文件内容

再调用ppp拨号,就能看见调试信息了。如果是发现调试信息出现模块没有回复指令的情况,可能是由于拨号文件使用的设备节点不是模块作为modem口的设备,可以通过模块的手册来确定作为modem口的设备节点,同时尝试更改拨号文件中使用的usb虚拟串口设备,比如上图中使用的是/dev/ttyUSB0,可以更换为/dev/ttyUSB1尝试。如果是遇到无法建立连接的情况,建议可以检查天线和SIM卡是否接好。

在生成ppp0节点之后,如果要通过ppp0访问外网,那么默认网关就需要设置为ppp0节点,客户可以使用route命令查看当前的默认网关。在没有默认网关的情况下,ppp拨号成功之后会自动将ppp0设置为默认网关,英创主板可以通过把userinfo.txt中DefaultGateway这一项的值填为0,来取消设置默认网关。如果主板在拨号的时候已经有了默认网关,或者需要设置多个网关,可以参考文章:《Linux主板多网络的优先级设置》进行设置。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分