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 拨号的区别是什么,哪个更好?

7. 4G模块Linux PPP拨号说明

8. AT命令介绍和简单使用

9. AT指令(中文详解版)

10. 正点原子ME3630-W 4G模块资料 http://openedv.com/thread-308394-1-1.html

posted @ 2016-03-09 15:30  yuxi_o  阅读(4560)  评论(0编辑  收藏  举报