微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > arm 实用 3G/4G 模块 PPP 拨号上网

arm 实用 3G/4G 模块 PPP 拨号上网

时间:10-02 整理:3721RD 点击:

一、开发平台
ARM: NUC972
linux: ubuntu 14.04
内核版本: linux-3.10.x
交叉编译器: arm-linux-4.3.2
3G/4G模块: quectel(移远) EC20
二、操作流程
1、将通讯模块插到 ARM 或者 linux(PC) 上,使用 lsusb 命令查看 设备的 VID 和 PID:


2、进入内核目录下, driver/usb/serial/   编辑 option.c 文件 添加 刚才的设备 VID 和 PID:



在这里,我为了 保持格式,使用了 宏定义
3、回到 内核目录下,/linux-3.10.x/   开始配置内核:

  1. # make menuconfig

复制代码




  1. Device Drivers --->
  2.             USB support --->
  3.                      USB Serial Converter support --->
  4.                                <*> USB driver for GSM and CDMA modems
  5.             Network device support --->
  6.                      <*> PPP (point-to-point protocol) support      ( 将其弹出的选项也都选上)

复制代码


保存设置,然后开始编译:

  1. # make
  2. # make install ./

复制代码

这两步需要的时间稍微长一些,耐心等待每一步的完成, make install ./  表示在当前目录下生成 内核
正常来讲,这两步执行完后,就可以将生成的内核文件下载到开发板执行,但是,我所使用的开发板资料中要求在 内核的开头加入启动信息,不知道为什么,也不愿意去探究,待日后慢慢理解吧,学习过程中留一些疑问是好的现象,如果碰到问题就去深究,很容易跑偏,所以在此不深究,如果你的开发手册没有要求这一步,大可略过:
这一步中需要 用到 mkimage  ,这个工具的安装方式,网友请自行百度 (偷偷告诉你,用:apt-get install ...)
然后,在内核文件目录下,写一个脚本,就是 .sh 文件,内容是 :

  1. arm-linux-objcopy -O binary vmlinux vmlinux.bin
  2. mkimage -A arm -O linux -T kernel -S crc32 -a 0x7fc0 -e 0x8000 -d vmlinux.bin uImage.bin
  3. cp uImage.bin /home/witluo
  4. rm /home/Jackliu/nfsshare/uImage.bin
  5. cp uImage.bin /home/Jackliu/nfsshare

复制代码

其中的目录,网友也可自行更改,
生成内核文件后,就执行这个脚本,然后在 /home/Jackliu/ 目录下,就有一个可用的 uImage.bin 文件下载到开发板即可。
完成,下载步骤,开发板开机后,
插入 3G/4G 模块  会在 /dev 目录下生成 5 个设备节点:


恭喜你,驱动开始工作了,现在已经完成 80%了,加油!
接下来这一步很关键,在 /etc 目录下新建ppp 文件夹,在ppp 目录下 新建 peers 文件夹 ,在 /var 目录下新建 lock run 两个文件夹,当然别忘了,修改文件夹的权限,使用 chmod   ,这里我就不做了,节省地方

  1. # cd /etc/
  2. # mkdir ppp
  3. # cd ppp/
  4. # mkdir peers
  5. # cd /var/
  6. # mkdir lock
  7. # mkdir run

复制代码


然后添加,相关的 网络配置文件,我使用的是,ec20 官方资料提供的 几个文件:


