RK3568移植5G通信模组

news2025/7/17 5:40:43
  1. 5G通信模组

这次移植的5G通信模组选择的是深圳广和通公司生产的FG650 5G通信模组,对外的通信数据接口为USB2.0, USB3.0两个接口。FG650模组默认工作在NCM驱动模式,如果不是可以通过串口发送AT指令AT+GTUSBMODE=36来修改成工作在NCM模式。

  1. linux内核代码的修改

可以根据厂家的提供的《FIBOCOM Fx650 & FG652系列 ECM & NCM & RNDIS拨号指南 _Linux》文档说明来进行,

内核代码的修改主要修改就2个点。

A.打开内核源码文件 打开内核源码文件 打开内核源码文件 打开内核源码文件 打开内核源码文件 option.c(路径一般为 路径一般为 路径一般为 drivers/usb/serial/option.c)。在源码中找到 。在源码中找到 。在源码中找到 。在源码中找到 。在源码中找到 option_ids数组, 数组, 在数组中添加 在数组中添加 在数组中添加 FG650的 PID/VID。 注意 ECM/NCM/RNDIS等不同模式下的 等不同模式下的 等不同模式下的 等不同模式下的 PID是不一样的。需要根据模 是不一样的。需要根据模 是不一样的。需要根据模 是不一样的。需要根据模 是不一样的。需要根据模 是不一样的。需要根据模 是不一样的。需要根据模 是不一样的。需要根据模 组的 模式添加相应组的 模式添加相应组的 模式添加相应组的 模式添加相应组的 模式添加相应PID/VID(请参考 (请参考 (请参考 USB端口章节),或者可以把 端口章节),或者可以把 端口章节),或者可以把 端口章节),或者可以把 端口章节),或者可以把 端口章节),或者可以把 端口章节),或者可以把 FG650支持的所有模式 支持的所有模式 支持的所有模式 支持的所有模式 ID都添加上 都添加上 都添加上去。

#define FIBOCOM_ VENDOR_ID 0x2CB7 
#define FIBOCOM_PRODUCT_FG650_ECM 0x0A04 
#define FIBOCOM_ PRODUCT_FG650_NCM 0x0A05 
#define FIBOCOM_ PRODUCT_FG650_RNDIS 0x0A06 static const struct usb_device_id option_ids[] = { 
#if 1 
{ USB_DEVICE(FIBOCOM_ VENDOR_ID, FIBOCOM_PRODUCT_FG650_ECM) }, 
{ USB_DEVICE(FIBOCOM_ VENDOR_ID, FIBOCOM_ PRODUCT_FG650_NCM) }, 
{ USB_DEVICE(FIBOCOM_ VENDOR_ID, FIBOCOM_ PRODUCT_FG650_RNDIS) },
#endif

B. 在 USB串口驱动中,过滤 串口驱动中,过滤 串口驱动中,过滤 串口驱动中,过滤 串口驱动中,过滤 ECM/NCM/RNDIS接口。由于 接口。由于 USB串口跟 串口跟 ECM/NCM/RNDIS都属于 都属于 非标准 CDC设备,需要防止 设备,需要防止 设备,需要防止 设备,需要防止 设备,需要防止 设备,需要防止 设备,需要防止 ECM/NCM/RNDIS口被 USB串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常串口驱动加载 而导致无法正常ECM/NCM/RNDIS口驱动。对于linux内核版本在3.8以上的推荐在probe函数内判断当前的interface num进行过滤,具体如下:

