当前位置: 首页 > news >正文

移远RM500U-CN模块直连嵌入式ubuntu实现拨号上网

目录

1 平台:

2 需要准备的资料

 3 参考文档

 4 编译环境与驱动移植

 4.1 内核驱动添加厂家ID和产品ID

4. 2.添加零包处理

4.3  增加复位恢复机制

4.4 增加批量输出 批量输出 URB 的数量和容量 的数量和容量

4.5 内核配置与编译

5 QM500U-CN拨号(在开发板执行)

5.1.QConnectManager的安装

5.2.QConnectManager拨号

问题:


1 平台:

嵌入式平台RK3588,  操作系统Ubuntu20.04

2 需要准备的资料

1、quectel-CM拨号工具及源码
2、usb-serial-option内核要修改的文件
3、linux开发板
4、linux内核源码

5、busybox的源码

 3 参考文档

《Quectel_RG200U-CN&Rx500U-CN_Linux_USB驱动_用户指导_V1.2》

《Quectel_RG200U-CN&Rx500U-CN_网卡拨号应用指导_V1.1》

《Quectel_RG200U&Rx500U系列_AT命令手册_V1.0》

 4 编译环境与驱动移植

 4.1 内核驱动添加厂家ID和产品ID

文档给出的RM500U-CN的VID和PID如下:

 需要注意的是一种模块可能有多种型号,之前就遇到EC20模块的PID对不上,需要从用户手册上获取,没有文档的情况下可通过命令lsusb获取:

 VID和PID确认无误后根据文档往[KERNEL]/drivers/usb/serial/option.c文档增加对应的ID

4. 2.添加零包处理

根据USB协议的要求,在大容量传输时需要添加处理零包的机制, 添 加 如 下 语 句 至 文 件
[KERNEL]/drivers/usb/serial/usb_wwan.c。

4.3  增加复位恢复机制

        当 MCU 进入挂起或睡眠模式时,某些 USB 主机控制器或 USB 集线器可能会断电或复位,且 MCU 退出挂起或睡眠模式后无法自动恢复 USB 设备。请添加以下语句以使能复位恢复流程。添加如下语句至文件[KERNEL]/drivers/usb/serial/option.c

处理如下:

4.4 增加批量输出 批量输出 URB 的数量和容量 的数量和容量

对于 Linux 内核 2.6.29 及以下版本,需增加批量输出 URB 的数量和容量以获取更快的上行速率。请添加如下语句至文件[KERNEL]/drivers/usb/serial/option.c。

4.5 内核配置与编译

处理如下:
到这里,内核的源码配置就完成了,接下来配置内核的编译选项,以支持USB设备。

make menuconfig

[*] Device Drivers →

  [*] USB Support →
   [*] USB Serial Converter support →

         [*] USB driver for GSM and CDMA modems

最后编译内核即可。

加载后可以可以查看模组的信息:

执行命令:lsusb

 设备可以识别出多个USB设备:

5 QM500U-CN拨号(在开发板执行)

5.1.QConnectManager的安装

  •     首先安装git, sudo apt-get install git
  •     执行命令git clone https://github.com/friendlyarm/quectel-cm.git将文件克隆到本地
  •     切换到目录下,执行make
  •     执行命令sudo cp quectel-CM /usr/bin/
  •     下载busybox udhcpc源码,链接https://busybox.net/我这里下载的版本是1.31.0(如果可以直接通过apt-get install busybox最好)
  •     复制到虚拟机中,找到文件[BUSYBOX]/examples/udhcp/simple.script,重命名为default.script
  •     新建目录/usr/share/udhcpc/, /etc/udhcpc两个目录
    • sudo mkdir /usr/share/udhcpc
    • sudo mkdir /etc/udhcpc
  •     将default.script复制到新建的目录下
    • sudo cp default.script /usr/share/udhcpc/ /etc/udhcpc/
  •     赋予权限,chmod 755 /usr/share/udhcpc/default.script
  •     安装ifconfig,sudo apt-get install net-tools

5.2.QConnectManager拨号

        切换到quectel-cm目录下,执行sudo quectel-CM &

udhcpc完成网卡的识别与配置,并完成DNS的重配置,如下图所示:

 查看到网卡获得ip地址,ping www.baidu.com正常

问题:

1、使用5G卡测试的时候,拨号总是失败,使用AT+CSQ测试的时候返回值是99,99,AT+CGREG?命令测试返回值是0,0。应该是没有注册上网络,解决办法:
依次输入
at+qeng=“servingcell”
AT+QNWPREFCFG= “nr5g_band”,0
at+qeng=“servingcell”
此时再次拨号,便能成功,该命令是否通用未知,对这方面不懂

        AT测试指令在哪里输入?
        sudo busybox microcom /dev/ttyUSB2  然后输入AT指令即可得到返回值

2、如果uducpc无法配置ip地址到网卡

        需要将udhcpc的默认运行脚本拷贝到,/usr/share/udhcpc /   /etc/udhcpc/两个目录下,

通过查看quectel-CM/log/ecm_ncm_rndis.txt  +79 ,可以看到使用的/etc/udhcpc/default.script,如下图:

相关文章:

移远RM500U-CN模块直连嵌入式ubuntu实现拨号上网

