修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块

2023-12-08 17:52

本文主要是介绍修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        最近在研究imx6ull linux下4G模块驱动的移植,参考的移远ec20的移植方法,添加了GobiNet驱动,编译了quectel-CM工具,并且可以正常拨号,分配到ip,如下:        

        ping外网也没有压力,如下:

        但是手上还有有方N720 4G模块,可以通过pppd拨号上网,感觉比较麻烦,如果换模块了还要调用不同的ppp拨号脚本,想着能不能也和移远一样,通过quectel-CM这个直接拨号。想法很好,但是实现起来不是很容易哈。

        通过多方渠道,主要是百度,并没有找到有方官方提供的相关源码,昨天突发奇想,能不能研究一下移远的源码,看看能不能改一下呢,使其满足要求呢?毕竟GobiNet不是移远独有的,它是高通的产物。

       联想到移植驱动时都和idVendor idProduct这两个有关,移远EC20的是2C7C 0125 ,有方N720的是2949 8247 。

        我想一定和这个有关,那就打开源码看一下吧。在GobiUSBNet.c中全局搜索2C7C或者0125,找到如下代码:        

static const struct usb_device_id QuecGobiVIDPIDTable [] =
{GOBI_FIXED_INTF( 0x05c6, 0x9003 ), // Quectel UC20GOBI_FIXED_INTF( 0x05c6, 0x9215 ), // Quectel EC20 (MDM9215)GOBI_FIXED_INTF( 0x2c7c, 0x0125 ), // Quectel EC20 (MDM9X07)/EC25/EG25GOBI_FIXED_INTF( 0x2c7c, 0x0121 ), // Quectel EC21GOBI_FIXED_INTF( 0x2c7c, 0x0306 ), // Quectel EP06GOBI_FIXED_INTF( 0x2c7c, 0x0435 ), // Quectel AG35GOBI_FIXED_INTF( 0x2c7c, 0x0296 ), // Quectel BG96GOBI_FIXED_INTF( 0x2c7c, 0x0191 ), // Quectel EG91GOBI_FIXED_INTF( 0x2c7c, 0x0195 ), // Quectel EG95	GOBI_FIXED_INTF( 0x2c7c, 0x0512 ), // Quectel EG12/EP12/EM12/EG16/EG18,SDx20GOBI_FIXED_INTF( 0x2c7c, 0x0620 ), // Quectel EG20,SDx24GOBI_FIXED_INTF( 0x2c7c, 0x0800 ), // Quectel RG500Q,RM500Q,RM510Q,SDX55//Terminating entry{ }
};

        多么的熟悉呀,添加linux 4G模块驱动的时候好像也有和这个差不多的东西,如下:

        果断将有方n720的添加进去,编译一下行不行。

        使用没有添加有方N720支持的内核启动设备后如下,并没有GobiNet相关的提示。

        使用添加有方N720支持的内核启动设备后如下,就有GobiNet相关的提示了。这个证明我的想法的正确的。

        使用quectel-CM工具试一下看看能不能拨号成功,好家伙,竟然没成功。报错了,如下:

        初步猜测应该是GobiUSBNet.c文件里应该还有其他与idVendor idProduct相关的操作,继续搜索2c7c,发现如下代码:

        这个应该就是关键部分,因为其他的地方都没有2c7c相关的内容了,通过上下文引用知道

pGobiDev->mbMdm9x07 pGobiDev->mbMdm9x06是一个bool类型,就是一个标志,代表不同的模块类型,同时pGobiDev->mbMdm9x06上下文中只有这个地方使用了,那这个就应该不需要考虑了。那就从pGobiDev->mbMdm9x07下手了,仿照原来的代码将有方n720的也加进去,改成如下:

        重新编译内核启动,如下:

        竟然多了一句creating qcqmi0,这个足以证明上面的改动有对了。

        quectel-CM拨号试一下

        虽然成功拨号了,但是发现缺少

        Find /sys/bus/usb/devices/1-1 idVendor=2c7c idProduct=0125这个提示,应该是quectel-CM源码也需要修改。打开源码,在main.c文件中搜索2c7c,果然发现了秘密,如下:

        2c7c是移远EC20模块的idVendor ,05c6是QUALCOMM(高通)的idVendor ,这个说明了

quectel-CM源码也不是移远独创的,也是用的高通的源码。既然如此,那就将有方N720的加上,如下:

        重新重新编译一下quectel-CM​​​​​​​,使用新的quectel-CM拨号。如下:

        成功了,哈哈哈。

        不仅分配了ip,启动了usb0网卡,还有了Find /sys/bus/usb/devices/1-1 idVendor=2949 idProduct=8247提示。

        试一下ping外网完全无压力,如下:

        至此,我认为GobiNet及quectel-CM支持有方N720 4G模块的修改工作应该是完成了。

        修改后的源码可以通过如下链接下载

        GobiNet

        CM​​​​​​​

        这个只是我自己研究测试使用,至于稳定性还需要验证,如果谁用了我修改的源码,导致项目或者设备出问题的概不负责。

        理论上市面上的4G模块都可以通过这样修改来实现支持。

这篇关于修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/470800

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas