armUbuntu | 系统移植 在线调试 高新兴ME3630 4G模块 PPP联网

armUbuntu | 系统移植 在线调试 高新兴ME3630 4G模块 PPP联网

王先生
2023-10-27 / 0 评论 / 4 阅读 / 正在检测是否收录...

检查系统内核有没有提供对ppp的模块支持

执行如下命令:

cat /proc/devices| grep ppp 

显示:

108 ppp

表示linux系统内核提供对PPP的支持

如果内核不支持,需要是重新编译Linux内核(打开Linux内核的PPP功能)得到新的zImage(Linux内核文件),然后继续执行,这里挖坑,回头上教程编译Linux内核。

移植pppd软件

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

获取pppd源码

pppd 源码 ppp-2.4.7.tar.gz
将 ppp-2.4.7.tar.gz 拷贝到 Ubuntu 下并解压,解压以后会生成一个名为 ppp-2.4.7 的文件夹。

编译pppd源码

进入到 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 这四个文件。

安装pppd软件

将这个四个文件拷贝到开发板根文件系统中的/usr/bin 目录下,命令如下:

sudo cp chat/chat /home/alientek/tmp/nfs/ubuntu_rootfs/usr/bin/ -f
sudo cp pppd/pppd /home/alientek/tmp/nfs/ubuntu_rootfs/usr/bin/ -f
sudo cp pppdump/pppdump /home/alientek/tmp/nfs/ubuntu_rootfs/usr/bin/ -f
sudo cp pppstats/pppstats /home/alientek/tmp/nfs/ubuntu_rootfs/usr/bin/ -f

完成以后输入“pppd -v”查看一下 pppd 的版本号,如果 pppd 版本号显示正常的话就说明
pppd 移植成功

使用 ECM 联网

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

AT+ZSWITCH=L

然后重启开发板。如果模块已经设置为 ECM 模式的话此步骤就不需要了。
2、使用 AT 指令+CGDCONT 来设置数据参数。联通卡的 APN 为 3gnet,电信卡的 APN为 ctnet,移动卡的 APN 为 cmnet。比如我现在用的联通卡,所以设置 APN 为 3gnet,命令如下:

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

3、发送连接 AT 命令:

AT+ZECMCALL=1

等待连接成功,连接成功以后会输出

+ZECMCALL: CONNECT
OK

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

ifconfig usb0 up //打开 usb0 网卡

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

udhcpc -i usb0

成功!

创建联网脚本

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

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”的文件,在文件里面输入如下所示内容:

gosuncn_options 文件内容

/dev/ttyUSB2
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

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

user card
password card

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

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 脚本,输入如下所示内容:

disconnect 文件内容

#!/bin/sh
killall pppd

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

chmod 777 ppp-on disconnect

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

./ppp-on &

评论 (0)

取消