NXP----EVB-P6UL的3G通信定制测试手册《三》
3G测试:Linux3G拨号工具:
Linux 3G拨号工具,包括pppd与chat,有时甚至需要usb_modeswitch。
pppd
PPP(Point to Point Protocol)协议是一种广泛使用的数据链路层协议,在国内广泛使用的宽带拨号协议PPPoE其基础就是PPP协议,此外和PPP相关的协议PPTP,L2TP也常应用于(V爱P国N)虚拟专用网络。Linux中PPP实现主要分成两大部分:PPPD和PPPK。PPPD是用户态应用程序,负责PPP协议的具体配置,如MTU、拨号模式、认证方式、认证所需用户名/密码等。 PPPK指的是PPP内核部分,包括PPP驱动和PPP线路规程。PPPD通过PPP驱动提供的设备文件接口/dev/ppp来对PPPK进行管理控制,将用户需要的配置策略通过PPPK进行有效地实现,并且PPPD还会负责PPP协议从LCP到PAP/CHAP认证再到IPCP三个阶段协议建立和状态机的维护。
与PPP连接关系密切的有两个脚本是chat和options两个脚本。其中,chat是用来进行AT呼叫和控制的脚本,而options脚本就影响PPP的连接。
chat
Chat程序定义了一个计算机和调制解调器之间对话交流,其主要目的是用来在本地PPPD和远端PPPD程序之间建立连接。一个chat脚本都是由字符串对来组成的。前面的字符串都是期望获取的串,紧跟的是发送的字符串。这个脚本每一项的具体含义是这样的:
1) MODEM期望空字符串。这句话的意思直接理解就是MODEM不管收到什么字符串,先发出字符 串AT;
2) 期望收到“OK”字符串,然后发送字符串“ATDT dialnumber”
3) 如果收到“CONNECT”,就不再发送,认为数据链路已建立连接。
usb_modeswitch
越来越多的 usb 设备 (特别是高速广域网连接设备, 基于手机芯片组, 能够改变他们的 usb 连接模式) 在MS Windows系统上;当第一次插入时, 它们就像闪存存储, 并开始从那里安装驱动程序。安装后 (并在每次连续插入) 驱动程序在内部切换模式, 存储设备将消失 (在大多数情况下), 并且一个新设备 (如 USB 调制解调器) 出现。这种特征被无线设备的制造商称其为“免CD”的设备。在Linux上,大多情况下,驱动程序作为内核模块使用,如“USB串口”或“option”。默认情况下,设备为USB存储设备,usb_modeswitch 可以向已知启动模式切换的设备发送提供的批量消息 (最有可能是海量存储命令)。在某些情况下, USB 控制命令用于切换。这些情况由自定义函数处理, 不需要提供批量消息。目前许多3G上网设备工作于两种工作模式,像Linux内核的“USB存储模式”与“option模式”(已优化的串口驱动,一种高速的3G medem标准)。
usb_modeswitch是一个模式切换工具,用于控制含有多个USB子设备的USB设备。具体来说,把3G模块的USB存储模式切换成3G模式。在EVB-P6UL上,不需要切换模式,下文的测试中不涉及usb_modeswitch的使用,在其他设备上如需要此工具,请自行研究使用。
验证modem驱动已经加载
启动已经烧写Linux系统的评估板,在安插3G模块前查看USB的设备ID、设备节点。验证并不是必要操作,如果您需要确认3G模块驱动已经加载。在评估板输入如下指令:
root@freescale ~$ lsusb //查看usb设备ID
root@freescale ~$ ls /dev/ttyUSB* //查看USB串口,MF210模块映射3个ttyUSBx串口
插入3G模块后,调试串口在终端打印检测的USB设备信息,同时可以看到3G模块映射的3个USB串口:ttyUSB0、ttyUSB1、ttyUSB2。再次查看USB的设备ID与设备节点。如下图所示:
注: 在评估板执行“dmesg|grep -i ttyUSB”执行,也能看到挂载的ttyUSB*串口。
如图4-2,安插3G模块后,在/dev目录创建了3个ttyUSB*串口,这3个串口是MF210映射而来的。各个ttyUSB接口的功能不同:
ttyUSB0:debug(诊断端口)
ttyUSB1:AT(用于发送at指令)
ttyUSB2:modem(pppd拨号使用此端口)
此外,USB设备ID多了一行,以“:”分隔,“19d2”为厂商编号(VID), “0117”为模块编号(PID)。在评估板上连接运行minicom(或picocom),连接ttyUSB1用at命令查看获取3G模块的信息:
root@freescale ~$ picocom -b 115200 -f n /dev/ttyUSB1
或
root@freescale ~$minicom -s //初次运行minicom,加“-s”设置串口属性(串口设备号、波特率、数据位、停止位、校验位、流控制),如下图所示:
执行 minicom -s 后出现配置界面
==========================
Filename and paths
File transfer and protocols
Serial port setup
Modem and dialing
Screen and keyboard
Save setup as df1
Save setup as……
Exit
Exit from minicom
==========================
使用向下键选择serial port setup(串口设置),按回车出现设置界面
==========================
A — Serial Device: /dev/ttyUSB1
B — lockfile Location : /var/lock
C — Calling Program :
D — Callout Program:
E — Bps/par/Bits: 115200 8N1
F — Hardware Flow Control : NO
G — Software Flow Control : NO
Change with setting?
===========================
按A,设置串口设备为/dev/ttyUSB1 (AT 指令端口,因模块而异)
按E:设置为115200 (模块波特率为自适应,推荐值115200)
按F:设置Hardware Flow Control : NO (无硬件流控)
按回车,保存设定,回到主菜单,可以选择 Save setup as df1 (设为默认配置)。
设置完成后选择 Exit 退出。
连接3G模块映射的ttyUSB1,返回串口属性的值。从minicom的信息中可以看到先按“CTRL-A”再按“z”键调出帮助菜单,帮助菜单下按“Q”或“X”推出minicom返回shell。接着输入at指令测试,入下图所示:
输入at,返回OK,说明3G模块已就绪;
输入ati,返回制造商信息、产品名称、软件版本信息、IMEI 等。
at指令除了获取(或设置)3G模块的信息外,还能设置、获取SIM卡的信息,通过at指令操作SIM就能判断其工作状态。用at+cpbs选择电话本存储位置,选择SIM卡电话薄:
at+cpbs=“SM” //设置SIM卡为电话薄存储位置
at+cpbs? //查询SIM存储情况,返回存储条目、电话薄的。
当拔出SIM卡,再次执行【at+cpbs=“SM”】,提示“+CME ERROR: SIM not inserted”。在使用过程中,出现一样的错误,请检查SIM卡是否接触良好(SIM卡兼容Micro SIM、Nano SIM,是通过卡层层嵌套实现的,如下图:)。
注:不同的3G模块,其at测试指令可能不同,以模块官方的说明书为准。3G模块的at指令是不分区大小写的。更多关于at指令的操作,请参考ZTE公司的《模块AT指令手册》。
测试步骤:
如第2章,图2-1所示,3G模块与SIM分别安插在CN15、CN16中,并注意SIM的金属触点朝下。上一节at指令测试3G模块与SIM卡的接着,开始测试3G上网,步骤如下:
1、创建拨号脚本
在评估板上创建/etc/ppp/peers目录(根文件系统中默认无该目录),并在该目录下增加“wcdma”、“chat-wcdma-connect”“chat-wcdma-disconnect”3个脚本,脚本的内容如下:
“wcdma”的脚本内容
debug
nodetach
lock
/dev/ttyUSB2 #不同3G模块使用的模拟USB串口不同,根据实际情况更改
115200
user "card"
password "card"
crtscts
show-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
defaultroute
ipcp-accept-local
ipcp-accept-remote
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-connect'
disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-disconnect'
“chat-wcdma-connect”的脚本内容
TIMEOUT 5 #设置拨号连接的超时时长
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIALTONE'
ABORT 'BUSY'
ABORT 'NO ANSWER'
'' /rAT
OK /rATZ
OK /rAT+CGDCONT=1,"IP","3gnet",,0,0
OK-AT-OK ATDT*99#
CONNECT /d/c
“chat-wcdma-disconnect”的脚本内容
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "/nSending break to the modem/n"
'' "/K"
'' "+++ATH"
SAY "/nGoodbay/n"
注:若您使用的是CDMA-2000的模块,拨号脚本参考 附录1。
2、拨号连接,执行以下命令:
root@freescale ~$ pppd call wcdma &
若成功连接,则在调试串口输出如下信息(部分调试信息):
测试外网是否连通:
ping测试、TFTP下载、或者wget均可以测试外网是否连通,以wget下载与ping测试为例,在评估板上输入如下命令:
root@freescale ~$ wget -c http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20170806.tar.bz2
ping测试:
root@freescale ~$ ping www.embedall.com
拨号、获取IP地址成功,网络测试若不通。检查DNS服务器是否已经设置,用文本编译工具打开/etc/resolv.conf,如下图所示:
3G模块成功拨号后,在/etc/resolv.conf中自动生成DNS服务器地址(不拨号时不生成name server),把您需求的ISP的域名服务器添到该配置中。
MF210 的射频天线接口有2 个:一个是主天线接口(标识“MAIN”),一个是分集接收天线接口(标
识“AUX”),如图4-11所示。接上主天线即可正常通信,当不接主天线时,拨号失败,错误如图4-12所示。
整个《EVB-P6UL的3G通信定制测试手册》已经分享完成!谢谢各位网友的支持。
页:
[1]