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

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

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

2b3f0b5480e744379269e22f98dcd070.png

e2426c369af24d45b9ab56da56b95f13.png        但是手上还有有方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 UC20
    GOBI_FIXED_INTF( 0x05c6, 0x9215 ), // Quectel EC20 (MDM9215)
    GOBI_FIXED_INTF( 0x2c7c, 0x0125 ), // Quectel EC20 (MDM9X07)/EC25/EG25
    GOBI_FIXED_INTF( 0x2c7c, 0x0121 ), // Quectel EC21
    GOBI_FIXED_INTF( 0x2c7c, 0x0306 ), // Quectel EP06
    GOBI_FIXED_INTF( 0x2c7c, 0x0435 ), // Quectel AG35
    GOBI_FIXED_INTF( 0x2c7c, 0x0296 ), // Quectel BG96
    GOBI_FIXED_INTF( 0x2c7c, 0x0191 ), // Quectel EG91
    GOBI_FIXED_INTF( 0x2c7c, 0x0195 ), // Quectel EG95	
    GOBI_FIXED_INTF( 0x2c7c, 0x0512 ), // Quectel EG12/EP12/EM12/EG16/EG18,SDx20
    GOBI_FIXED_INTF( 0x2c7c, 0x0620 ), // Quectel EG20,SDx24
    GOBI_FIXED_INTF( 0x2c7c, 0x0800 ), // Quectel RG500Q,RM500Q,RM510Q,SDX55
   //Terminating entry
   { }
};

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

b54ecfdb579346698db429be49e6f23d.png

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

044b5e7cfc974af98d81cd3289ed27d8.png

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

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

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

2764fe3b879245dbb57886c0cb0abdd6.png

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

0b8673a54e4c4d2d9b1b9673117b7815.png

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

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

d7c7f6936567440dba8fc28e3559b725.png

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

725c1576ae1846c9a0d545d305b3efaf.png

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

        quectel-CM拨号试一下

9cfd0b2c57ca4403847af963dc5345d9.png

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

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

10c0e79b008a48a58fcb701967e0102a.png

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

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

e615ef94e0ad4336a58757ad946997a7.png

        重新重新编译一下quectel-CM,使用新的quectel-CM拨号。如下:
966e7a06f8774cfc936e4e1f4505b89f.png

        成功了,哈哈哈。

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

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

ea86df1797d44b019e0292a1d2a3a504.png

40e2748859274538bab2cdee76c5a903.png

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

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

        GobiNet

        CM​​​​​​​

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

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

 

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以按照以下步骤将 quectel-cm 源码放入 OpenWrt 22.03 的 SDK 并编译出 quectel-cm 软件: 1. 首先,确保你已经成功安装了 OpenWrt 22.03 的 SDK,并且已经配置好了环境变量。 2. 下载 quectel-cm源码。你可以从 Quectel 官方网站或者其他可靠的资源站点下载最新版本的 quectel-cm 源码。 3. 将下载的 quectel-cm 源码解压到 SDK 的包目录中。假设你的 SDK 目录为 `~/openwrt-sdk-22.03`,那么解压后的 quectel-cm 源码目录应该是 `~/openwrt-sdk-22.03/package/quectel-cm`。 4. 在 SDK 的根目录下运行以下命令更新软件包列表: ``` $ ./scripts/feeds update ``` 5. 添加 quectel-cm 软件包到 SDK 的软件包列表中: ``` $ ./scripts/feeds install quectel-cm ``` 6. 运行 `make menuconfig` 命令进入 SDK 的配置界面。在界面中找到 `Network`,然后找到 `quectel-cm`,并选中它以编译进固件。 7. 退出配置界面并保存配置。 8. 运行以下命令开始编译固件: ``` $ make -j8 ``` 这里的 `-j8` 表示使用 8 个线程进行编译,你可以根据自己的系统配置进行调整。 9. 等待编译完成。编译过程可能需要一些时间,具体时间取决于你的系统性能和编译选项。 10. 编译完成后,在 SDK 的输出目录中可以找到编译好的 quectel-cm 软件。你可以在 `~/openwrt-sdk-22.03/bin` 目录下找到它。 现在你已经成功将 quectel-cm 源码放入 OpenWrt 22.03 的 SDK 中,并编译出了 quectel-cm 软件。请注意,以上步骤仅适用于 OpenWrt 22.03 版本,其他版本可能会有所不同。如果你遇到任何问题,可以参考 OpenWrt 的文档或社区寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值