4G模块的使用

2023-11-15

一、4G相关知识

4G是第四代通讯技术。能够传输高质量视频图像。4G的下载速度达100Mbps,比目前的拨号上网快2000倍,上传的速度也能达到20Mbps,并能够满足几乎所有用户对于无线服务的要求。此外,4G可以在DSL和有线电视调制解调器没有覆盖的地方部署,然后再扩展到整个地区。

4G的联网通路

4G终端直接通过和基站连接,基站通过电缆和运营商的机房连接,机房连接到核心网,核心网最后连接到互联网。示意图如下:


二、4G模块介绍

4G模块有几种,单m模和多模,单模只支持一种模式,即支持一种运行商的网络,多模可支持任意运营商的网络。可支持的接口有串口和USB两种。一般情况不用串口,速度太慢。

  • EC20模块
    EC20 R2.1 Mini PCIe-C 模块支持主要功能如下。
     支持 1 路 UART 接口
     支持 1 路 USB 2.0 接口
     支持 1 路(U)SIM 接口
     支持 1 路模拟音频接口
     支持 LED 状态指示
     支持飞行模式控制功能
     支持外部复位功能
     支持睡眠控制和睡眠指示功能
     支持 3 个射频天线接口

实物图:

安装到USB转接座上:

三、在windows上使用4G模块上网

1、安装模块附件中的windows驱动
2、在模块中插入一张电话卡(注意是4G卡)
3、把带有USB接口的4G模块插入电脑
4、在无线网络中就发现了CMCC网络

现在就可以通过模块上网了。



四、4G模块在Linux下的移植

4G模块驱动的添加

1、添加VID和PID

本模块是USB接口,使用的是USB类,所以不用添加驱动,但是根据内核的版本,需要添加VID和PID。
先查看USB的VID 和 PID信息:

[root@lin ~]# lsusb
Bus 001 Device 004: ID 2c7c:0125

得到VID 和 PID后,修改文件 /kernel/drivers/usb/serial/option.c,添加位置如下:

#define EC20_VID 0X2C7C
#define EC20_PID 0X0125
static const struct usb_device_id option_ids[] =
{
	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
    ...... 
    { USB_DEVICE(EC20_VID , EC20_PID ) }, // EC20 4G 模块
	{ } /* Terminating entry */
}
2、内核配置

本4G模块是USB接口设备,内核配置为:

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

配置完成后,编译内核,再下载内核到开发板,启动开发板,出现下面信息,表示配置完成。

[root@li ~]# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1   /dev/ttyUSB2   /dev/ttyUSB3 /dev/ttyUSB4

3、测试设置情况

驱动是否工作:

[root@lin ~]# cat /dev/ttyUSB2 &
+QIND: SMS DONE
+QIND: PB DONE

网络连接测试:

[root@lin ~]# echo -e “AT\r\n” > /dev/ttyUSB2
[root@lin ~]# AT
OK
AT
OK

信号测试:

[root@lin ~]# echo -e “AT+CSQ\r\n” > /dev/ttyUSB2
[root@lin ~]# AT+CSQ
+CSQ: 17,99     //信号强度17,信号良好
OK
AT+CSQ
+CSQ: 17,99

以上完成驱动移植工作,模块正常工作起来,随后开始拨号上网。

拨号上网

拨号上网友两种方式,ppp和运营商自己(GobiNet)的方式。

1、PPP拨号

pppd和pppoe说明

pppd 支持串行的拨号上网方式,也就是说,如果我们用4G 模块进行拨号上网,仅需要pppd 就可以了。

pppoe 是通过调用pppd 来实现 p-to-p 协议的,简单来说,pppoe 为了解决pppd 不能直接用于网口拨号上网而写的软件,pppoe 在工作时仍然需要调用pppd。

本模块的拨号已经提供了拨号脚本,所以不需要pppoe ,只需要移植pppd。

移植pppd

