移远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,如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/77112.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Openai中的tokens怎么估计

大规模语言模型(LLM)的出现给自然语言处理领域带来了变革的可能性,Openai开放了chatgpt的API,方便了开发人员使用LLM的推理能力,注册时赠送5美元的使用额度,有效期3个月。 如果想便捷的使用chatgpt的API&a…

分享一颗能用在TYPE-C接口取电协议芯片LDR6328Q,方便好用

芯片功能:诱导PD充电器输出最大功率,支持最大诱骗20V电压。支持协议:PD/QC/三星AFC/华为SCP等主流快充协议 芯片封装:QFN16,SOP8多封装选择 芯片应用: 桶形连接器替换(BCR),USB-A和m…

深度学习2:过拟合解决办法

1.通过噪声正则化解决过拟合问题 噪声正则化是一种解决过拟合问题的有效方法。该方法通过向训练数据添加随机噪声,从而使模型更加鲁棒,并减少对训练数据的过度拟合。噪声正则化可以通过多种方式实现。其中一种常见的方法是在输入数据中添加随机噪声。例…

使用 BERT 进行文本分类 (02/3)

​ 一、说明 在使用BERT(1)进行文本分类中,我向您展示了一个BERT如何标记文本的示例。在下面的文章中,让我们更深入地研究是否可以使用 BERT 来预测文本是使用 PyTorch 传达积极还是消极的情绪。首先,我们需要准备数据…

Spring中循环依赖解决方案

循环依赖 循环依赖是Spring框架中常见的问题之一,当两个或多个类相互引用对方时,就会出现循环依赖的情况。这种情况下,Spring框架无法确定哪个类应该先实例化和初始化,从而导致异常。常见的解决方法有:构造函数注入、s…

【编程二三事】ES究竟是个啥?

在最近的项目中,总是或多或少接触到了搜索的能力。而在这些项目之中,或多或少都离不开一个中间件 - ElasticSearch。 今天忙里偷闲,就来好好了解下这个中间件是用来干什么的。 ES是什么? ​ ES全称ElasticSearch,是个基于Lucen…

MySQL 主从复制遇到 1590 报错

作者通过一个主从复制过程中 1590 的错误,说明了 MySQL 8.0 在创建用户授权过程中的注意事项。 作者:王祥 爱可生 DBA 团队成员,主要负责 MySQL 故障处理和性能优化。对技术执着,为客户负责。 本文来源:原创投稿 爱可生…

python 自动化学习(四) pyppeteer 浏览器操作自动化

背景 之前我在工作中涉及到了很多地方都是重复性的页面点点点工作,又因为安全保密原则不开放接口和数据库,只有一个页面来提供点击进行操作,就想着用前面学的自动化来实现,但发现前面学的模拟操作对浏览器来说并没有那么友好&…

AI项目二:基于mediapipe的虚拟鼠标控制

若该文为原创文章,转载请注明原文出处。 一、项目介绍 由于博主太懒,mediapipe如何实现鼠标控制的原理直接忽略,最初的想法是想控制摄像头识别手指控制鼠标,达到播放电影的效果。基本上效果也是可以的。简单的说是使用mediapipe检…

uniApp引入vant2

uniApp引入vant2 1、cnpm 下载:cnpm i vantlatest-v2 -S2、main.js文件引入 import Vant from ./node_modules/vant/lib/vant;Vue.use(Vant);3.app.vue中引入vant 样式文件 import /node_modules/vant/lib/index.css;

JVM——栈和堆概述,以及有什么区别?

方法栈 方法栈并不是某一个 JVM 的内存空间,而是我们描述方法被调用过程的一个逻辑概念。 在同一个线程内,T1()调用T2(): T1()先开始,T2()后开始;T2()先结束,T1()后结束。 堆和栈概述 从英文单词角度来…

代码随想录算法训练营第三十六天 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

代码随想录算法训练营第三十六天 | 435. 无重叠区间,763.划分字母区间,56. 合并区间 435. 无重叠区间:eyes:题目总结:eyes: 763.划分字母区间:eyes:题目总结:eyes: 56. 合并区间:eyes:题目总结:eyes: 435. 无重叠区间 题目链接 视频讲解 给定一个区间的…

云原生 envoy xDS 动态配置 java控制平面开发 支持restful grpc实现 EDS 动态endpoint配置

envoy xDS 动态配置 java控制平面开发 支持restful grpc 动态endpoint配置 大纲 基础概念Envoy 动态配置API配置方式动静结合的配置方式纯动态配置方式实战 基础概念 Envoy 的强大功能之一是支持动态配置,当使用动态配置时,我们不需要重新启动 Envoy…

【uni-app报错】获取用户收货地址uni.chooseAddress()报错问题

chooseAddress:fail the api need to be declared in …e requiredPrivateInf 原因: 小程序配置 / 全局配置 (qq.com) 解决: 登录小程序后台申请接口 按照流程申请即可 在项目根目录中找到 manifest.json 文件,在左侧导航栏选择源码视图&a…

Springboot整合Mybatis调用Oracle存储过程

1、配置说明 Oracel11g+springboot2.7.14+mybatis3.5.13 目标:springboot整合mybatis访问oracle中的存储过程,存储过程返回游标信息。 mybatis调用oracle中的存储过程方式 2、工程结构 3、具体实现 3.1、在Oracle中创建测试数据库表 具体数据可自行添加 create table s…

SIP网络音频模块-sip网络对讲音频模块(提供POE受电模块接口)

SIP网络音频模块-sip网络对讲音频模块(提供POE受电模块接口) SIP网络音频模块SV-2401V网络对讲音频模块(支持POE) SV-2403V网络对讲音频模块_网络语音对讲模块 网络音频模块 双向对讲 SIP广播系统 SIP网络音频模块嵌入式网络对…

YOLOv8改进后效果

数据集 自建铁路障碍数据集-包含路障,人等少数标签。其中百分之八十作为训练集,百分之二十作为测试集 第一次部署 版本:YOLOv5 训练50epoch后精度可达0.94 mAP可达0.95.此时未包含任何改进操作 第二次部署 版本:YOLOv8改进版本 首…

Mongodb基础操作

一、简介 MongoDB是一个NoSQL型的数据库,基于分布式文档型储存数据库,由C语言编写,它的特点是开源、高性能、高可用、高扩展、易部署。支持 Golang、RUBY、PYTHON、JAVA、C、PHP等多种开发语言。 二、应用场景 MongoDB适用于高并发读写、数据…

创新零售,京东重新答题?

继新一轮组织架构调整后,京东从低价到下沉动作不断。 新成立的创新零售部在京东老将闫小兵的带领下悄然完成了整合。近日,京喜拼拼已改名为京东拼拼,与七鲜、前置仓等业务共同承载起京东线上线下加速融合的梦想。 同时,拼拼的更…

FPGA: RS译码仿真过程

FPGA: RS译码仿真过程 在上一篇中记录了在FPGA中利用RS编码IP核完成信道编码的仿真过程,这篇记录利用译码IP核进行RS解码的仿真过程,带有程序和结果。 1. 开始准备 在进行解码的过程时,同时利用上一篇中的MATLAB仿真程序和编码过程&#x…