GPRS与PPP(GPRS模块虚拟成网口) |
您所在的位置:网站首页 › 拨号入网必要条件 › GPRS与PPP(GPRS模块虚拟成网口) |
一、参考网址
1、linux下GPRS模块ppp拨号上网 2、关于PPP拨号 和 AT指令实现GPRS模块联网的疑问 3、ppp 完全理解(一) 4、GPRS模块在Linux平台上ppp拨号上网总结与心得 5、GPRS模块--PPP手动拨号 6、脚本示例 7、实现4G模块EC20在linux系统下的拨号上网 8. 《EC20 — 利用PPP实现4G模块联网》(推荐) 9. pppd(8) - Linux man page 10. 驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号) 二、技术细节 1、ppp拨号的必要条件 libpcap.so libpcap.so.1 libpcap.so.1.8.1 在buildroot目录下:output/target/usr/lib 三、实现步骤 1、内核编译添加支持ppp网络设备驱动, 截图如下:执行脚本:linux/BSP/A7/kernel/A7-linux-src-4.14/build.sh 生成的内核zImage存放目录:linux/BSP/A7/kernel/A7-linux-src-4.14/kernel-output/zImage 或 linux/BSP/A7/kernel/A7-linux-src-4.14/arch/arm/boot/zImage 用file命令查看zImage文件信息,如下: zImage: Linux kernel ARM boot executable zImage (little-endian) 2、buildroot下编译pppd和chat 应用程序执行脚本:linux/BSP/ROOTFS/buildroot/v2017.08/build.sh, 截图如下: 生成的文件目录: linux/BSP/ROOTFS/buildroot/v2017.08/output/target/usr/sbin, 其有如下可执行程序: chat pppd pppdump pppoe-discovery pppstats 把这些程序拷贝到开发板的相应目录下(/usr/sbin),并添加可执行权限 把生成的动态链接库(output/target/usr/lib)拷贝到相应目录下/usr/lib,因为执行pppd会用到:libpcap.so libpcap.so.1 libpcap.so.1.8.1 3、增加拨号脚本1)在开发板添加新目录:/etc/ppp/peer 2 ) 通过hfs,把移远提供的脚本(linux-ppp-scripts_V1.2文件夹)拷贝到/etc/ppp/peer目录下: quectel-ppp quectel-chat-connect quectel-chat-disconnect quectel-ppp-kill quectel-pppd.sh readme 把ip-up脚本拷贝到/etc/ppp目录下 所有脚本增加可执行权限 4、搭建硬件测试环境1)断开RTU集中器的ARM与GPRS模块的串口连接 2)编写一个小程序拷贝到RTU集中器上,可以控制GPRS模块的电源 3)把gprs模块的串口与A7开发板的TX3、RX3和GND相连 4)控制GPRS模块上电 5、修改脚本的串口名称或者APN1) 修改脚本quectel-ppp中的串口名称为/dev/ttymxc2(实际连接串口名称) 开发板串口测试,在开发板上输入如下命令: stty -F /dev/ttymxc2 115200 echo Test > /dev/ttymxc2 (测试发送,在电脑上用串口调试器监视) cat /dev/ttymxc2 (测试接收) 2) 在 quectel-chat-connect 脚本里可修改APN 6、运行及测试1)运行命令: pppd call quectel-ppp &2)运行结果,如下截图: [root@fonda peers]# pppd call quectel-ppp & [root@fonda peers]# pppd options in effect: debug # (from /etc/ppp/peers/quectel-ppp) nodetach # (from /etc/ppp/peers/quectel-ppp) dump # (from /etc/ppp/peers/quectel-ppp) noauth # (from /etc/ppp/peers/quectel-ppp) user test # (from /etc/ppp/peers/quectel-ppp) password ?????? # (from /etc/ppp/peers/quectel-ppp) remotename 3gppp # (from /etc/ppp/peers/quectel-ppp) /dev/ttymxc2 # (from /etc/ppp/peers/quectel-ppp) 115200 # (from /etc/ppp/peers/quectel-ppp) lock # (from /etc/ppp/peers/quectel-ppp) connect chat -s -v -f /etc/ppp/peers/quectel-chat-connect # (from /etc/ppp/peers/quectel-ppp) disconnect chat -s -v -f /etc/ppp/peers/quectel-chat-disconnect # (from /etc/ppp/peers/quectel-ppp) nocrtscts # (from /etc/ppp/peers/quectel-ppp) modem # (from /etc/ppp/peers/quectel-ppp) hide-password # (from /etc/ppp/peers/quectel-ppp) novj # (from /etc/ppp/peers/quectel-ppp) novjccomp # (from /etc/ppp/peers/quectel-ppp) ipcp-accept-local # (from /etc/ppp/peers/quectel-ppp) ipcp-accept-remote # (from /etc/ppp/peers/quectel-ppp) ipparam 3gppp # (from /etc/ppp/peers/quectel-ppp) noipdefault # (from /etc/ppp/peers/quectel-ppp) ipcp-max-failure 30 # (from /etc/ppp/peers/quectel-ppp) defaultroute # (from /etc/ppp/peers/quectel-ppp) usepeerdns # (from /etc/ppp/peers/quectel-ppp) noccp # (from /etc/ppp/peers/quectel-ppp) abort on (BUSY) abort on (NO CARRIER) abort on (NO DIALTONE) abort on (ERROR) abort on (NO ANSWER) timeout set to 30 seconds send (AT^M) expect (OK) AT^M^M OK -- got it send (ATE0^M) expect (OK) ^M ATE0^M^M OK -- got it send (ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2^M) expect (OK) ^M ^M Quectel^M EC20F^M Revision: EC20CEHCR06A02M1G^M ^M SubEdition: V03^M ^M +CSQ: 24,99^M ^M +CPIN: READY^M ^M +COPS: 0,0,"CHINA MOBILE",7^M ^M +CGREG: 0,1^M ^M OK -- got it send (AT+CGDCONT=1,"IP","3gnet",,0,0^M) expect (OK) ^M ^M OK -- got it send (ATD*99#^M) expect (CONNECT) ^M ^M CONNECT -- got it Script chat -s -v -f /etc/ppp/peers/quectel-chat-connect finished (pid 298), status = 0x0 Serial connection established. using channel 1 Using interface ppp0 Connect: ppp0 /dev/ttymxc2 sent [LCP ConfReq id=0x1 ] rcvd [LCP ConfReq id=0x0 ] sent [LCP ConfAck id=0x0 ] rcvd [LCP ConfAck id=0x1 ] rcvd [LCP DiscReq id=0x1 magic=0x71f3af97] rcvd [CHAP Challenge id=0x1 , name = "UMTS_CHAP_SRVR"] sent [CHAP Response id=0x1 , name = "test"] rcvd [CHAP Success id=0x1 ""] CHAP authentication succeeded CHAP authentication succeeded sent [IPCP ConfReq id=0x1 ] rcvd [IPCP ConfReq id=0x0] sent [IPCP ConfNak id=0x0 ] rcvd [IPCP ConfNak id=0x1 ] sent [IPCP ConfReq id=0x2 ] rcvd [IPCP ConfReq id=0x1] sent [IPCP ConfAck id=0x1] rcvd [IPCP ConfAck id=0x2 ] Could not determine remote IP address: defaulting to 10.64.64.64 local IP address 10.34.181.249 remote IP address 10.64.64.64 primary DNS address 120.196.165.7 secondary DNS address 221.179.38.7 Script /etc/ppp/ip-up started (pid 301) Script /etc/ppp/ip-up finished (pid 301), status = 0x03)ifconfig 查看虚拟网口
4)使用ps查看pppd守护进程
5) ping外网测试 四、多路串口复用 1、必备资料 1)源码:gsm0710muxd_bp.c和Makefile 2)说明文档:《Quectel_Android&Linux_CMUX_Driver_User_Guide_V1.1.pdf》 2、目的用1个物理串口,模拟出多个串口;如1路串口用于ppp拨号,另1路串口用于AT指令测试(检测信号强度、IMEI、ICCID和模块信息) 3、步骤1)修改Makefile, 使用交叉编译器编译,生成可执行程序gsm0710muxd_bp 2)执行程序:/usr/bin/gsm0710muxd_bp -s /dev/ttymxc7 -b 115200 -n 3 3)在/dev/chn目录下会生成1、2、3,如下图:
4)多路串口复用OK
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |