移远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探测的(这篇文章要解决的就是这个问题࿰…...
【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展示给用户,相当于MVVM模式中的V--> <template><div class"first_div">//插值表达式<p>{{ message }}</p>//这里的参数是从父组件的template里传过来的<p>{{data_1}}</p…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