目录 1 平台: 2 需要准备的资料 3 参考文档 4 编译环境与驱动移植 4.1 内核驱动添加厂家ID和产品ID 4. 2.添加零包处理 4.3 增加复位恢复机制 4.4 增加批量输出 批量输出 URB 的数量和容量 的数量和容量 4.5 内核配置与编译 5 QM500U-CN拨号(在开…...

【JavaWeb】MySQL基础操作

1 通用语法规则 SQL语句可以单行或者多行书写,以分号结尾SQL语句不区分大小写,关键字建议使用大写单行注释 --注释内容(通用) # 注释内容(MySQL独有)多行注释 /* 注释内容 */ 2 语句 数据库 -- 查…...

【Tool】虚拟机安装与调试与设置与主机共享文件

前言 安装了vm17,实现了与主机文件共享, 步骤 下载虚拟机(试用版) Download VMware Workstation Pro 双击安装 暂不激活或者 使用如下激活码 KRNJX-22GXY-HCW46-MWYHY-YWRDB RDHTN-YFFKY-8YVR7-Q996Y-K74X3 N2XRH-GCH84-MV…...

Spring中的接口使用

技术主题 在我们的项目中,经常会使用一些注解,注解带给我们代码简洁,本质是用于在代码中添加元数据信息,从而实现更加灵活、高效和可维护的代码结构。 技术原理 注解一@Target(ElementType.TYPE) 这个注解表示被它修饰的注解可以应用在类、接口、枚举等类型上。换句话说…...

爬虫017_urllib库_get请求的quote方法_urlencode方法_---python工作笔记036

按行来看get请求方式 比如这个地址 上面这个地址复制粘贴过来以后 可以看到周杰伦变成了一堆的Unicode编码了 所以这个时候我们看,我们说https这里,用了UA反爬,所以这里 我们构建一个自定义的Request对象,里面要包含Us...

Http、SSE、Websocket的区别

从传输方向上看 http是客户端发送请求,然后服务端进行响应的单向通道网络传输协议; SSE( Server-sent Events )则相反,只能是服务器向客户端发送消息,如果客户端需要向服务器发送消息,则需要一…...

【资料分享】全志科技T507工业核心板硬件说明书(一)

目 录 前言 1硬件资源 1.1CPU 1.2ROM 1.3RAM 1.4时钟系统 1.5电源 1.6LED...

JavaScript类

JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。 每个类中包含了一个特殊的方法 constructor(),它是类…...

One-4-All: Neural Potential Fields for Embodied Navigation 论文阅读

论文信息 题目:One-4-All: Neural Potential Fields for Embodied Navigation 作者:Sacha Morin, Miguel Saavedra-Ruiz 来源:arXiv 时间:2023 Abstract 现实世界的导航可能需要使用高维 RGB 图像进行长视野规划,这…...

【ES】笔记-函数参数默认值

函数参数默认值 ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数,一般放到最后 function add(a,b,c10){return abc}let resultadd(1,2);console.log(result);2. 与解构赋值结合 function connect({host"127.0.0.1",username,password,port…...

安装harbor

目录 1. 安装docker-compose Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例…...

kube-prometheus 使用 blackbox-exporter 进行icmp 监控

安装kube-prometheus 后默认在monitoring namespace中有创建 blackbox-exporter deployment。但默认没有icmp的module配置,无法执行ping探测。因为即使有icmp module,默认配置也是无法执行ping探测的(这篇文章要解决的就是这个问题&#xff0…...

【python技巧】文本文件的读写操作

【python技巧】文本文件的读写操作 0. 背景1. file库的文件操作1.1 打开文件---file.open()1.2 读取文件---file.read()1.3 写入文件---file.write()1.4 查找内容---file.seek() 2. re库的文本处理参考资料 0. 背景 最近在写后端接口的时候,需要对.c、.conf等类型的…...

SpringBoot项目(验证码整合)——springboot整合email springboot整合阿里云短信服务

目录 引出springboot整合email配置邮箱导入依赖application.yml配置email业务类测试类 springboot整合阿里云短信服务申请阿里云短信服务测试短信服务获取阿里云的accessKeyspringboot整合阿里云短信导包工具类 总结 引出 1.springboot整合email,qq邮箱,…...

缓存穿透,击穿,雪崩之间的区别与联系

1、缓存数据基本流程 通常来说,我们是从数据库将数据查询出来之后,如果数据不为空,则将数据存储在缓存中,下次查询时就直接从缓存查询了,只有查询不到才会从数据库查询。 2、缓存穿透 核心在穿透两个字,穿透了,就说明在查询数据时没有遇到阻碍,直接就查询到了数据库。…...

Vue项目npm run dev 启动报错TypeError: Cannot read property ‘upgrade‘ of undefined

vue项目启动报错 TypeError: Cannot read property upgrade of undefined 由于我的vue.config.js文件 里面的代理target为空导致的 修改: 结果就可以正常运行了 参考原文: vue项目运行时报Cannot read property ‘upgrade’ of undefined错误_cannot r…...

dji uav建图导航系列(二)导航

文章目录 1、导航节点launch文件1.1、节点参数1.2、模拟器节点1.3、无人机雷达-底盘节点1.4、地图服务器节点1.5、AMCL节点1.6、move_base节点1.7、rviz可视化节点2、导航测试2.1、导航实测2.2、动态参数配置 rqt_reconfigure1、导航节点launch文件 导航节点启动文件 uav_navi…...

24.Netty源码之合理管理堆内存

highlight: arduino-light 合理管理 Netty 堆外内存 内存使用目标 •内存占用少(空间) •应用速度快(时间) 即多快好省 对 Java 而言:减少 Full GC 的 STW(Stop the world)时间 内存使用技巧 • 减少对象本身大小 md 例 1:用基本类型就不要用包装类。 例…...

如何自学(黑客)网络安全

前言: 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“…...

【vue】vue基础知识

1、插值表达式&属性绑定 <!--template展示给用户&#xff0c;相当于MVVM模式中的V--> <template><div class"first_div">//插值表达式<p>{{ message }}</p>//这里的参数是从父组件的template里传过来的<p>{{data_1}}</p…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space

问题&#xff1a;IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案&#xff1a;将编译的堆内存增加一点 位置&#xff1a;设置setting-》构建菜单build-》编译器Complier...