当然,我查到网上也有,使用 wcdma 等文件的,这个大家自行百度,我使用的是 三网通,所以选择官方的操作方式:
接下来就是见证奇迹的时刻:

  1. ~ # quectel-pppd.sh
  2. quectel-pppd options in effect:
  3. devname   /dev/ttyUSB3    # (default)
  4. apn       3gnet    # (default)
  5. user      user   # (default)
  6. password  passwd   # (default)
  7. ~ # pppd options in effect:
  8. debug           # (from command line)
  9. nodetach                # (from command line)
  10. dump            # (from command line)
  11. noauth          # (from command line)
  12. user user               # (from command line)
  13. password ?         # (from command line)
  14. /dev/ttyUSB3            # (from command line)
  15. 115200          # (from command line)
  16. lock            # (from command line)
  17. connect ''chat -s -v ABORT BUSY ABORT \"NO CARRIER\" ABORT \"NO DIALTONE\" ABORT ERROR ABORT \"NO ANSWER\" TIMEOUT 30 \"\" AT OK ATE0 OK ATI\\;+CSUB\\;+CSQ\\;+CPIN?\\;+COPS?\\;+CGREG?\\;\\&D2 OK AT+CGDCONT=1,\\\"IP\\\",\\\"3gnet\\\",,0,0 OK ATD*99# CONNEC
  18.                 # (from command line)
  19. disconnect chat -s -v ABORT ERROR ABORT \"NO DIALTONE\" SAY \"\\nSending break to the modem\\n\" \"\" +++ \"\" +++ \"\" +++ SAY \"\\nGood bay\\n\"              # (from command line)
  20. nocrtscts               # (from command line)
  21. modem           # (from command line)
  22. novj            # (from command line)
  23. novjccomp               # (from command line)
  24. ipcp-accept-local               # (from command line)
  25. ipcp-accept-remote              # (from command line)
  26. noipdefault             # (from command line)
  27. ipcp-max-configure 30           # (from command line)
  28. defaultroute            # (from command line)
  29. usepeerdns              # (from command line)
  30. noccp           # (from command line)
  31. abort on (BUSY)
  32. abort on (NO CARRIER)
  33. abort on (NO DIALTONE)
  34. abort on (ERROR)
  35. abort on (NO ANSWER)
  36. timeout set to 30 seconds
  37. send (AT^M)
  38. expect (OK)
  39. AT^M^M
  40. OK
  41. -- got it

  42. send (ATE0^M)
  43. expect (OK)
  44. ^M
  45. ATE0^M^M
  46. OK
  47. -- got it

  48. send (ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2^M)
  49. expect (OK)
  50. ^M
  51. ^M
  52. Quectel^M
  53. EC20F^M
  54. Revision: EC20CEFDR02A07M4G^M
  55. ^M
  56. SubEdition: V03^M
  57. ^M
  58. +CSQ: 25,99^M
  59. ^M
  60. +CPIN: READY^M
  61. ^M
  62. +COPS: 0,0,"CHN-UNICOM",7^M
  63. ^M
  64. +CGREG: 0,1^M
  65. ^M
  66. OK
  67. -- got it

  68. send (AT+CGDCONT=1,"IP","3gnet",,0,0^M)
  69. expect (OK)
  70. ^M
  71. ^M
  72. OK
  73. -- got it

  74. send (ATD*99#^M)
  75. expect (CONNECT)
  76. ^M
  77. ^M
  78. CONNECT
  79. -- got it

  80. Script ''chat -s -v ABORT BUSY ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT ERROR ABORT "NO ANSWER" TIMEOUT 30 "" AT OK ATE0 OK ATI\;+CSUB\;+CSQ\;+CPIN?\;+COPS?\;+CGREG?\;\&D2 OK AT+CGDCONT=1,\"IP\",\"3gnet\",,0,0 OK ATD*99# CONNECT'' finished (pid 1058), status = 0x0
  81. Serial connection established.
  82. using channel 6
  83. Using interface ppp0
  84. Connect: ppp0 <--> /dev/ttyUSB3
  85. sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xddcb94eb> <pcomp> <accomp>]
  86. rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0xd1e91b1f> <pcomp> <accomp>]
  87. sent [LCP ConfAck id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0xd1e91b1f> <pcomp> <accomp>]
  88. rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xddcb94eb> <pcomp> <accomp>]
  89. rcvd [LCP DiscReq id=0x1 magic=0xd1e91b1f]
  90. rcvd [CHAP Challenge id=0x1 <7ae6e17cc3ca65a0bf9f18bf471bce06>, name = "UMTS_CHAP_SRVR"]
  91. sent [CHAP Response id=0x1 <97e1fb1b7301b472a6cc317ab1eeccb4>, name = "user"]
  92. rcvd [CHAP Success id=0x1 ""]
  93. CHAP authentication succeeded
  94. CHAP authentication succeeded
  95. sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
  96. rcvd [IPCP ConfReq id=0x0]
  97. sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
  98. rcvd [IPCP ConfNak id=0x1 <addr 10.107.55.175> <ms-dns1 113.106.88.4> <ms-dns2 112.95.235.4>]
  99. sent [IPCP ConfReq id=0x2 <addr 10.107.55.175> <ms-dns1 113.106.88.4> <ms-dns2 112.95.235.4>]
  100. rcvd [IPCP ConfReq id=0x1]
  101. sent [IPCP ConfAck id=0x1]
  102. rcvd [IPCP ConfAck id=0x2 <addr 10.107.55.175> <ms-dns1 113.106.88.4> <ms-dns2 112.95.235.4>]
  103. Could not determine remote IP address: defaulting to 10.64.64.64
  104. local  IP address 10.107.55.175
  105. remote IP address 10.64.64.64
  106. primary   DNS address 113.106.88.4
  107. secondary DNS address 112.95.235.4
  108. Script /etc/ppp/ip-up started (pid 1062)
  109. Script /etc/ppp/ip-up finished (pid 1062), status = 0x0

复制代码


出现了好多打印信息,然后ping 一下试试,


使用 ifconfig  可以看到  ppp0  的 ip 地址等信息,
移植到此结束。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top