中兴通讯MC8630模块linux环境使用手册
(电信数据卡终端版本)
版 本:V1.0
中兴通讯股份有限公司
版权声明
Copyright© 2008 by ZTE Corporation
本用户手册之版权属于中兴通讯股份有限公司所有,并依法受《中华人民共和国著作权法》及有关法律的保护。
未经中兴通讯股份有限公司许可,任何人不得摘录、复制、发行、汇编或者以各种方式(电子版、印刷品等)向公众传播本手册的任何内容。对于有损版权人利益的行为,公司将依法追究侵权人的责任。
本公司保留在不预先通知的情况下,对此手册中描述的产品进行修改和改进的权利;同时保留随时修订或收回本手册的权利。
本用户手册中如有文字不明之处,请您及时向本公司或者代理商、销售商咨询。
2008年2月第4.9-TY版
中兴通讯拥有雄厚的技术实力,可为1x/evdo,gsm/gprs/wcdma等通讯模块客户提供全方位的技术支持,支持内容包括:
1、提供完善的技术资料;
2、提供可用于研发、测试、生产、售后等环节的开发板;
3、提供原理图、PCB、测试方案等评审和技术会诊;
4、提供测试环境。
中兴通讯为客户提供现场、电话、网站、即时通讯、E-MAIL等多种支持方式。
中兴通讯模块网站module.ztemt.com.cn,提供相关的行业信息和模块相关技术资料。授权的模块客户可以在网站下载模块最新的相关技术资料。如果您有更多的需求,可发送邮件至[email protected]。您还可以拨打技术支持热线:0755-86379174。
前言
概述
本文档适用的产品是MC8630模块。本文档通过对MC8630模块的linux使用环境所遇到的问题进行了说明,用以指导用户对该模块进行在linux下的使用,包括驱动设计,拨号上网,以及其他一些问题,
阅读对象
本文档主要适用于以下工程师:
系统设计工程师
软件工程师
测试工程师
内容简介
本文档包含5个部分,内容如下:
章节 |
内容 |
1.MC8630概述 |
MC8630Evdo模块简单介绍,MC8630支持的linux类型和版本 |
2.MC8630Linux驱动 |
主要介绍MC8630linux驱动编译,配置方面问题 |
3.MC8630Linux下使用AT指令 |
MC8630Linux下如何使用AT指令 |
4.MC8630Linux下拨号问题 |
介绍linux下拨号常见问题 |
5.MC8630常见问题说明 |
主要介绍MC8630使用中常见问题 |
文档版本 V1.0(2009-02-26)
第一次正式发布。
目录
MC8630概述 6
MC8630linxu驱动 6
MC8630Linux下使用AT指令 7
MC8630Linux下的拨号问题 9
1.1Wvdial拨号 9
1.2Chat拨号 10
1.2.1peers-evdo 10
1.2.2chat-evdo 11
1.2.3Pap-secrets 11
1.2.4chap-secrets 11
1.3拨号常见问题 11
MC8630常见使用问题说明 13
MC8630Linux环境使用问题说明 15
1xEV-DO是一种针对分组数据业务进行优化的、高频谱利用率的CDMA无线通信技术,可在1.25MHz带宽内提供峰值速率达3.1Mbps的高速数据传输服务,随着中国3G网络的发展,越来越多的高速数据应用需求由此而产生,MC8630就是一款支持1x/EVDORev-A的模块终端,可支持话音,短信,高速数据,支持的速率,下载3.1Mbps,上传1.8Mbps,模块应用领域很广泛,可用在电信运营商,交通领域,金融领域,电力领域,科教文卫领域,公用领域等,主要的应用包括数据卡,无线路由器,视频监控,无线POS机,手机,车载终端定位,无线数传终端等
模块是一种半成品的产品,一般都要基于模块进行二次开发,二次开发的平台,主要应用领域是在嵌入式领域,包括linux,wince,以及其他手机操作系统,而linux是应用最为广泛的操作系统,MC8630完全支持多种类型的linux系统
目前MC8630支持的linux内核包括2.6.18,2.6.21,2.6.27,2.6.29等,2.4内核的linux不支持,支持的linux系统类型包括fedora,ubuntu,redhat等,我们会提供以上内核的linux参考驱动
编译驱动需要注意的问题
首先在编译驱动前,确认编译驱动和编译内核的编译环境相同,也就是需要相同版本号的交叉编译工具,比如arm-linux-gcc,arm-linux-ld,这样编译出来的驱动才能跟内核配合起来,一起工作,有些客户内核是别人开发的,如果要用我们提供的驱动,就需要建立跟内核一样的环境,然后编译驱动,驱动才可以正常使用;
编译驱动时的准备工作,Makefile文件配置,包括,内核源码目录,驱动源码,使用的编译工具,都需要配置,如下
下载内核源码,置于一编译目录,目录可自己选择,一般可放置/usr/src/linux
makemenuconfig//配置内核选项
makemodules_prepare//为编译驱动模块做准备
修改makefile文件
KERNELDIR= usr/src/linux-2.6.18/ //内核源码目录
makeCC=arm-linux-gcc LD=arm-linux-ld //使用编译工具
make
编译之后,生成ztemt.ko
Insmodztemt.ko之后,会生成设备节点在/dev/ttyUSB0-ttyUSB3,如下图
常见驱动问题及解决办法
如果在linux下执行AT指令,需要串口工具支持,一般的linux系统中会有串口工具minicom,但在嵌入式系统中有可能被裁减掉,需要移植,或者自己编写的处理AT指令的程序,也就是读写AT指令的程序,以下为minicom使用
Minicom配置,ctrl-A,按键Z
按键‘O’serial port setup
配置完成,执行AT指令
在PClinux下面,一般都有默认配置好的拨号界面或者系统自带的拨号工具,而一般的模块用于嵌入式linux的开发,在内核支持PPP情况下,需要移植拨号工具,目前能够支持的拨号工具有两种,一种是wvdial,一种是chat,都需要先移植这两个软件,在嵌入式下,wvdial的移植难度较大,需要的库文件较多,而chat相对简单,但是配置正好相反,wvdial配置只需要一个文件,而chat则需要四个
使用起来较为方便,只需要配置一个文件wvdial.conf,具体配置如下
[DialerEVDO]
Modem= /dev/ttyUSB0 //设置modem口设备节点
Init2= ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 //modem初始化指令
ModemType = Analog Modem
Phone=#777//拨号号码
#ISDN= 0
Username=card//帐号
Init1=ATZ
Password=card //密码
Baud=460800
PPPPPath= /usr/sbin/pppd
NewPPPD= 1
StupidMode = 1 //掉线之后,自动重拨
Tonline= 0
wvdial拨号格式:wvdialEVDO
拨号之后,如下图所示,获取到IP地址,以及DNS地址,可直接使用网络
移植较为简单,一般默认的系统会带chat工具,需要四个配置文件,包括
pap_secrets,chap_secrets(帐号密码配置)peers-evdo(拨号脚本),chat-evdo(chat配置)
拨号modem配置文件
#/etc/ppp/peers/evdo //文件存放路径
#this is ppp script for use china telcom's CDMA data service
ttyUSB0
115200
nocrtscts
connect'/usr/sbin/chat -v -f /etc/ppp/chat/evdo'
auth-chap//noauth 根据选择的鉴权方式,到chap-secrets或者pap-secrets中提取密码
debug
nodetach
ipcp-accept-local
ipcp-accept-remote
defaultroute
usercard
chat拨号脚本设置,以及错误处理脚本
#chat-evdo
#/etc/ppp/chat/evdo //文件存放路径
#this is the chat script for china telcom
ABORT"NO CARRIER"
ABORT"NO DIALTONE"
ABORT"ERROR"
ABORT"NO ANSWER"
ABORT"BUSY"
TIMEOUT120 //一般注意超时时间不要设置太短
""at
OKatdt#777 //拨号号码
CONNECT
文件中设置PAP鉴权需要的用户名和密码,认证服务器,可以设置多个帐号及认证的服务器
#/etc/ppp/pap-secrets
#Secrets for authentication using PAP
#client server secret IP addresses
card * card
[email protected] * vnet.mobi
文件中设置chap鉴权中使用的用户名密码,认证服务器,DNS地址
#/etc/ppp/chap-secrets
#Secrets for authentication using CHAP
#client server secret IP addresses
card * card
chat拨号格式:pppdcall evdo
问:模块在Linux下的拨号问题
答:Linux拨号需要Linux内核支持PPP(尤其在编译内核的时候,注意PPP的选项,比如PPP头压缩等),
另外,拨号需要Linux的拨号工具支持,比如wvdial,KPPP,等,我们提供wvdial的拨号配置文件,文件中包含拨号的端口(modem),modem的初始化选项,拨号的帐号,密码,以及其他一些选项,以root身份执行wvdial即可,比如在unbuntu下,执行 sudowvdial即可拨号
KPPP是一种界面拨号工具,用起来更加方便,用户可以自行配置,跟windows类似
问:模块在拨号之后,一直出现乱码,而不拨正常拨上网络的问题
答:dm8c710m(M)版本存在此问题,其他版本没有,由于模块没有上报CONNECT导致,模块升级即可解决
问:模块确认在windows下可以正常拨号,在Linux拨号出现问题
答:首先确认模块在Linux下的驱动正常,可以执行AT指令,并且有信号,其次确认拨号脚本配置正确,特别是拨号端口,帐号,密码等,再次确认内核是否支持PPP等,一般问题都是由驱动问题,就是脚本配置问题,内核配置问题导致,如果遇到问题,也可以在Linux.org,其他的Linux论坛中都可以找到答案或者百度中找提示信息
问:在linux下拨号的时候,一拨就会断掉
-->Starting pppd at Fri Feb 21 07:01:32 2003
--> pid of pppd:5565
--> Disconnecting at Fri Feb 21 07:01:36 2003
-->The PPP daemon has died: Authentication error.
--> We failed toauthenticate ourselves to the peer.
--> Maybe bad account orpassword? (exit code = 19)
--> man pppd explains pppd errorcodes in more detail.
--> I guess that's it for now,exiting
--> The PPP daemon has died. (exit code = 19)
答:原因可能是编译内核时,没有选择PPP头压缩
问:发送 lcp超时
答:在pppd+chat模式下,需要四个文件,每个文件的作用不同,文件配置有问题
/etc/ppp/pap_secrets, pap 拨号帐号密码所在文件
/etc/ppp/chap-secrets, chap拨号帐号密码所在文件
/etc/ppp/chat/evdo, chat的脚本,错误处理脚本
/etc/ppp/peers/evdo 拨号的配置选项,包括拨号端口,波特率,使用何种鉴权
在pppd+wvdial模式,需要wvdial.conf配置文件,里面包括端口,波特率,账号密码,modem的初始化指令
问:以下现象什么原因?
[root@localhost/]# pppd call evdo
pppd:The remote system is required to authenticate itself
pppd:but I couldn't find any suitable secret (password) for it to use todo so.
pppd:(None of the available passwords would let it use an IP address.)
答:拨号的帐号密码不对,或者鉴权方式选择不对,鉴权方式选择为noauth
问:以下现象什么原因?
Aug 7 14:35:06 davinci local2.info chat[800]: alarm
Aug 7 14:35:06 davinci local2.info chat[800]: Failed
Aug 7 14:35:06 davinci daemon.err pppd[794]: Connect script failed
Aug 7 14:35:07 davinci daemon.info pppd[794]: Exit.
答:脚本设置有问题,请按照提供的参考方式设置
问:为什么模块不能正确识别
答:请正确安装windows的驱动和linux的驱动,并且插入驱动,模块才能正常使用,正确识别之后,会出现一个modem口和三个其他端口,如下图所示
Windows
Linux
问:模块在windows下的驱动安装问题
答:请按照驱动安装的提示,插入设备,建议不要提前插入设备,装完驱动,重起一下模块就可以正常使用了
问:为什么模块AT不通
答:MC8630提供两个端口,可以使用AT指令,分别为modem口和SERVICE口,请正确选择端口,使用AT指令,AT指令请参考提供的指令集
问:为什么模块不能拨打电话
答:请检查UIM卡是否正常插入,UIM卡是否有钱?拨打普通的电话需要UIM卡支持,紧急电话比如120,119,110等,不需要UIM卡,就可以拨打
问:为什么电话接通后,听不到对方的声音
答:模块分为两种模式,PC语音模式,耳机模式,通过at^cvoice可切换,请查看AT指令集
PC语音模式,需要从PC输出输入声音,需要通过PC的UI来配合
耳机模式,需要从用户的设备上,有MIC/耳机接口
在通话过程中,用户觉得音量不合适,可以通过at+clvl进行调节
问:为什么模块不能收发短信
答:请检查UIM卡是否正常,没有UIM卡的情况下,不能收发短信,收发短信的过程中,请按照电信发布的数据卡AT指令集来操作
问:为什么我连接不上EVDO或1X网络?
答:可能有以下原因:
请检查UIM卡是否欠费:请拨打电信10000查询
请检查是否正确插入UIM卡:(可通过at^sysinfo指令查看UIM卡的状态2,3,0,8,1(255),如果最后一位为1的话,说明UIM卡识别正常,如果是255,则说明没有正确识别到卡)
是否正常插入模块,模块是否可以正常运行:通过运行AT指令来查询模块是否工作正常,如果有正常的回应,则说明模块工作正常
环境中是否有3G或1X网络信号:可通过at+csq显示1x信号;at^hdrcsq显示EVDO信号,如果没有信号,请检查天线是否接好,(由于模块写了默认频点,所以在不插入UIM卡的情况下,也会有EVDO信号)
CDMA接入号与密码设置是否正确
中国电信的EVDO网络,接入号为#777,用户名为[email protected],密码为vnet.mobi
中国电信的1X网络,接入号为#777,用户名为:card,密码为:card
目前card,card也可以上EVDO网络,但在电信内部有区分这两种帐户
EVDOuim卡的鉴权:首先确认UIM卡支持EVDO,如果是老卡,需要升级,请按照各地电信的规范操作,如果是新的EVDO卡,直接就可以使用,新EVDO卡使用MD5鉴权算法或是CAVE,老卡使用CAVE算法
问:为什么模块没有EVDO信号,只有1x信号?
答:首先确认所处环境是否覆盖了EVDO网络,其次确认UIM卡是否支持UIM,然后确认模块的模式是否为1xonly?(通过AT指令at^prefmode来查看,
如果为2,表示为1xonly
如果为4,表示为EVDO模式
如果为8,表示为混合模式,在混合模式下,支持EVDO和1x两种模式,自适应于两种模式,进行数据业务时,优先选择EVDO模式)
默认选择为混合模式,建议用户不要修改
问:为什么在没有UIM卡的情况下,有信号,在插入UIM卡之后,反而没信号了呢?
答:UIM卡没有被正确识别或者UIM卡的初始化有问题,可通过指令at^sysinfo来查看,如果最后一位为255,则表示UIM卡没有正确识别,如果为1,则表示识别正常,
如果出现不能识别的情况,请检查UIM卡插座,或者用另一设备来进行对比UIM卡是否正常,在没插卡的情况下,由于设置了默认频点,所以会有信号
问:关于模块升级的问题
答:请参照模块的升级文档操作,升级之后,导入模块部分工作参数,确保部分参数的准确,具体请参照升级文档
问:Linux环境主要注意那些问题
答:Linux的内核版本,模块的Linux驱动,Linux环境下串口操作,Linux环境下的拨号上网
问:模块适用于那些Linux环境
答:目前在Fedora,Ubuntu,Redhat等不同的Linux下下都可以使用,不同的平台下,操作可能稍微不同
问:insmod驱动后没有设备名出现
答:insmodztemt.ko,
用lsmod|grep ztemt 查看驱动的加载情况
问:编译驱动时的问题,编译之后无法使用
答:在驱动的makefile文件中选择KERNELDIR为内核源码所在目录,编译驱动时的源码内核要与目标环境内核相同,编译内核的编译器要与编译驱动模块的编译器相同
问:模块现在支持那些版本内核
答:基本上所有版本的linux内核都支持,2.6.18,2.6.21,2.6.27,2.6.29等,除了2.4内核
问:模块驱动问题
答:目前提供2.6.18及以上内核的驱动,Linux系统默认的USB驱动也可以用,低内核版本的驱动,需要用户按照参考驱动或默认的USB驱动,自行修改
问:模块在Linux的识别问题
答:模块在Linux下,正常识别后会出现四个端口,分别为ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,其中ttyUSB0为模块的modem口,ttyUSB1为模块的service口,这两个端口,可以使用AT指令
问:模块在Linux环境下使用AT指令的问题
答:可以使用Linux下面的串口工具,比如Minicom,如果要使用Minicom,则需要安装此工具
问题:插入设备后,可以识别出来是串口设备,但是没有找到对应的驱动来驱动设备,也就是表现为没有设备节点,
答案:解决办法:在启动时候加入menu.lst中加入usbserialvendor=0x19d2, product=0xfffe,或者modeprobeusbserial vendor=0x19d2 product=0xfffe
问题:在linux下使用MC8630的时候,发现速率受限
答案:如果采用linux默认的usbserial驱动,MC8630也可以正常使用,只是usbserial针对低速设备,使用的缓冲区很小,速率可能会受限,速率不能超过62KB,需要修改缓冲区大小,使用本司提供驱动不存在此问题,客户出现过此问题,下载速率只能达到480kbps