Linux 4G 通信实验

一、 4G 网络连接简介

4G 模块原理图
在这里插入图片描述
实物图
在这里插入图片描述

二、ME3630 4G 模块驱动修改

1、添加 USB 设备信息
打开 Linux 源码的 drivers/usb/serial/option.c 文件,找到 option_ids 数组,然后在里面添加 ME3630 的 PID 和 VID, 要添加的内容如下:
在这里插入图片描述

2、添加 ECM 支持程序
ME3630 支持 ECM 接口,可以通过 ECM 接口轻松联网,修改 drivers/usb/serial/option.c 文件里面的 option_probe 函数。找到此函数,然后在里面输入如下内容:
在这里插入图片描述
3、配置 Linux 内核

我们需要配置 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

在这里插入图片描述
继续配置 Linux 内核,使能 USB 的 CDC ACM 模式,配置路径如下:

-> Device Drivers 
	-> [*] USB support 
		-> <*> Support for Host-side USB
			-> <*> USB Modem (CDC ACM) support

在这里插入图片描述
关于 Linux 内核的配置就到此为止,编译一下 Linux 内核,然后使用新的 zImage 启动开发板。如果 ME3630 已经插上的话,系统启动以后就会输出如图 所示的信息:
在这里插入图片描述

三、 ME3630 4G 模块 ppp 联网测试

1、使能 Linux 内核 ppp 功能

ME3630 支持通过 ppp 拨号上网,也是支持使用 ECM 接口上网,我们先来学习一下如何通过 ppp 拨号上网。首先我们需要配置 Linux 内核,打开 Linux 内核的 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

在这里插入图片描述

2、移植 pppd 软件

在移植之前先删除掉/usr/sbin/chat 这个软件!
我们使用Busybox制作根文件系统的时候会生成/usr/sbin/chat这个软件,我们一会移植pppd的时候也会编译出 chat 软件。因此需要将根文件系统中原来的/usr/sbin/chat 软件删除掉,否则的话我们移植的 chat 软件工作将会出问题!

进入到 ppp-2.4.7 目录中,然后编译 pppd 源码,命令如下:

cd ppp-2.4.7/
./configure //配置
make CC=arm-linux-gnueabihf-gcc //编译

如果编译失败,提示 bison 和 flex 这两个“not found”的话就安装这两个库,命令如下:

sudo apt-get install bison
sudo apt-get install flex

编译完成以后就会在当前目录下生成 chat/chat、pppd/pppd、pppdump/pppdump 和pppstats/pppstats 这四个文件,将这个四个文件拷贝到开发板根文件系统中的/usr/bin 目录下,命令如下:

sudo cp chat/chat /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f
sudo cp pppd/pppd /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f
sudo cp pppdump/pppdump /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f
sudo cp pppstats/pppstats /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f

完成以后输入“pppd -v”查看一下 pppd 的版本号,如果 pppd 版本号显示正常的话就说明pppd 移植成功
在这里插入图片描述
3、ppp 上网测试

在使用 pppd 进行拨号上网之前需要先创建 4 个文件,这个 4 个文件必须放到同一个目录下。在开发板根文件系统下创建/etc/gosuncn 目录,进入到刚刚创建的/etc/gosuncn 目录下,然后新建一个名为“ppp-on”的 shell 脚本文件,在 ppp-on 文件里面输入如下所示内容:

#!/bin/sh
clear
OPTION_FILE="gosuncn_options"
DIALER_SCRIPT=$(pwd)/gosuncn_ppp_dialer
exec pppd file $OPTION_FILE connect "chat -v -f ${DIALER_SCRIPT}"

再新建一个名为“gosuncn_options”的文件,在文件里面输入如下所示内容:

/dev/ttyUSB2    //是联通或移动的卡就是用 ttyUSB2,如果是电信的卡就是用 ttyUSB0
115200	
crtscts
modem
persist
lock
noauth
noipdefault
debug
nodetach
user Anyname
password Anypassword
ipcp-accept-local
ipcp-accept-remote
defaultroute
usepeerdns
noccp
nobsdcomp
novj
dump

第 11~12 行,这两行内容和所使用的卡有关,如果是联通或者移动的卡就按照上面的写,如果是电信的卡,要改为如下所示内容:

