实现4G模块EC20在linux系统下的拨号上网

article/2025/9/20 2:21:52

前言:

为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。

在这里插入图片描述


1.实验目的:

实现4G模块EC20在linux系统下的拨号上网(Linux最小系统)

2.实验平台:

迅为4412开发板。EC20带有UART和USB接口,向linux内核添加4G模块的驱动和PPP协议的支持,然后编译内核并下载到开发板。

3.实验流程:

(1)驱动实现:主要就是模块的 USB VID和PID,这个我是把模块插到开发板上,使用lsusb得到:

这里写图片描述

a.把它加到Linux源码的drivers/usb/serial/option.c文件里,

#define EC20_VID 0x1E0E
#define EC20_PID 0x9001

b.在 option_ids 列表中增加
{ USB_DEVICE(EC20_VID, EC20_PID)},

c.make menuconfig 配置:

USB相关:

[] Device Drivers →
[
] USB Support →
[] USB Serial Converter support →
[
] USB driver for GSM and CDMA modems

PPP相关:(和PPP相关的,我都选上了)

[] Device Drivers →
[
] Network device support →
[*] PPP (point-to-point protocol) support

d.保存退出,执行make

在arch/arm/boot目录下得到zImage文件,烧写到开发板

4.调试
a.插上模块,在/dev/目录下可以看到映射出来的虚拟串口,证明驱动已经起作用了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d0xCwkKF-1593829234355)(https://img-blog.csdn.net/20170109184925432?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3d0MTg4MTE3MDc5NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

b.用at指令测试
先执行:cat /dev/ttyUSB2 & (后台将AT测试口打开)

这里写图片描述

下面测试:发送AT,返回OK,模块响应

这里写图片描述

测试信号强度:发送AT_CSQ,返回的信号正常

这里写图片描述

c.拨号

1.拨号上网脚本wcdma:

#/etc/ppp/peers/wcdma
# Usage:root>pppd call wcdma
# Hide password in debug messages
hide-password
# The phone is not required to authenticate
noauth
# The chat script (be sure to edit that file,too!)
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect'  #制定了要使用的chat脚本的位置。加上参数-v 告诉 chat命令将其所有的输出/入拷贝到系统记录里(通常是 /var/log/messages)。
# The close script(be sure to edit that file,too!)
disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'
# Debug info from pppd
debug	#加入调试信息
# Serial Device to which the HSPDA phone is connected
/dev/ttyUSB3	#指定连接使用的设备
# Serial port line speed
115200	#设置连接使用的控制字符传输速率
# If you want to use the HSDPA link as your gateway
defaultroute #使用默认线路
# pppd must not propose any IP address to the peer
noipdefault #不使用默认IP就可以加入参数noipdefault
# No ppp compression
novj
novjccomp
noccp
ipcp-accept-local #要求peer也就是isp给自己分配动态的IP地址
ipcp-accept-remote
local
# For sanity, keep a lock on the serial line
lock  #则创建一个锁定文件,其他程序在发现存在这个文件后,就能得知相应的串口已经被使用。
dump
# Keep pppd attached to the terminal
# Comment this to get daemon mode pppd
nodetach
user 
password 
# Hardware flow control
crtscts  #告诉ppp使用modem的硬件流量控制
remotename 3gppp
ipparam 3gppp
# Ask the peer for up to 2 DNS server addresses
usepeerdns #使用服务器端协商的DNS

2.chat脚本 (wcdma-chat-connect)

ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
TIMEOUT 120
"" AT
OK \rATZ
# Connection to the network
OK  \rAT+CGDCONT=1,"IP","3gnet",,0,0
# Dial the number
OK-AT-OK ATDT*99#
CONNECT \d\c

3.断开连接(wcdma-chat-disconnect)

ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
""\k"
""+++ATH"
SAY "\nGood bay\n"

将以上三个脚本放到/etc/ppp/peers 目录下

d.与拨号相关的chat 和 pppd 命令
通过下载ppp源码编译得到(见我的SIM7100C的拨号上网),我直接拿过来用了,没问题。

e.执行pppd call wcdma & 后台运行拨号
现象:(拨号成功反馈的信息)

[root@iTOP-4412]# pppd call wcdma &
[2]-  Done(8)                    pppd call wcdma
[root@iTOP-4412]# pppd options in effect:
debug           # (from /etc/ppp/peers/wcdma)
nodetach                # (from /etc/ppp/peers/wcdma)
dump            # (from /etc/ppp/peers/wcdma)
noauth          # (from /etc/ppp/peers/wcdma)
user password           # (from /etc/ppp/peers/wcdma)
remotename 3gppp                # (from /etc/ppp/peers/wcdma)
/dev/ttyUSB3            # (from /etc/ppp/peers/wcdma)
115200          # (from /etc/ppp/peers/wcdma)
lock            # (from /etc/ppp/peers/wcdma)
connect /usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect               # (from /etc/ppp/peers/wc[ 1940.106179] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2disconnect /usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect         # (from /etc/ppp/peers/wcdma)
crtscts         # (from /etc/ppp/peers/wcdma)
local           # (from /etc/ppp/peers/wcdma)
hide-password           # (from /etc/ppp/peers/wcdma)
novj            # (from /etc/ppp/peers/wcdma)
novjccomp               # (from /etc/ppp/[ 1940.138165] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
peers/wcdma)
ipcp-accept-local               # (from /etc/ppp/peers/wcdma)
ipcp-accept-remote              # (from /etc/ppp/peers/wcdma)
ipparam 3gppp           # (from /etc/ppp/peers/wcdma)
noipdefault             # (from /etc/ppp/peers/wcdma)
defaultroute            # (from /etc/ppp/peers/wcdma)
usepeerdns              # (from /etc/ppp/peers/wcdma)
n[ 1940.170197] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
occp            # (from /etc/ppp/peers/wcdma)
abort on (BUSY)
abort on (NO CARRIER)
abort on (NO DIALTONE)
abort on (ERROR)
abort on (NO ANSWER)
timeout set to 120 seconds
send (AT^M)
expect (OK)
AT^M^M
OK-- got itsend (^MATZ^M)
expect (OK)
^M
ATZ^M^M
OK-- got itsend (^MAT+CGDCONT=1,"IP","3gnet",,0,0^M)
[ 1940.234165] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
[ 1940.266165] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
expect (OK)
^M
AT+CGDCONT=1,"IP","3gnet",,0,0^M^M
OK-- got itsend (ATDT*99#^M)
[ 1940.586185] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
expect (CONNECT)
^M
ATDT*99#^M^M
CONNECT-- got itsend (\d)[ 1940.682171] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
[ 1940.714162] option_instat_callback: line=1423(status OK).161, 32, 0, 3, 2
Script /usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect finished (pid 18383), status = 0x0
Serial connection established.
using channel 2
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB3
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x41dfbd79> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x3 <asyncmap 0x0> <auth chap MD5> <magic 0x4579c9d9> <pcomp> <accomp>]
No auth is possible
sent [LCP ConfRej id=0x3 <auth chap MD5>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x41dfbd79> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x4 <asyncmap 0x0> <magic 0x4579c9d9> <pcomp> <accomp>]
sent [LCP ConfAck id=0x4 <asyncmap 0x0> <magic 0x4579c9d9> <pcomp> <accomp>]
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
rcvd [LCP DiscReq id=0x5 magic=0x4579c9d9]
rcvd [IPCP ConfReq id=0x2]
sent [IPCP ConfNak id=0x2 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.50.224.88> <ms-dns1 123.123.123.123> <ms-dns2 123.123.123.124>]
sent [IPCP ConfReq id=0x2 <addr 10.50.224.88> <ms-dns1 123.123.123.123> <ms-dns2 123.123.123.124>]
rcvd [IPCP ConfReq id=0x3]
sent [IPCP ConfAck id=0x3]
rcvd [IPCP ConfAck id=0x2 <addr 10.50.224.88> <ms-dns1 123.123.123.123> <ms-dns2 123.123.123.124>]
Could not determine remote IP address: defaulting to 10.64.64.64
not replacing existing default route via 192.168.1.1
local  IP address 10.50.224.88
remote IP address 10.64.64.64
primary   DNS address 123.123.123.123
secondary DNS address 123.123.123.124

