全部博文(105)
分类: LINUX
2015-09-01 14:40:12
Linux pppd gprs 3g 拨号上网
这几年用过很多linux 下的GPRS,3G,4G上网模块,但也没有什么总结,其中还是有一些小细节,值得我去
写成一个小的记录片段。更多的是为了回忆一下原来的过程。
我所使用的pppd版本是2.4.5,当时是最新的吧。源码网址: style="font-family:宋体;font-size:18px;">。看了看,
最新的都到2.4.7了。移植这里就不说了,网上大把资料,相对来说,问题也不大。
关于硬件连接。
GPRS模块需要两个串口,流控一般模块是可以主动选择开或者不开。3G模块则只需要一个usb接口。另外
这里也不得不提一下,模块上关于reset的PIN脚,这个管脚需要与GPIO口相连。其目的有两个,一个是为了
随时能控制其复位,另一个是为了在系统重启时能同时重启此模块。看起来这两点是一样的,其实不是一样
的,分别应对我在使用这些模块时,遇到的两种问题。当然不同的模块,reset脚的时序还是有差别的。如果
另辟蹊径,采用控制模块的电源,也是可以的。不要觉得这个方法奇葩,我所遇到的硬件工程师,很多喜欢
这样去设计。
关于内核配置。
GPRS相对来说简单,只需要配置串口就好了。3G模块则需要配置如下选项:
DEVICE DRIVERS 下(USB转串口)
同时还要配置ppp协议
Device drivers / Network device support 下(ppp 协议)
另外在内核driver/usb/serial/option.c 添加对应3G模块的VID,PID。打开这个文件就知道怎么添加了。有些模块
资料上,还找不到 VID,PID。可能还需要联系供应商的FAE。最终会在终端设备的/dev/目录下面产生几个ttyUSB*
的设备节点。不同的厂家不一样,可能是三个,也可能是五个。这些不同的节点代表着不同的意义,正如GPRS 模
块的两个串口一样。AT调试口,MODEM口等等。
关于拨号脚本。
GPRS,3G脚本区别不大,可以统一。主要是针对运营商区。拨号脚本目录树如下:
pppd拨号脚本放在etc 目录下面。
peers , gprs-connect-chat , gprs-disconnect-chat 为脚本文件,以GPRS为例如下:
peers 文件
点击(此处)折叠或打开
gprs-connect-chat 文件
点击(此处)折叠或打开
上面针对运营商的部分,参考下表
来自于http://blog.csdn.net/duloveding/article/details/8287758
gprs-disconnect-chat文件
点击(此处)折叠或打开
电信3G拨号脚本:ppp_cdma2000_evdo.rar
联通3G拨号脚本:ppp_wcdma.rar
移动2G拨号肢本:ppp_gprs_EGDE.rar
调用则是 pppd call gprs(peers下面的脚本名)
关于一些琐碎的事。
1, 拨号脚本中,有些模块是需要加user ,password才可以拨得上网。
2, 不同厂家的模块会有区别,复位时序,AT指令。
3, 重启系统时,需要给模块一个复位信号,以便模块也重启。
4, 断线后重连。在拨号的正常状态中,有可能断线,这时候需要一个很好的机制保证其断线重连。
persist 这个选项很重要。但往往配置了这个选项,还是会出现意外情况。所以程序中需要去检测
模块在线情况。
参考脚本:http://blog.chinaunix.net/uid-23381466-id-58634.html
点击(此处)折叠或打开
5, AT 指令参考
at+cdv
atd 打电话
at+chv
at+chup 挂断电话
ate1 打开回显
at+creg? 查看注册信号
at+cpos? 查看是否识别到卡
at+cpin? 查询命令
at+cfun=1 开启全功能
at+csq? 查看信号
at+sysinfo 查看所有状态
at+ccid 获得SIM卡标识
at+cfun 设置模块运行状态
at+cgmr 返回软件版本