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系統下的撥號上網

二、技術細節

  1、ppp撥號的必要條件

    

   2、pppd執行需要用到動態鏈接庫

    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、修改腳本的串口名稱或者APN

    1) 修改腳本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 <asyncmap 0x0> <magic 0x4827b4fe> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0x71f3af97> <pcomp> <accomp>]
sent [LCP ConfAck id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0x71f3af97> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x4827b4fe> <pcomp> <accomp>]
rcvd [LCP DiscReq id=0x1 magic=0x71f3af97]
rcvd [CHAP Challenge id=0x1 <4003ccc71a6535e1f787fb38456a6f5e>, name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 <2ebf1a489416e080a2dc61cc525fae82>, name = "test"]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.34.181.249> <ms-dns1 120.196.165.7> <ms-dns2 221.179.38.7>]
sent [IPCP ConfReq id=0x2 <addr 10.34.181.249> <ms-dns1 120.196.165.7> <ms-dns2 221.179.38.7>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x2 <addr 10.34.181.249> <ms-dns1 120.196.165.7> <ms-dns2 221.179.38.7>]
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 = 0x0

  3)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

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM