iMX6ULL EC20 4G连网

该文介绍了如何在讯为TERMINATOR_V1.1开发板上利用EC204G模块进行Linux内核和Buildroot的配置,以及如何使用pppd工具进行拨号上网测试。通过配置内核选项,添加pppd包到Buildroot,以及调整相关脚本,成功建立4G网络连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我移植的板子是讯为的TERMINATOR_V1.1开发板,参考板为官方 i.MX6ULL EVK开发板。

1. 介绍

EC20是移远一款带有GPS功能的LTE模块支持4G上网,本文将利用官方提供linux-ppp-scripts_V1.2.zip包实现ppp拨号上网,更多详细的指令操作细节、参数、示例可参考官网提供的手册:Quectel_EC20_GNSS_AT_Commands_Manual_V1.1.pdf。

2. 配置Linux内核

因为我使用的内核已经支持了EC20,所以这里无需修改内核代码。如果自己使用的内核不支持EC20只需要修改drivers/usb/serial/option.c文件,添加EC20设备信息即可。接下来只需要配置内核。

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
		
		<*>   USB Network Adapters  --->
			<*>   Multi-purpose USB Networking Framework
			
	[*] USB support  --->
		<*>   USB Serial Converter support  --->
			<*>   USB driver for GSM and CDMA modems

3. 配置Buildroot

使用ppp拨号上网需要pppd工具包,直接从Buildroot中添加这个工具。

Target packages  --->
	Networking applications  ---> 
		[*] pppd
		[ ]   filtering
		[ ]   radius
		[*]   overwrite /etc/resolv.conf

4. 测试

将修改好的内核和根文件系统下载到开发板,并启动开发板。在根目录的etc目录中新建ppp文件夹,并在ppp目录中新建 peers文件夹。解压linux-ppp-scripts_V1.2.zip包,将ip-up文件复制到ppp目录中并添加可执行权限,再将quectel-chat-connect、quectel-chat-disconnect、quectel-ppp-kill、quectel-ppp四个文件复制到peers目录中。需要将quectel-ppp文件中/dev/ttyUSB3改为/dev/ttyUSB2,并将quectel-chat-connect文件中OK ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2一行注释掉(具体原因不清楚,可能是因为我的EC20不是全功能版)。

ppp
├── ip-up
└── peers
    ├── quectel-chat-connect
    ├── quectel-chat-disconnect
    ├── quectel-ppp
    └── quectel-ppp-kill

执行pppd call quectel-ppp &命令,ifconfig可以看到出现了一个ppp0的网卡,使用sh /etc/ppp/peers/quectel-ppp-kill断开连接。

root@imx6ull:~# pppd call quectel-ppp &
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/ttyUSB2            # (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)
^M
OK
 -- got it

send (ATE0^M)
expect (OK)
^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 456), status = 0x0
Serial connection established.
using channel 3
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB2
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x5c165b7> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x12 <asyncmap 0x0> <auth chap MD5> <magic 0xe617ceb8> <pcomp> <accomp>]
sent [LCP ConfAck id=0x12 <asyncmap 0x0> <auth chap MD5> <magic 0xe617ceb8> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x5c165b7> <pcomp> <accomp>]
rcvd [LCP DiscReq id=0x13 magic=0xe617ceb8]
rcvd [CHAP Challenge id=0x1 <07c88a9e69c25977a34113740e059ecd>, name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 <636b4c1439fdfce10be9c185e81f6b49>, 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>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
rcvd [IPCP ConfReq id=0x12]
sent [IPCP ConfNak id=0x12 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.113.60.94> <ms-dns1 211.137.130.18> <ms-dns2 211.137.130.2>]
sent [IPCP ConfReq id=0x2 <addr 10.113.60.94> <ms-dns1 211.137.130.18> <ms-dns2 211.137.130.2>]
rcvd [IPCP ConfReq id=0x13]
sent [IPCP ConfAck id=0x13]
rcvd [IPCP ConfAck id=0x2 <addr 10.113.60.94> <ms-dns1 211.137.130.18> <ms-dns2 211.137.130.2>]
Could not determine remote IP address: defaulting to 10.64.64.64
not replacing default route to wlan0 [192.168.0.1]
local  IP address 10.113.60.94
remote IP address 10.64.64.64
primary   DNS address 211.137.130.18
secondary DNS address 211.137.130.2
Script /etc/ppp/ip-up started (pid 457)
Script /etc/ppp/ip-up finished (pid 457), status = 0x0
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::1025:52f0:02b9:2325>]
IPV6CP: timeout sending Config-Requests
root@imx6ull:~# ifconfig
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:32

can1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:33

eth0      Link encap:Ethernet  HWaddr B2:D1:FB:30:9E:0C
          inet addr:192.168.0.75  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::b0d1:fbff:fe30:9e0c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:222 errors:0 dropped:0 overruns:0 frame:0
          TX packets:918 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:39130 (38.2 KiB)  TX bytes:87879 (85.8 KiB)

eth1      Link encap:Ethernet  HWaddr C6:59:22:F7:61:C4
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:10.113.60.94  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:52 (52.0 B)  TX bytes:198 (198.0 B)

wlan0     Link encap:Ethernet  HWaddr 34:20:03:3E:67:0B
          inet addr:192.168.0.19  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::3620:3ff:fe3e:670b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:438 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:51126 (49.9 KiB)  TX bytes:3012 (2.9 KiB)

root@imx6ull:~# sh /etc/ppp/peers/quectel-ppp-kill
Terminating on signal 15
Connect time 3.4 minutes.
Sent 126 bytes, received 0 bytes.
sent [LCP TermReq id=0x2 "User request"]
rcvd [LCP TermAck id=0x2]
Connection terminated.
abort on (ERROR)
abort on (NO DIALTONE)

Sending break to the modem
send (+++^M)
send (+++^M)
send (+++^M)

Goodbay
Script chat -s -v -f /etc/ppp/peers/quectel-chat-disconnect finished (pid 469), status = 0x0
Serial link disconnected.
killall: pppd: no process killed
killall: pppd: no process killed
[1]+  Done(5)                    pppd call quectel-ppp
root@imx6ull:~#

设置开机启动,在/etc/network/interfaces文件中加入以下几行。

auto ppp0
iface ppp0 inet manual
pre-up pppd call quectel-ppp > /dev/null &

重启开发板,使用ppp0网卡ping百度(ping通后可以看到板子上的4G模块LED闪动变快),联网成功。
在这里插入图片描述

移植源码获取:

git clone https://github.com/Sonboy97/linux.git -b imx
版本:b0b488843d7ff3ae06dae6e95e29f4064abae1c0
git clone https://github.com/Sonboy97/buildroot.git -b imx
版本:29e18d881c91b8f6080e93cc8158fa08de2d7d78
git clone https://github.com/Sonboy97/learning.git -b imx6ull_topeet
版本:be31a402800808f7c5cf76085a78656b33da6d85
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MrSonboy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值