if (serial->dev->descriptor.idVendor == cpu_to_le16(FIBOCOM_ VENDOR_ID) && serial->dev->descriptor.idProduct == cpu_to_le16(FIBOCOM_PRODUCT_FG650_ECM) && serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1) 
{ 
    printk(KERN_INFO “Discover the 4th interface for fibocom\n”); 
    return -ENODEV;
}
if (serial->dev->descriptor.idVendor == cpu_to_le16(FIBOCOM_ VENDOR_ID) && serial->dev->descriptor.idProduct == cpu_to_le16(FIBOCOM_ PRODUCT_FG650_NCM) &&
serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1) 
{ 
    printk(KERN_INFO “Discover the 4th interface for fibocom\n”); 
    return -ENODEV;
}
if (serial->dev->descriptor.idVendor == cpu_to_le16(FIBOCOM_ VENDOR_ID) && serial->dev->descriptor.idProduct == cpu_to_le16(FIBOCOM_ PRODUCT_FG650_RNDIS) && serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1) 
{ 
    printk(KERN_INFO “Discover the 4th interface for fibocom\n”); 
    return -ENODEV;
}

另外5G模组上电后,要通过POWER_KEY按键来进行开机操作,这个可以通过shell脚本程序如下操作IO来实现,另外注意5G模组的USB接口的VBUS信号要保持5V供电,否则USB连接一会后,5G模组会主动断开。

#!/bin/bash

case $1 in
power_on)
        echo "--------- control 5G module power on-----------"
        #5G module powerkey low level for 1s-2.5s startup
        echo 1 > /sys/class/leds/5G-powerkey/brightness
        sleep 1.5
        echo 0 > /sys/class/leds/5G-powerkey/brightness
        #reset the 5G module low level for 40ms-750ms
        echo 1 > /sys/class/leds/5G-reset/brightness
        sleep 0.5
        echo 0 > /sys/class/leds/5G-reset/brightness

        #USB VBUS power on
        echo 1 > /sys/class/leds/5G-USB-VBUS/brightness

        echo "-------------5G module alread open -------------"
        ;;
power_off)
        echo "--------- control 5G module power off-----------"
        #5G module powerkey low level for 3s-7s startup
        echo 1 > /sys/class/leds/5G-powerkey/brightness
        sleep 4
        echo 0 > /sys/class/leds/5G-powerkey/brightness
        #5G USB VBUS power off
        echo 0 > /sys/class/leds/5G-USB-VBUS/brightness

        echo "-------------5G module alread close -------------"
        ;;
*)
        echo "please input the $0 {power_on or power_off}"
        ;;
esac

3. 5G模组枚举

5G模组执行开机操作后,linux操作系统会对5G模组进行枚举,这个过程是先通过USB2.0接口进行枚举,之后通过USB2.0接口进行3.0接口的枚举。整个过程如下图:

枚举后可以通过lsusb来查看设备;

通过上图可以看到5G模组已经正常枚举成功了,可以通过ifconfig来查看5G网卡。

4. 5G模组拔号上网

经过上面的操作,5G网卡已经出来了,但是执行ping -I enx8ec564fd4e18 www.baidu.com,ping不通,这是由于5G模组未进行拔号,无法连接到公网。

5G模组的AT指令串口虚拟为ttyUSB0,在调试阶段,先执行cat /dev/ttyUSB0 & 运行一个后台程序来读取AT串口, 发送指令可以通过echo -e "at\r" > /dev/ttyUSB0的方式来发送AT指令后模组。

拔号流程可以参考厂家文档,其中上网的最关键的一步操作就是使用用 AT+GTRNDIS=1,1 激活上网,激活成功后返回IP地址就表示上网了。

到此5G网卡已经可以连接外网,完成了调试,拔号的过程是AT指令的操作,建议最后写成程序来控制拔号,模组的开机,关机操作等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TX Text Control .NET Server for ASP.NET 31.0 SP2 CRK

用于 ASP.NET 31.0 SP2 的 TX 文本控件 .NET 服务器 用于 ASP.NET 的 TX 文本控件 .NET 服务器 TX Text Control Server for ASP.NET 是用于 Web 应用程序或服务的服务器端组件。它是一个完全可编程的 ASP.NET 文字处理器引擎&#xff0c;提供了广泛的文字处理功能。使用 TX Te…

MySQL Administrator定时备份MySQL数据库