1、下载ppp
  ppp是开源项目,从官网下载:https://ppp.samba.org/,当前最新版本是 ppp-2.4.9.tar.gz。
  
2、配置生成Makefile

sudo ./configure

3、编译

make CC= arm-none-linux-gnueabi-gcc

4、部署ppp
编写.sh文件,用来创建文件夹和拷贝上面编译生成的文件。

#!/bin/sh
mkdir -p /home/lin/x210/rootfs/usr/local/lib/pppd
cd pppd/plugins
cp *.so /home/lin/x210/rootfs/usr/local/lib/pppd
cd rp-pppoe
cp rp-pppoe.so /home/lin/x210/rootfs/usr/local/lib/pppd
cp pppoe-discovery /home/lin/x210/rootfs/usr/sbin
cd ../pppoatm
cp pppoatm.so /home/lin/x210/rootfs/usr/local/lib/pppd/
cd ../radius
cp radius.so radattr.so radrealms.so /home/lin/x210/rootfs/usr/local/lib/pppd/

cd ../..
cp pppd /home/lin/x210/rootfs/usr/sbin
    
cd ../pppstats
cp pppstats /home/lin/x210/rootfs/usr/sbin

cd ../pppdump
cp pppdump /home/lin/x210/rootfs/usr/sbin

cd ../chat
cp chat /root/rootfs/usr/sbin  [In this way, the original chat directory is overwritten when copying]//先删除以前的chat,再运行这一句。因为它是链接到busybox的文件,直接覆盖时好,会把busybox替换掉,引起错误。

mkdir /home/lin/x210/rootfs/etc/ppp
cd ../etc.ppp
cp chap-secrets options pap-secrets /home/lin/x210/rootfs/etc/ppp

从4G模块厂家的文件夹中拷贝下面的文件:

  • 拷贝quectel-chat-connect quectel-chat-disconnect quectel-ppp quectel-pppd.sh到根文件系统的/etc/ppp/peers目录下

  • 拷贝ip-up到根文件系统的/etc/ppp目录下

  • 修改/etc/ppp/peers/quectel-chat-connect 中的修改APN为cmnet(移动公司网络)
    OK AT+CGDCONT=1,“IP”,“APNnet”,0,0
    OK AT+CGDCONT=1,“IP”,“cmnet”,0,0

在根目录下创建 /var/lock 和run

mkdir /var/lock
mkdir /var/run
(问题:创建lock run后,重启动开发板就不见了,需要启动后临时创建)

网络测试

1、拨号

pppd call quectel-ppp &
quectel-pppd.sh   //或者使用厂家提供的拨号脚本

拨号后节选部分输出信息:

send (AT^M)
expect (OK)
^M
OK
 -- got it

send (ATE0^M)
expect (OK)
^M
^M
OK
 -- got it

send (ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2^M)
expect (OK)

2、测试网络:

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.79.106.202  P-t-P:10.67.67.67  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:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:52 (52.0 B)  TX bytes:58 (58.0 B)

发现网卡ppp0。

3、查看网络状态

netstat -nr

发现2条路由表

[root@lin var]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.67.67.67     0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

删除默认路由
route del default

[root@lin var]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.67.67.67     0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

将ppp0设置为默认路由,route add default dev ppp0

[root@lin var]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.67.67.67     0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0

ping百度域名测试

[root@lin var]# ping baidu.com
PING baidu.com (220.181.38.251): 56 data bytes
64 bytes from 220.181.38.251: seq=0 ttl=48 time=96.244 ms
64 bytes from 220.181.38.251: seq=1 ttl=48 time=84.331 ms
64 bytes from 220.181.38.251: seq=2 ttl=48 time=99.816 ms

