前段时间做完一个是视频数据传输终端,使用4G模块拨号,接上摄像头,当一个路由器来传输视频信号;以及本身会带一些远程管理功能;当然这不是本文的重点;在此仅重点介绍4G拨号相关的内容,因为从开发到上线到量产过程中,拨号稳定性一直是一个考验;
设备使用的是openwrt系统,Ulong9300 LTE模块,MiniPcie接口,其实就是usb;
首先介绍几个相关的工具:
comgt:主要是发送AT指令以及读取结果,非常轻量级,一个.c文件,支持多种语法,可以自行编写配置脚本
pppd:3g ppp 协议拨号 工具,使用配置文件配置拨号参数:如APN,用户名,断线检测周期等等
usbserial: usb转tty驱动
option: usb转tty驱动
Ndis: LTE拨号专有驱动,与usbserial虚拟成串口不同,ndis虚拟成网口,可以获得更高的速率
下面根据使用流程一个一个做相关详细介绍:
驱动:如果使用usbserial驱动,Linux Kernel自带,无需配置,直接install即可;Option驱动同样;
使用ndis驱动,需要LTE模块厂家提供相关的驱动包,以及应用层拨号程序
pppd参数:主要是APN和Dialnumber,用户名和密码一般不需要;APN及Dialnumber 可以咨询运营商,每个运营商固定的,不过地区不同也可能存在差别,尤其是现在IOT的M2M卡,专用卡等等。
可以通过SIM卡ICCID来判断运营商类别,然后设定相关的APN和Dialnumber。参考comgt脚本如下:
:cimi
waitquiet 1 0.2
send "AT+CIMI^m"
waitfor 3 "46000" "46002" "46007" "46001" "46006" "46003" "46005" "46011"
if % = -1 goto err
if % = 0 goto cmnet
if % = 1 goto cmnet
if % = 2 goto cmnet
if % = 3 goto net3g
if % = 4 goto net3g
if % = 5 goto ctlte
if % = 6 goto ctlte
if % = 7 goto ctlte
# default
goto webset
:err
exit 1
:cmnet
send "AT+CGDCONT=1,\"IP\",\"CMNET\"^m"
print "CMNET\n"
goto waitret
:net3g
send "AT+CGDCONT=1,\"IP\",\"3GNET\"^m"
print "3GNET\n"
goto waitret
:ctlte
send "AT+CGDCONT=1,\"IP\",\