完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
4G网络连接
对于嵌入式Linux而言,4G网络连接是一个比较容易实现的功能,大多数的4G模块接口都是MiniPCIE接口,但是深入了解一下就会发现,4G模块的通信接口都是USB,所以4G模块的驱动就是USB驱动,只要USB驱动正常,4G模块在硬件上就能正常通信。下面看一下4G模块的硬件原理图: 在原理图中,U25是4G模块的MiniPCIE接口,然后通信引脚会接到U15的HUB芯片上,所以4G模块会被识别成USB设备,CON5是SIM卡接口,在使用4G模块时,需要先插入SIM卡。在i.MX6UL终结者开发板上使用的EC20 4G模块,如图 |
|
|
|
EC20 4G模块配置
2.1. 添加USB设备信息 要使用EC20 4G模块首先需要在Linux内核中添加EC20的USB信息,这样内核启动后,才能正确识别EC20 4G模块。打开Linux内核下的drivers/u***/serial/option.c 文件,添加如下信息: 1809 /* add support EC220 4G Module */ 1810 { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */ 1811 { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */ 1812 { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */ 1813 { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */ 1814 { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */ 1815 /* end add */其中第1813行是EC20 4G模块的USB信息。 2.2. Linux内核配置 添加完EC20 4G模块的USB信息后,需要修改Linux 内核配置来支持USBNET功能。具体配置如下: Device Drivers ---》 Network device support ---》 USB Network Adapters ---》 Multi-purpose USB Networking Framework配置如图 接下来我们还需要使能 USB 串口 GSM、CDMA 驱动,配置路径如下: Device Drivers ---》 USB support ---》 USB Serial Converter support ---》 USB driver for GSM and CDMA modems 配置如图 然后配置ppp,配置路径如下: Device Drivers ---》 Network device support ---》 PPP (point-to-point protocol) support PPP BSD-Compress compression PPP Deflate compression PPP filtering PPP MPPE compression (encryption) PPP multilink support PPP over Ethernet PPP support for async serial ports PPP support for sync tty ports tty ports配置如图 配置完成后,重新编译内核,然后使用新的内核启动开发板。如果配置成功开发板启动后会有如图 2.2.4信息打印: 可以看出EC20 4G模块识别成功,并且虚拟出5个USB设备,分别为ttyUSB0~ttyUSB4。 |
|
|
|
EC20 4G模块联网测试
3.1. PPP软件包编译 首先拷贝ppp-2.4.4.tar.gz到Ubuntu下,然后执行下面的命令解压: tar -xvf ppp-2.4.4.tar.gz 解压完成得到ppp-2.4.4目录,进入ppp-2.4.4目录如图 使用configure进行配置,命令如下:。/configure结果如图 配置完成后,使用下面的命令进行编译: make CC=arm-linux-gnueabihf-gcc “CC=arm-linux-gnueabihf-gcc”指定编译器,和开发板Linux内核使用同一个编译器。编译完成如图 编译完成后,分别在chat、pppd、pppdump、pppstats四个目录下生成chat、pppd、pppdump、pppstats可执行文件,用于后面的4G模块联网测试。 3.2. EC20 4G模块联网测试 首先安装好EC20 4G模块、天线和SIM卡,如图 开发板准备好后启动Linux系统,待系统启动后,进入/etc目录,然后创建ppp目录,具体命令如下: cd /etc //进入etc目录 mkdir ppp //创建ppp目录 目录创建完后,使用U盘将上一节编译的chat、pppd、pppdump、pppstats四个可执行文件拷贝到/etc/ppp目录下,如图 : 然后在/etc/ppp目录下创建pap-secrets文件,使用下面命令: touch pap-secrets //创建pap-secrets文件vi pap-secrets //打开pap-secret 输入如下内容: # Secrets for authentication using PAP # client server secret IP addresses card * card * 在4G信号在通信时候有一个密码的比对,密码对了就可以通信了。上面显示用户是card,密码是card。 然后创建新文件夹peers,命令“mkdir peers”。 进入peers文件夹,创建wcdma文件,命令如下: touch wcdma vi wcdma 输入如下内容: # /etc/ppp/peers/wcdma # This is pppd script for China liantong # Usage: root》pppd call wcdma hide-password noauth connect ‘/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect’ disconnect ‘/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect’ debug /dev/ttyUSB2 115200 defaultroute noipdefault novj novjccomp noccp ipcp-accept-local ipcp-accept-remote local lock dump nodetach user “card” password “card” crtscts remotename 3gppp ipparam 3gppp usepeerdns 需要注意的是使用/dev/ttyUSB2设备节点文件。 “user “card””和“password “card””对应了pap-secrets文件中的用户名和密码。 创建wcdma-chat-connect文件: touch wcdma-chat-connect vi wcdma-chat-connect 内容如下: ABORT “BUSY” ABORT “NO CARRIER” ABORT “NO DIALTONE” ABORT “ERROR” ABORT “NO ANSWER” TIMEOUT 120 “” AT OK /rATZ OK /rAT+CGDCONT=1,“IP”,“3gnet”,,0,0 OK-AT-OK ATDT*99# CONNECT /d/c 在这里 OK /rAT+CGDCONT=1,“IP”,“3gnet”,,0,0 OK-AT-OK ATDT*99# 这两句话会根据移动联通或者是电信而变化,这里用的是移动4G。 创建wcdma-chat-disconnect文件: touch wcdma-chat-disconnect vi wcdma-chat-disconnect 内容如下: ABORT “ERROR” ABORT “NO DIALTONE” SAY “INSending break to the modem/n” “”/k“ ”“+++ATH” SAY “/nGood bye/n” 所需文件创建完成后,就可以进行联网测试了。 首先关闭eth0设备,因为和EC20 4G模块有冲突,同时只能使用一个设备。命令如下: ifconfig eth0 down 然后在/etc/ppp目录下输入指令: 。/pppd call wcdma & 结果如图 上图表示联网成功后的IP地址为10.47.135.182,使用ifconfig命令查看结果如图 这时使用ping命令查看能够ping通外网,命令如下:ping 202.108.22.5 -c 4 “-c”选项指定ping网络的次数。“202.108.22.5”是百度的IP地址,结果如图 : 发现不能ping通外网,愿意是因为DNS没有设置对,在etc下有一个文件resolv.conf 。这个文件是用来放DNS的。就是这个里面的域名没有设置对。然而在eth0的运行脚本里强制性的把这个文件复制为了192.168.1.1 。这就造成即便在这里文件里设置上正确的DNS,再开机后也会发现这个文件里已经是192.168.1.1了。这是因为eth0,是开机自启动的。 我们在/etc目录下新建一个文件resolv.conf_back: touch resolv.conf_back vi resolv.conf_back 输入如下内容: nameserver 202.99.160.68 nameserver 221.130.33.52 nameserver 221.130.33.60 nameserver 192.168.1.1 然后在新建一个脚本文件ppp0: touch ppp0 vi ppp0 输入如下内容: #!/bin/sh ifconfig eth0 down cp /etc/resolv.conf_back /etc/resolv.conf/etc/ppp/pppd call wcdma& 修改ppp0文件的执行权限: chmod 777 ppp0 这里第一步是将eth0关掉,第二步将我们的DNS文件覆盖到resolv.conf上,第三步运行。然后重新开机,执行ppp0脚本,命令如下: /etc/ppp0 脚本执行成功后,重新使用ping命令,结果如图: 图片显示可以正常ping通百度的IP地址。至此EC20 4G模块就可以正常使用了。 |
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2456 浏览 5 评论
2784 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2619 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
639浏览 9评论
636浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
766浏览 6评论
610浏览 5评论
651浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 14:14 , Processed in 0.974764 second(s), Total 53, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号