以上完成.。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4G模块的使用 的相关文章

  • Linux-安装redis6.2.1及主备复制模式(replication)

    Linux 安装redis6 2 1 下载redis6 2 1资源 上传至安装目录 解压及编译 解压 修改名称 编译 修改配置文件 主节点 从节点 启动及测试 启动 主节点 从节点 测试 下载redis6 2 1资源 地址 https re
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:101-120)

    第101题 可用于多种路由协议 由 if match 和 apply 子句组成的路由选择工具是 A route policy B IP Prefix C commnityfilter D as path filter 答案 A 解析 Rou
  • QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent

    建了一个对话框 我不想把边框去掉 只想去掉关闭按钮 setWindowFlags windowFlags Qt WindowCloseButtonHint Qt WindowContextHelpButtonHint 结果那个问号的按钮去掉
  • c++序列化以及反序列化实现

    1 什么是序列化和反序列化 当我们在写程序时 比如说我们自定义了一个实体类Person 然后在程序中创建一个该实体类对象 并给对象赋了一些值 但是我们想将这些数据发给我们的其他的程序员朋友 让他们也可以调用我们创建的这个实体类并使用我们的数
  • 数据库实时同步利器——CDC(变化数据捕获技术)

    在进行数据ETL过程中 我们经常需要通过周期性的定时调度将业务数据按照T 1的方式同步到数据仓库中 进行数据分析处理 最终通过BI报表展示给最终用户 但这种方式实时性较差 用户往往只能看到昨天的数据 会影响用户决策的及时性 而如果用户要近实
  • 更换持续集成工具,从 Travis 到 Github Actions

    我真傻 真的 单单受文档的推荐就选择了 Travis 作为部分项目的持续集成工具 没有料到它早已于 2020 年 12 月更换了免费政策 不再为开源项目提供免费的用于持续集成使用的 Credits 了 当赠送的 10000 个点数用完 就需
  • 【踩坑经历】Java Long 类型传给前端损失精度的问题

    最近在做一个 SpringBoot Vue 的项目 持久层框架用的是 MyBatis Plus 然后遇到了一个问题 一起来看下怎么回事 这个项目就是一个文章收藏器 可以收藏一些技术文章 然后可以选择星标 以便查找这篇文章 那么点击星标的按钮
  • 服务器的tomcat调优和jvm调化

    下面讲述的是tomcat的优化 及jvm的优化 Tomcat 的缺省配置是不能稳定长期运行的 也就是不适合生产环境 它会死机 让你不断重新启动 甚至在午夜时分唤醒你 对于操作系统优化来说 是尽可能的增大可使用的内存容量 提高CPU 的频率
  • 操作系统12----进程间通信IPC

    进程间通信IPC 1 进程通信 IPC Inter Process Communication 1 1直接通信 1 2间接通信 1 3阻塞通信 1 4非阻塞通信 2 信号 Signal 3 管道 pipe 4 消息队列 5 共享内存 1 进
  • 基于面板数据的熵值法介绍与实现

    熵值法是一种基于信息熵理论的客观赋值方法 即数据越离散 所含信息量越多 对综合评价影响越大 目录 一 基于面板数据熵值法介绍 二 R语言实现 参考文献 一 基于面板数据熵值法介绍 传统的熵值法有个弊端 只能针对于截面数据 即根据某一年 k
  • MySQL创建表时提示:1067 - Invalid default value for ‘sex‘

    问题 在创建表的时候如果有中文 则会提示 1067 Invalid default value for sex 比如 创建信息表 create table userInfo card id int primary key auto incr
  • unity 内嵌网页简单流程(3D WebView 3.14.1)

    我是用于 web 平台 特此记录 3D WebView 主要实现在unity 中制作网页浏览器 可使用平台 很强大 其他类似插件都有平台缺陷 Android iOS UWP Hololens Windows macOS WebGL 0 插件
  • 制造行业主数据同步集成

    主数据是描述企业核心业务实体的数据 是企业核心业务的主要构成 各个订单 合同以及业务的主体 在企业内部被重复 共享应用的数据 主数据跨越企业各个业务部门以及各类业务系统 是应用系统间数据交互的基础 近期一直北方某制造业进行主数据治理工作 谈
  • React Router源码解析

    虽然React Router已经到了V6版本了 但在我们项目中 目前主要用的还是React Router的V5版本 所以此处我们从V5版本着手 去了解前端路由的实现原理 目标 希望收获 前端路由的基本原理 React Router 的实现原
  • Scanner的.next()以及.nextLine()各自代表什么意思

    String str new Scanner System in nextLine String str new Scanner System in next next 方法一次读取一个无间隔子串 比如 TAB 空格 回车符 的时候 会终止
  • Chromium OS 初体验

    Chromium OS可是早有耳闻 但是一直没有尝试 最近很多评论甚至认为会对Windows和Mac都能够造成压力 于是迫不及待的想尝试一下了 百度下了官网 官网很贴心 不光给了用于写入U盘的镜像文件 最初是针对上网本的 所以自然不是刻录成
  • Python 基础知识6 字典

    字典 定义字典 d key1 22 key2 meng print d print type d 访问字典里的值 dict Name Runoob Age 7 Class First print dict Name dict Name pr
  • 在Unity中编写单元测试

    最近在我忙于我的最新项目时 我一直在思考 我如何能单元测试代码 我知道如果我先把它搁一边 在编写一大段游戏代码后 我可能再也不会回头来写测试了 编写单元测试对我有两个挑战 首先 游戏不同于其他类型的软件 没有好的代码分段来处理好输入 以及图
  • Hello World

    编写思路 创建 Java 源文件 将源文件编译为 class 文件 运行 class 文件 编写代码 代码块 我的第一个 Java 程序 class 类 Java 程序基本组成单位 HelloWorld 为类的名称 public class
  • 企业微信自建内部应用Demo源码,附在线Demo及视频讲解,创建测试公司及测试应用简单配置即可使用

    自建内部应用Demo源码 前端vite vuejs https github com liyuexi qywx vuejs qywx vuejs 企业微信自建内部应用demo源码前端vite vuejs https github com l