1、下载并安装软件mysql-gui-tools-5.0-r17-win32.exe 2、将汉化包zh_CN文件夹拷贝到软件安装目录 3、菜单中打开MySql Adminstrator&#xff0c;见下图&#xff0c;初次打开无服务实例。 点击已存储连接右侧按钮①&#xff0c;打开下图对话框。点击“新连接”按钮&#xff…

构建matter over Thread的演示系统-efr32

文章目录1. 简介2. 构建测试系统2.1设置 Matter Hub(Raspberry Pi)2.2 烧录Open Thread RCP固件2.3 烧录待测试的matter设备3. 配网和测试&#xff1a;3.1 使用mattertool建立Thread网络3.2 使用mattertool配置设备入网3.3 使用mattertool控制matter设备3.4 查看节点的Node ID等…

如何高效管理自己的时间,可以从这几个方向着手

如果你是上班族&#xff0c;天选打工人&#xff0c;你的绝大多数时间都属于老板&#xff0c;能够自己支配的时间其实并不多&#xff0c;所以你可能察觉不到时间管理的重要性。但如果你是自由职业者或者创业者&#xff0c;想要做出点成绩&#xff0c;那你就需要做好时间管理&…

Ingress-nginx 部署及模拟实战

写在最前面&#xff0c;博主希望大家看这篇文章过程中&#xff0c;重点看实例演示&#xff0c;因为我觉得部署安装&#xff0c;网上千篇一律&#xff0c;如果按照网上的教程安装不成功&#xff0c;要么网上省略了一部分没写&#xff0c;要么你的基础环境和人家的不一样&#xf…

web接入大华摄像头实时视频

目录 一、FFmpeg下载及配置​​​​ 二、nginx下载及配置 三、摄像rtsp取流 四、ffmpeg推流 五、html前端工作 一、FFmpeg下载及配置​​​​ 地址&#xff1a;Download FFmpeg 下载并解压FFmpeg文件夹&#xff0c;配置环境变量&#xff1a;在“Path”变量原有变量值内容…

直播平台的视频美颜sdk是什么?

直播平台的视频美颜sdk是什么&#xff0c;可以做什么&#xff1f;简而言之&#xff0c;直播美颜sdk是将直播平台的视频美颜效果做成一个sdk&#xff0c;给用户提供美颜效果选择&#xff0c;同时提供不同的视频分辨率&#xff0c;可以让用户在观看直播时有更好的体验。那么具体有…

230224-Zotero-坚果云-MacOS/PadOS同步注意事项

Background Zotero的设置参考了这篇文章&#xff0c;随时随地看文献 —— Zotero 与 iPad 的巧妙搭配&#xff08;wiz坚果云&#xff09; 注意事项1 路径&#xff1a; 可自定义或使用默认路径&#xff08;记得在坚果云根目录下创建zotero文件夹&#xff09;密码&#xff1a;…

良许也成为砖家啦~

大家好&#xff0c;我是良许。 没错&#xff0c;良许成为砖家啦&#xff0c;绝不是口嗨&#xff0c;有图有真相&#xff01; 有人会说&#xff0c;咦&#xff0c;这明明是严宇啊&#xff0c;跟你良许有啥关系&#xff1f; 额。。老读者应该知道良许的来历—— 鄙人真名严宇&a…

一文深入分析-内核并发消杀器(KCSAN)

一、KCSAN介绍 KCSAN(Kernel Concurrency Sanitizer)是一种动态竞态检测器&#xff0c;它依赖于编译时插装&#xff0c;并使用基于观察点的采样方法来检测竞态&#xff0c;其主要目的是检测数据竞争。 KCSAN是一种检测LKMM(Linux内核内存一致性模型)定义的数据竞争(data race…

DataWhale 大数据处理技术组队学习task4

