linux下ppp拨号上网
Linux下拨号上网一般通过ppp方式,如下以U6300 3G模块为例说明。
U6300支持linux、Android系列嵌入式系统。作为linux内核系统,系统均会自带驱动usbserial,就没有提供专门的U6300V的USB驱动,都是加载系统的usbserial以实现对U6300V模块USB的加载,关键是找到usbserial.ko这个驱动文件在系统中的目录,将PID和VID加载系统。
U6300V模块默认的VID和PID是:VID_1C9E&PID_9603。
1. Linux系统加载U6300V的USB驱动过程
首先需要确认usbserial.ko这个驱动文件在当前应用端的Linux操作系统中。Linux 2.4.x和linux2.6.x系统均有usbserial.ko,Ubuntu部分版本没有usbserial.ko驱动文件,需要重新编译生成usbserial.ko驱动。
以PC下linux2.6.x加载过程为例,加载驱动步骤:
1) 硬件连接正常,模块可开机;
2) 加载系统的USB文件系统,使用如下指令:
#mount -t usbfs none /proc/bus/usb
3) 查看系统当前USB设备状态,使用如下指令:
#cat /proc/bus/us/devices
如果U6300V已经开机,USB准备好,将会看到Vendor=1c90 ProdID=9603 Rev=0.00这个返回,表明已识别了U6300V的USB端口。
U6300V的3个串口也已经识别,如蓝色字体标识(顺序按端口号升序为Diag,AT,Modem)。
4) 安装U6300V的USB驱动
#modprobe usbserial vendor=0x1c93 product=0x9603
5) 再查看系统当前USB设备状态
#cat /proc/bus/usb/devices
返回如下结果:
表明U6300V的USB驱动已经安装成功,请留意每个串口usbserial_generic状态,不同于未加载(none)。
6) 查看USB的端口,使用的指令是:
#cd /dev
#ls ttyUSB*
如果端口已经识别,将会返回显示ttyUSB0~ttyUSB2三个设备。
注:U6300V三个串口中AT(ttyUSB1),Modem(ttyUSB2)可以发AT命令,Diag(ttyUSB0)不能发AT指令。
Diag:Diagnostic interface诊断、诊断程序。
AT:Application interface
2. Linux系统下AT交互
Minicom配置端口/dev/ttyUSB1。
注:如下AT指令只需插入SIM卡,无需拨号即可回复。
输入AT指令(打开回显):
ATE
系统正常,返回结果:
OK
输入如下指令(查询信号):
AT+CSQ
将会得到如下信号强度和误码率信息:
+CSQ:20,74
OK
输入如下指令(注册状态):
AT+CREG?
将会得到如下注册信息:
+CREG:0,1
OK
输入如下指令(网络运营商信息):
AT+COPS?
将会得到如下运营商信息(不同运营商返回字段不同。以中国联通USIM卡为例):
+COPS:0,0”CHN-CUGSM”,2
OK
注:现在拨号号码一般不太重要,一般都是*99#--------ATD*99#
APN不同:
移动、联通的APN:CMNET
电信:CTNET
-------------------------AT+CGDCONT=1,"IP","CMNET"
3. Linux系统U6300V拨号上网过程
拨号过程中涉及两个重要文件:chat脚本和pppd options文件。
chat脚本:用于主机(TE)和modem(ME)通信(exchange),主要目的是在PPP Daemon和远端pppd进程间建立连接通道。 man chat
The chat program defines a conversational exchange between the computer and the modem. Its
primary purpose is to establish the connection between the Point-to-Point Protocol Daemon
(pppd) and the remote's pppd process.
pppd options文件:提供pppd运行的参数选项,pppd [ options ],man pppd。包括ttyname、speed、crtscts等等。
1) 重复USB加载过程和AT交互流程。确保U6300V正确注册到网络,信号强度CSQ返回的第一个参数在13以上;
2) 确保linux系统带有pppd应用程序,如果系统没有pppd,请安装kppp,里面带有pppd应用程序;
3) 建立拨号配置文件/etc/ppp/chat/gprs-connect-chat----脚本内容可不同
chat脚本是真正AT指令的发送和接收脚本,chat脚本主要有TIMEOUT,ABORT和AT指令交互等构成。TIMEOUT超时,ABORT指定AT指令交互时,出现什么样的错误chat将退出。
AT指令交互是“接收”“发送”的形式。
‘’ AT
意思是不接收任何信息,直接发送AT。
OK AT+CGDCONT=1,”IP”,”3GNET”
思是等待接收OK。如果OK,发送AT+CGDCONT=1这个命令。
在其中加入如下配置:
TIMEOUT 15
ABORT “DELAYED”
ABORT “BUSY”
ABORT “ERROR”
ABORT “NO DIALTONE”
TIMEOUT 40
“ \rAT
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,”IP”,”3GNET”
OK ATDT*99***1#
CONNECT “
注:插入不同运营商的卡,AT+CGDCONT=1,”IP”,”3GNET”最后一个参数不同,请咨询当地的运营商获取APN。
4) 修改pppd的配置文件/etc/ppp/options (可省略)
找到auth字样的行然后将其改成#auth,这样在拨号过程中就不会提示需要身份验证;
5) 建立拨号配置文件/etc/ppp/peer/gprs-----脚本内容可不同
在其中加入配置如下(必须指定Modem口是ttyUSB2):
#Usage:root>pppd call gprs
/dev/ttyUSB2
9600
crtscts
modem
#noauth
debug
nodetach
#hide-password
usepeerdns
noipdefault
defaultroute
user “3gnet”
0.0.0.0:0.0.0.0
ipcp-accept-local
ipcp-accept-remote
#lcp-echo-failure 12
#lcp-echo-interval 3
#noccp
#novj
#novjccomp
#persist
connect ‘/usr/sbin/chat –s –v –f /etc/ppp/chat/gprs-connect-chat’
6) 拨号上网,使用如下指令:
#pppd call gprs
#ifconfig
如果出现如下回显,多出一个ppp0网口,说明拨号已经成功:
7) 测试连接Internet
#ping 119.75.217.56
测试是否ping通baidu的IP地址。如果ping不通,需要给本机加条路由,使用如下指令:
#route add default gw 10.64.64.64
注:10.64.64.64:运营商的ip地址,即上述红色字体部分。
或如下命令,从而不用知道IP地址:
#route del default
#route add -net 0.0.0.0 ppp0
如果IP地址能ping通,而ping域名不通,需要添加DNS到/etc/resolv.conf。
8) linux断开网路(必须kill当前的pppd,才能进行下一次pppd),需要kill pppd进程(这个过程需要一段时间,中间可能无响应),使用如下指令:
#killall pppd
注:切换波特率的指令是:
AT+IPR=<value>
<value>:
300,600,1200,2400,4800,9600,19200,38400,57600,115200,230400
注意:默认的波特率是115200,且Data Bits=8,Parity=None,Stop Bits=1,Flow Control=None.
参考:
1. 《3g移植》 http://blog.csdn.net/duloveding/article/details/8287758
2. 《Linux下ppp拨号+3G模块(evdo 中兴MC8630模块)》 http://blog.csdn.net/memoryjs/article/details/7946878
3. 《Linux下ppp拨号》 http://wenku.baidu.com/view/74c5aed476a20029bd642d4f.html
4. chap和pap认证,http://docs.oracle.com/cd/E19253-01/819-7059/pppsvrconfig.reference-fig-23/index.html
5. ppp完全理解,http://blog.csdn.net/tianruxishui/article/details/44057607
6. ecm、ppp、ndis 拨号的区别是什么,哪个更好?
8. AT命令介绍和简单使用
9. AT指令(中文详解版)
10. 正点原子ME3630-W 4G模块资料 http://openedv.com/thread-308394-1-1.html