随机推荐

  • 最简单的实现[三栏布局中间自适应]方法

    一 float margin 左盒子 左浮动 右盒子 右浮动 中间盒子 左右加margin 注意 盒子的书写顺序是左右中 div class container div class left w div div class right w
  • docker 安装 nginx1.23.2

    注意 nginx 不能提前挂载配置 html 目录可以提前挂载 但提前挂载了访问默认nginx页面就没有了 部署前端时可提前挂载 所以我们先提前创建副本 1 提前创建挂载文件 创建容器副本 主要作用与获取配置文件 先创建一个没有的nginx
  • 错误隐藏学习手记(五)

    在H 264的研究中 我们可以看到目前有三种开源编码 很多测试都是在一个开源编码中实现的 这个开源编码就叫做 JM86 在这里呢具体介绍一下这三种开源编码 一 三大开源编码器介绍 1 JM H 264的官方测试源码 由德国hhi研究所负责开
  • oracle提高数据移植速度.

    author skatetime 2008 07 21 提高数据移植速度 序列也能影响数据迁移的速度 1 测试表 test skate1 SQL gt select count from test skate1 COUNT 5841920
  • python-kafka多线程快速读取consumer消费者数据,同时使用批读取与无限流读取改进

    python单线程循环读取consumer会很浪费时间 而且速率远远低于生产者可容纳的速率 因此我们使用多线程来处理IO密集型的读取操作 文章目录 极简的示例 1 生产者 先运行 2 消费者部分多线程读取 消费者改进 1 批次读取 并将读取
  • StringBuilder详解

    1 简介 StringBuilder和StringBuffer一样 都是继承自抽象类AbstractStringBuilder类 也是一个可变的字符序列 StringBuilder和StringBuffer非常相似 甚至有互相兼容的API
  • 【蜂群课堂】懒人精灵PP-PicoDet课程

    一 目标检测介绍 PP PicoDet 是百度提出的移动端友好和高精度Anchor Free 目标检测算法 实测性能非常优越 优点 识别速度更快 轻量级模型 更适合移动端设备运行 cpu占用低 更能稳定运行 可以断点恢复训练 缺点 训练数据
  • Qt在windows与Mac OS中获取执行程序版本号

    1 windows中获取执行文件exe的版本号 QString GetFileVertion QString aFullName QString vRetVersion string vFullName QStringToString aF
  • Java对象和类

    Java对象和类 Java是一种面向对象的编程语言 通过使用类和对象来组织和管理代码 在本教程中 我们将探讨Java中对象和类的使用 以及如何创建和使用它们 步骤1 创建一个类 Java中的类是对象的模板 用于定义对象的属性和行为 我们首先
  • 解决There is no getter for property named ‘orgld‘ in ‘class java.lang.Long“问题

    问题描述 添加一个根据orgId返回信息时候 后端报There is no getter for property named orgld in class java lang Long 的错误 解决问题 最后发现出错地方在Mapper层
  • 还在用android.support?该考虑迁移AndroidX了!

    AndroidX是Google 2018 IO 大会推出的新扩展库 主要是对Android 支持库做了重大改进 与支持库一样 AndroidX 与 Android 操作系统分开提供 并与各个 Android 版本向后兼容 可以说Androi
  • 更改cpuID(CPU序列号)指南

    最近在使用一个软件 购买了许可 该license绑定了机器的cpuID 然该软件并不能正在运行在windows 8 64bit操作系统上 具体表现为运行3 5mins后就崩溃 于是 我计划使用VMware虚拟机虚拟出相应的硬件以及windo
  • 教程资源合集(网上搜集整理)

    Adobe After Effects AE 实用学习教程合集 AE零基础入门教程 100讲 http t cn RICjTnQ AE cc 教程全集http t cn Rb3G6dp AK大神AE系列教程合集http t cn RZVtd
  • [Springboot]Whitelabel Error Page This application has no explicit mapping for /error, so you are s

    这个问题无非就两个原因 1 url拼错了 2 启动类ConponetScan配置的包路径不对 或者注解写错了 同组里一个新同事遇到这个问题了 在这里记录下 问题很小 但是也很荒唐
  • 字符串匹配算法

    一 简介 文本信息可以说是迄今为止最主要的一种信息交换手段 而作为文本处理中的一个重要领域 字符串匹配 就是我们今天要说的话题 原文还特意提及文本数据数量每18个月翻一番 以此论证算法必须要是高效的 不过我注意到摩尔定律也是18个月翻番 这
  • 解决 vscode 窗口故障(先别和我一样傻着想去重装vs code,来试试这个方法叭 )

    参考 https blog csdn net nanhuaibeian article details 105020102 问题描述 警告如下 因为问题解决前忘记截图了 所以在别处找的图 此处为2020 5 12 补充 当出现该问题时 先在
  • 服务器系统安装net,.Net Framework的安装教程

    Net Framework是微软的一个系统组件 基本所有windows平台上开发的产品都需要安装Net Framework 除了winxp这种老系统 所有的window系统都自带 Net Framework 如果您的服务器是win2008
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • jupyter风格设置,以及解决matplotlib坐标轴看不清的问题

    分享一下我的主题 效果图 直接在jupyter打开一个终端输入以下命令 jt t onedork f roboto nf robotosans tf robotosans cellw 70 dfs 10 ofs 10 fs 14 nfs 1
  • 4G模块的使用

    一 G相关知识 4G是第四代通讯技术 能够传输高质量视频图像 4G的下载速度达100Mbps 比目前的拨号上网快2000倍 上传的速度也能达到20Mbps 并能够满足几乎所有用户对于无线服务的要求 此外 4G可以在DSL和有线电视调制解调器