五、分布式并行编程模型MapReduce 1. 概述 1.1 分布式并行编程 背景&#xff1a;摩尔定律已经开始逐渐失效&#xff0c;提升数据处理计算能力刻不容缓。传统的程序开发与分布式并行编程 传统的程序开发&#xff1a;以单指令、单数据流的方式顺序执行&#xff0c;虽然这种方式…

重走前端路JS进阶篇:This 指向与箭头函数

JavaScript 高级 This 指向规则 案例 function foo() {console.log(this)}// 1 调用方式1foo();// 2 调用方式2 放入对象中调用var obj {name: "why",foo: foo}obj.foo()// 调用方式三 通过 call/apply 调用foo.call("abc")指向定义 this 是js 给函数的…

SQL零基础入门学习(十)

SQL零基础入门学习&#xff08;九&#xff09; SQL CREATE DATABASE 语句 CREATE DATABASE 语句用于创建数据库。 SQL CREATE DATABASE 语法 CREATE DATABASE dbname;SQL CREATE DATABASE 实例 下面的 SQL 语句创建一个名为 “my_db” 的数据库&#xff1a; CREATE DATAB…

内网solr全文搜索服务器,快解析一步映射让外网访问

Solr&#xff0c;指apache solr&#xff0c;其全称为Search On Lucene Replication。Solr&#xff0c;是一个高性能&#xff0c;采用java开发&#xff0c;基于Lucene的全文搜索服务器。同时对其进行了扩展&#xff0c;提供了比Lucene更为丰富的查询语言&#xff0c;同时实现了可…

算法练习-栈和队列(二)

算法练习-栈和队列(二) 文章目录算法练习-栈和队列(二)1.计算器1.1 题目1.2 题解2. 删除字符串中所有相邻重复项2.1 题目2.2 题解3 栈的压入、弹出序列3.1 题目3.2 题解4 每日温度4.1 题目4.2 题解4.2.1 暴力解法&#xff08;超出时间限制&#xff09;4.2.2单调栈5 接雨水&…

i2c子系统

i2c 硬件协议 Linux 应用层读写i2c 数据 在Linux系统上&#xff0c;不仅可以在内核中使用 i2c 总线发送、接收数据&#xff0c;同时也支持应用层使用i2c 总线发送、接收。 如果在内核中使能了drivers/i2c/i2c-dev.c 配置&#xff0c;内核就会为每一个i2c 控制器生成一个/dev/…

如何使评论具有可操作性?取悦客户的指南

永远不要低估承认的力量。 当品牌与客户互动时&#xff0c;认可会带来更好的关系和更好的沟通。与买家和客户建立更多的个人联系意味着品牌需要证明他们支持他们的产品和客户。评论是利用客户分享他们的故事的那些时刻的绝佳机会。 为什么评论在 SaaS 中至关重要 在 B2B 软件的…

robot framework + python实现http接口自动化测试框架

前言 下周即将展开一个http接口测试的需求&#xff0c;刚刚完成的java类接口测试工作中&#xff0c;由于之前犯懒&#xff0c;没有提前搭建好自动化回归测试框架&#xff0c;以至于后期rd每修改一个bug&#xff0c;经常导致之前没有问题的case又产生了bug&#xff0c;所以需要…

金仓数据库安装

一、麒麟操作系统安装金仓数据库 操作系统 DISTRIB_IDKylin DISTRIB_RELEASEV10 DISTRIB_CODENAMEjuniper 按照安装文档的步骤安装&#xff0c;记得记住设置的数据库的用户名、密码 二、window安装连接数据库的工具软件 三、jdbc连接数据库 &#xff08;1&#xff09;连接工…

分享10个非常不错的封面设计模板

封面设计很关键&#xff0c;这决定了用户是否愿意更进一步了解作品或者产品。从布局结构到文字排版和配色&#xff0c;好的封面设计一定是涉及多方面的综合加持。今天给大家整理很多优质的封面设计案例&#xff0c;可以免费商用&#xff0c;包括了&#xff1a;磨砂风格封面、玻…