user card
password card

再新建一个名为“gosuncn_ppp_dialer”的文件,输入如下所示内容:

ABORT 		"NO CARRIER"
ABORT 		"ERROR"
TIMEOUT 	120
"" 			ATE
SAY 		"ATE"
ECHO 		ON
OK 			ATH
OK 			ATP
OK 			AT+CGDCONT=1,\"IP\",\"3GNET\"
OK 			ATD*99#
CONNECT

第 9 行,后面的 3GNET 是网络的 APN 码,这个要根据自己所使用的手机卡来确定,联通卡的 APN 为 3GNET,移动卡的 APN 为 CMNET。因为我使用的是联通卡进行测试的,所有这里设置 APN 为 3GNET,如果使用的移动卡,那么要将 APN 设置为 CMNET。如果是电信的卡,那么第 9 行要改为:

 OK "AT+ZCAPN=card,card"

第 10 行,如果是联通或移动的卡,那么第 10 行就不变。如果是电信的卡,那么第 10 行要改为:

OK ATD#777

最后新建一个名为“disconnect”的 shell 脚本,输入如下所示内容:

#!/bin/sh
killall pppd

这四个文件编写完成以后要给予 ppp-on 和 disconnect 这两个文件可执行权限,命令如下:

chmod 777 ppp-on disconnect

完成以后输入如下命令连接 4G 网络:

./ppp-on &

在 ME3630 连接 4G 网络的过程中,可能会出现如图所示的错误提示:
在这里插入图片描述
如果没有的话就手动创建这两个文件夹,命令如下:

mkdir /var/run //创建/var/run 文件夹
mkdir /var/lock //创建/var/lock 文件夹

完成以后重新输入“./pppd-on &”命令连接 4G 网络

4G 网络测试需要关闭其他网卡,否则的话网络测试可能有问题,但是我们现在是通过网络启动的系统,并且通过 NFS 挂载的根文件系统,因此我们没法关闭其他的网卡,比如 eth0。为了解决这个问题,我们只能将 uboot、Linux kernel、.dtb 设备树和根文件系统都烧写到板子的
EMMC 或 NAND 上,然后直接启动 EMMC 或 NAND 上的系统即可,这样就不需要其他网卡工作了。

4、ME3630 4G 模块 ECM 联网测试

对于支持 ECM 接口的模块可以直接通过 ECM 上网,ME3630 模块支持 ECM 接口,重启开发板,输入“ifconfig -a”命令可以看到有一个名为“usb0”的网卡。
在这里插入图片描述
我们需要使用 minicom 输入一些 AT 指令,所以要先用 minicom 打开 ttyUSB1,ttyUSB1 就是 ME3630 的 AT 指令串口,波特率设置为
115200。打开以后依次输入如下指令:

①、输入 AT 指令:

AT+ZSWITCH=L

然后重启开发板。如果模块已经设置为 ECM 模式的话此步骤就不需要了。

②、使用 AT 指令+CGDCONT 来设置数据参数。联通卡的 APN 为 3gnet,电信卡的 APN为 ctnet,移动卡的 APN 为 cmnet。比如我现在用的联通卡,所以设置 APN 为 3gnet,命令如下:

AT+CGDCONT=1,”IP”,”CMNET”

③、发送连接 AT 命令:

AT+ZECMCALL=1

等待连接成功,连接成功以后会输出如下图所示信息:
在这里插入图片描述

连接成功以后打开 usb0 网卡,命令如下:

ifconfig usb0 up //打开 usb0 网卡

usb0 网卡打开以后输入如下命令获取 IP 地址:

udhcpc -i usb0

IP 地址获取过程如下图所示:
在这里插入图片描述
从上图可以看出,usb0 网卡获取到的 IP 地址为 10.164.232.36,然后 ping 一下百度官网,如果能 ping 通就说明 ME3630 的 ECM 接口联网成功。如果提示“bad address ‘www.baidu.com’”,那么请检查一下 DNS 服务器地址设置是否正确,打开/etc/resolv.conf 文件,然后加入“nameserver 114.114.114.114”即可。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式学习者。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值