f.[root@iTOP-4412]# ifconfig (查看网络IP)

这里写图片描述

g.下面要ping 通IP和域名还需相关设置(这部分也见SIM7100C在Linux的拨号上网,配置是一样的)。

到此,Linux下的拨号测试就成功了。

参考:
SIM7100C拨号

原文地址:
(http://wentao1213.com/2016/11/26/itop4412-EC20-linux-PPP/)


http://chatgpt.dhexx.cn/article/wp1M84Ph.shtml

相关文章

4G无线模块 电力通信模块

4G无线模块TD210&#xff0c;标准通讯接口及协议&#xff0c;电力规约、环保212、MODBUS-RTU协议等&#xff0c;通过串口的形式采集各种电力参数&#xff0c;电压&#xff0c;电流&#xff0c;有功功率&#xff0c;无功功率&#xff0c;有功电度&#xff0c;无功电度&#xff0…

thinkpad x270 加装内置4G模块实现移动上网的记录

手上有一个thinkpad x270&#xff0c;固态硬盘&#xff0c;运行流畅&#xff0c;看到新出产的x1、x13标配4G上网&#xff0c;不免心中有点馋&#xff0c;因此计划对x270加装4g模块。 通过观看拆机视频&#xff0c;发现这货与x250等机型一样&#xff0c;有一个m.2 key B 的接口…

Ubuntu下使用4g模块、4G模组上网,USB接口,图形界面

Ubuntu下4g上网配置。 一、接入网卡并查看。 msubuntu:~$ l /dev/ttyU* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 msubuntu:~$Interface Description&#xff1a; Interface Description DM InterfaceDiagnose portNMEA InterfaceFor GPS NMEA message outpu…

树莓派搭载EC200U 4G模块(USB网卡上网和PPP拨号上网)

文章目录 一、EC200U模块4G模块介绍二、USB转串口驱动设置&#xff08;1&#xff09;打开树莓派的串口&#xff08;2&#xff09;lsusb是否有EC200U模块&#xff08;3&#xff09;添加 VID 和 PID 信息 三、USB网卡驱动上网四、PPP协议&#xff08;1&#xff09;PPP协议介绍1.1…

配置 4G 模块为WAN口上网

配置 4G 模块为WAN口上网 将Linux板卡配置为交换机或路由器&#xff0c;提供类似路由器的上网功能。这里以4G网卡作为WAN进行上网。 一、使用网桥上网 1. 配置4G模块为默认网关 先配置好4G模块为默认路由网关。 这里需要先将4G模块配置为路由模式。4G模块路由模式和网卡模…

safeAreaLayoutGuide

https://www.jianshu.com/p/9d68a220983b Safe Area Layout Guide对应的SafeArea特性使用(DeploymentTarget9.0及后) 解决方案&#xff1a; 1. DeploymentTarget 9.0及后 2. DeploymentTarget 8.0

Safety-0

写在前面 好记性不如烂笔头&#xff0c;很多知识久了不用会渐渐生疏&#xff0c;故此以文章的形式进行记录。但干干的知识点又不符合本人的风格&#xff0c;故此产生了Safety&#xff0c;一个主要用于记录学习Mybatis和SpringBoot的项目。 Safety 是基于Mybatis实现的加解密插…

NetworkSecurity

一、CSRF 参考链接 1.定义 &#xff08;Cross Site Request Forgery, 跨站域请求伪造&#xff09;是一种网络的攻击方式&#xff0c;它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#…

Web端安全测试--IBM Security AppScan Standard 工具使用手册

1、工具的使用原理 1.1工作原理 &#xff08;1&#xff09;通过探索了解整个web页面结果&#xff08;2&#xff09;通过分析&#xff0c;使用扫描规则库对修改的HTTP Request进行攻击尝试&#xff08;3&#xff09;分析 Response 来验证是否存在安全漏洞 1.2 AppScan的工作过…

【Safety】简介

XSS 涉及面试题&#xff1a;什么是 XSS 攻击&#xff1f;如何防范 XSS 攻击&#xff1f;什么是 CSP&#xff1f; XSS是什么 XSS 简单点来说&#xff0c;就是攻击者想尽一切办法将可执行的代码注入到网页中 XSS分类边界 XSS 可以分为多种类型&#xff0c;但是总体上认为分为两…

Electron Security Warning (Insecure Content-Security-Policy) 告警解决

Electron Security Warning (Insecure Content-Security-Policy) 告警解决 Electron的Console控制台出现如下告警时&#xff1a; 是安全策略的设置告警&#xff0c;意思是内容安全策略没有设置&#xff0c;或者使用了unsafe-eval的安全设置。如果想要不出现上述告警&#xff…

AppScan,web安全测试

操作手册 登录到站点 扫描过程中有提示登录的&#xff0c;就手动登录 待自动扫描结束后&#xff0c;再手动探索&#xff0c;在被测web页面上手动探索结束后点击确定记录你手动提交的请求&#xff0c;然后【继续仅测试】&#xff0c;等待测试结束 结果分析、生成报告 问题默认是…

SafetyNet使用机器学习策略的真实世界自动驾驶车辆的安全规划(一)

本文主要是SafetyNet的框架概述。 1. 前言 文中提到了传统的决策规划的方法&#xff0c;主要有基于规则的方法和基于学习的方法。该论文提出了一种新的方法&#xff08;文章自己说是新的&#xff0c;最主要的原因是该方法在洛杉矶进行了道路测试。&#xff09; 但是这里的Fal…

【译】Using the SafetyNet API (使用SafetyNet API)

该SafetyNet Attestation API是谷歌播放服务的API&#xff0c;任何开发人员都能以获得一定程度的保证&#xff0c;使用他们的应用程序正在运行的设备是“CTS兼容。” CTS代表兼容性测试套件&#xff0c;这是测试套件设备必须在发布前通过&#xff0c;才能包含Google Play服务。…

GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

1.Goole在今年6月份出的新政策&#xff0c;不在使用safetynet&#xff0c;而使用Play Integrity API。 2.项目本身没有使用过safetynet。 3.使用了firebase。查阅资料&#xff0c;解决方案如下&#xff1a; implementation platform(com.google.firebase:firebase-bom:30.2.…

SafetyNet 漏洞rootutils 利用

1、https://developers.google.com/android/guides/setup 添加SatetyNet 服务 2、https://developers.google.cn/android/reference/com/google/android/gms/safetynet/SafetyNet API 3、https://koz.io/inside-safetynet/ https://blog.csdn.net/gulinxieying/art…

必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

必过SafetyNet&#xff01;以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法 作者 梓沐啊_&#xff08;KylinDemons&#xff09; 版权声明 Copyright © 2021 KylinDemons. All rights reserved. 本文将在CSDN由作者KylinDemons、在酷安由梓沐啊_、在QQ空间…

初识SafetyNet简要梳理

目录 前序 2 什么是SafetyNet校验&#xff1f; 2 Safetynet工作原理 2 监控及校验内容 2 实现方式 3 参考文献&#xff1a; 4 前序 由于近年来Android支付应用的兴起&#xff0c;一些人在root过的手机上发现该类支付性质的应用无法使用。原来&#xf…

【Android安全】Google Hardware-backed Keystore | SafetyNet | 远程证明Remote Attestation

Google Hardware-backed KeyStore Attestation 原理及流程 SafetyNet Hardware-backed Attestation SafetyNet Hardware-backed Attestation&#xff1a;使用了Hardware-backed Keystore SafetyNet 支持Software Attestation 和 Hardware-backed Attestation&#xff0c;根据…

SafetyNet简要梳理

目录 前序 2 什么是SafetyNet校验&#xff1f; 2 Safetynet工作原理 2 监控及校验内容 2 实现方式 3 参考文献&#xff1a; 4 前序 由于近年来Android支付应用的兴起&#xff0c;一些人在root过的手机上发现该类支付性质的应用无法使用。原来&#xf…