IPQ4019 QSDK 下添加RM500Q 5G 驱动 qmi拨号链接网络 配置 IPK包方法

article/2025/11/5 13:34:58

拿到的移远的拨号软件驱动只用qmi方式,GobiNet 似乎没有。

一、运行环境

1.qca-networking-2019-spf-11-0_qca_oem

2.IPQ4019

3.Linux4.4.60

4.USB3.0接口 RM500Q qmi拨号上网

二、移植步骤

1.首先内核Linux4.4.60需要添加的关于RM500Q USB 的PID VID等步骤;

在此文件中 qsdk/build_dir/target-arm_cortex-a7_musl-1.1.16_eabi/linux-ipq_ipq40xx/linux-4.4.60/drivers/usb/serial/option.c 做如下修改。

 240 #define QUECTEL_VENDOR_ID                       0x2c7c
 241 /* These Quectel products use Quectel's vendor ID */
 242 #define QUECTEL_PRODUCT_EC21                    0x0121
 243 #define QUECTEL_PRODUCT_EC25                    0x0125
 244 #define QUECTEL_PRODUCT_RX500Q                  0x0800     //添加此处VID

。。。。。。。

 673 static const struct usb_device_id option_ids[] = {

。。。。。。。

1177         /* Quectel products using Quectel vendor ID */
1178         { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21),
1179           .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1180         { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),
1181           .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1182         /**/
1183         { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RX500Q),//将VID添加此处
1184           .driver_info = (kernel_ulong_t)&net_intf4_blacklist },

 

2.内核添加USB网络配置选项,与EC20无太大差异:

总体来说是这几个驱动添加:

kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch kmod-usb-wdm
步骤:

1).顶层目录qsdk/ 下执行:

# make menuconfig
2).配置 kmod-usb-serial:

Kernel modules --->
USB Support --->
<*> kmod-usb-serial..................... Support for USB-to-Serial converters

3). 配置 kmod-usb-serial-option
Kernel modules --->
USB Support --->
<*> kmod-usb-serial-option................... Support for Option HSDPA modems
4). 配置 kmod-usb-serial-wwan
Kernel modules --->
USB Support --->
-*- kmod-usb-serial-wwan..................... Support for GSM and CDMA modems
5). 配置 kmod-usb-net
Kernel modules --->
USB Support --->
<*> kmod-usb-net............... Kernel modules for USB-to-Ethernet convertors

<*> kmod-usb-wdm.............................. USB Wireless Device Management   //qmi_wwan_q 依赖


6). 配置 usb-modeswitch
Utilities --->
<*> usb-modeswitch................................ USB mode switching utility
7). 最后, 保存退出配置界面即可。

8).内核修改

# make kernel_menuconfig
Device Drivers --->
[*] USB support --->
<*> Support for Host-side USB
Device Drivers --->
[*] Network device support --->
<*> USB Network Adapters --->
<*> Multi-purpose USB Networking Framework

<*>     QMI WWAN driver for Qualcomm MSM based 3G and LTE modems //qmi 要选择此项目,与GobiNet不同的地方
最后, 保存退出配置界面即可。

3.添加qmi 驱动,添加quectel-cm拨号

1).将qmi_wwan_q.tar.gz  https://download.csdn.net/download/weixin_41740391/12736911

解压至 qsdk/package/kernel/ 目录下

2).将 quectel_cm_5G.tar.gz  https://download.csdn.net/download/weixin_41740391/12736902

解压至 qsdk/package 目录下

3).顶层目录qsdk/ 下执行:

# make menuconfig

4).选择kmod-qmi_wwan_q 驱动

Kernel modules  --->

Other modules  --->

<*> kmod-qmi_wwan_q....................... Quectel Linux USB QMI WWAN Driver

5).选择quectel_cm 拨号

Utilities  --->

 <*> quectel-CM-5G............................ quectel-CM-5G app building test

6).保存退出,顶层qsdk/ 下编译

make -j4(4代表使用4线程编译,速度将提高,) V=s

4.下载程序至target 板

set ipaddr 192.168.9.xx
set serverip 192.168.9.xx
ping ${serverip}

内核+dts+文件系统
tftpboot 0x84000000 ipq40xx-nornand-apps.img
imgaddr=0x84000000 && source $imgaddr:script

Flashing ubi:                           [ done ]  完成

5.查看驱动完成情况

root@OpenWrt:/# ls /dev/
出现这

qmi拨号用节点重要,

几个节点后,表示驱动正确安装并且模块正确链接启动。

6.建立网络链接

拨号

root@OpenWrt:/# MobileNet &
root@OpenWrt:/# [08-21_06:13:58:032] Quectel_QConnectManager_Linux_V1.6.0.12
[08-21_06:13:58:041] Find /sys/bus/usb/devices/2-1 idVendor=0x2c7c idProduct=0x800, bus=0x002, dev=0x002
[08-21_06:13:58:043] Auto find qmichannel = /dev/cdc-wdm0
[08-21_06:13:58:043] Auto find usbnet_adapter = rmnet_usb0
[08-21_06:13:58:045] netcard driver = qmi_wwan_q, driver version = V1.2.0.14
[08-21_06:13:58:051] qmap_mode = 1, qmap_version = 9, qmap_size = 31744, muxid = 0x81, qmap_netcard = rmnet_usb0.1
[08-21_06:13:58:052] Modem works in QMI mode
[08-21_06:13:58:106] cdc_wdm_fd = 7
[08-21_06:13:59:111] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[08-21_06:14:00:417] Get clientWDS = 15
[08-21_06:14:00:449] Get clientDMS = 1
[08-21_06:14:00:481] Get clientNAS = 4
[08-21_06:14:00:513] Get clientUIM = 1
[08-21_06:14:00:545] Get clientWDA = 1
[08-21_06:14:00:577] requestBaseBandVersion RM500QGLABR01A01M4G
[08-21_06:14:00:609] qmap_settings.rx_urb_size = 31744[   83.679236] net rmnet_usb0: ul_data_aggregation_max_datagrams=11, ul_data_aggregation_max_size=4096, dl_minim0

[08-21_06:14:00:609] qmap_settings.ul_data_aggregation_max_datagrams  = 11
[08-21_06:14:00:610] qmap_settings.ul_data_aggregation_max_size       = 4096
[08-21_06:14:00:610] qmap_settings.dl_minimum_padding                 = 0
[08-21_06:14:00:737] requestGetSIMStatus SIMStatus: SIM_READY
[08-21_06:14:00:769] requestGetProfile[1] ctnet///0
[08-21_06:14:00:801] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[08-21_06:14:00:833] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[08-21_06:14:00:834] ifconfig rmnet_usb0.1 down
[08-21_06:14:00:842] ifconfig rmnet_usb0.1 0.0.0.0
ifconfig: SIOCSIFFLAGS: Network is down
[08-21_06:14:00:865] requestSetupDataCall WdsConnectionIPv4Handle: 0x77ea2300
[   84.062925] net rmnet_usb0: link_state 0x0 -> 0x1
[08-21_06:14:00:994] ifconfig rmnet_usb0 up
[08-21_06:14:01:003] ifconfig rmnet_usb0.1 up
[08-21_06:14:01:017] you are use OpenWrt?
[08-21_06:14:01:017] should not calling udhcpc manually?
[08-21_06:14:01:018] should modify /etc/config/network as below?
[08-21_06:14:01:018] config interface wan
[08-21_06:14:01:018]    option ifname   rmnet_usb0.1
[08-21_06:14:01:018]    option proto    dhcp
[08-21_06:14:01:018] should use "/sbin/ifstaus wan" to check rmnet_usb0.1 's status?
[08-21_06:14:01:018] busybox udhcpc -f -n -q -t 5 -i rmnet_usb0.1
udhcpc: started, v1.28.3
udhcpc: sending discover
udhcpc: sending select for 10.XX.XX.148
udhcpc: lease of 10.10.3.148 obtained, lease time 7200
[08-21_06:14:01:233] udhcpc: ifconfig rmnet_usb0.1 10.10.3.148 netmask 255.255.255.248 broadcast +
[08-21_06:14:01:241] udhcpc: setting default routers: 10.XX.XX.149

root@OpenWrt:/# ifconfig

rmnet_usb0 Link encap:Ethernet  HWaddr xx:30:xx:xx:54:0D  
          inet6 addr: xxxx::e830:xxxx:fe1a:xxxx/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1220 (1.1 KiB)  TX bytes:1344 (1.3 KiB)

rmnet_usb0.1 Link encap:Ethernet  HWaddr EA:30:xx:1A:xx:0D  
          inet addr:10.xx.3.xxx Mask:255.255.255.248
          inet6 addr: fe80::e830:27ff:fe1a:540d/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1144 (1.1 KiB)  TX bytes:1344 (1.3 KiB)

root@OpenWrt:/# ping 39.156.69.79    (百度服务器,暂时不支持DNS解析,所以要直接ip地址)
PING 39.156.69.79 (39.156.69.79): 56 data bytes
64 bytes from 39.156.69.79: seq=0 ttl=46 time=74.979 ms
64 bytes from 39.156.69.79: seq=1 ttl=46 time=60.377 ms
64 bytes from 39.156.69.79: seq=2 ttl=46 time=84.444 ms
64 bytes from 39.156.69.79: seq=3 ttl=46 time=78.524 ms
^C
--- 39.156.69.79 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 60.377/74.581/84.444 ms
root@OpenWrt:/#

7.增加DNS服务器解析IP地址功能

修改 /etc/config/network

config interface 'lan'
        option ifname 'eth1'
        option force_link '1'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.4.1'
        option netmask '255.255.255.0'
        option dns '114.114.114.114'    //DNS解析服务器
        option ip6assign '60'
        option multicast_querier '0'
        option igmp_snooping '0'

保存退出重启

root@OpenWrt:/# ping baidu.com
PING baidu.com (39.156.69.79): 56 data bytes
64 bytes from 39.156.69.79: seq=0 ttl=46 time=65.009 ms
64 bytes from 39.156.69.79: seq=1 ttl=46 time=57.406 ms
64 bytes from 39.156.69.79: seq=2 ttl=46 time=84.851 ms
64 bytes from 39.156.69.79: seq=3 ttl=46 time=80.766 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 57.406/72.008/84.851 ms
root@OpenWrt:/#

8.此时只用设备本体可以上网,LAN口和WiFi均无法上网,根据拨号部分显示内容

[08-21_06:14:01:018] should modify /etc/config/network as below?
[08-21_06:14:01:018] config interface wan
[08-21_06:14:01:018]    option ifname   rmnet_usb0.1
[08-21_06:14:01:018]    option proto    dhcp

所以修改 /etc/config/network

config interface 'wan'
        option ifname 'rmnet_usb0.1'
        option proto 'dhcp'

保存重启

此时即可用电脑链接LAN口,接通网络了。

9.注意此处用的SIM卡任然是4G的套餐服务,由于本人的5G套餐卡没到货,故4G先调通。

 

 


http://chatgpt.dhexx.cn/article/mw8QlrwB.shtml

相关文章

高通IPQ4019 IPQ4029 模块+底板双频 AC无线路由模块开发板

1、简介 采用 PH2.0 双排针插拔简易安装方式&#xff0c;可以通过连接不同种类的接口板设计&#xff0c;可以扩展无线路由、网络存储、广告热点、4G、DTU 数据传输、串口转 WIFI、远程监控等多功能产品应用&#xff1b;最大程度简化了无线网络产品开发设计过程。 可以根据客户…

wifi5 router/ wallys/IPQ4019 IPQ4029 ,802.11AC 2x2 2.4G5G/IPQ5018, 802.11ax,wifi 6e,QCN9074

IPQ4019 IPQ4029 ,802.11AC 2x2 2.4G&5G ​​​​​​2x2 2.4Ghz&5G IPQ5018, 802.11ax,wifi 6e,QCN9074, 2X2 2.4G support 2x WiFi 6E Card support BT5.1 MT7915/MT7975/IPQ6000/IPQ6018/IPQ6010/IPQ4019/IPQ4029/ipq4018/IPQ4028/IPQ8072/IPQ8072A/IPQ8074/IPQ…

IPQ4019MTD分区生成的过程

简介 本文介绍一个IPQ4019的MTD分区信息是如何从配置文件一步步传递到linux内核的。这个过程有几个部分组成&#xff0c;分区信息在编译过程中的传递&#xff1b;升级时写入flash区&#xff1b;设备上电时linux如何得到分区信息。 上电后linux打印的MTD分区如下图。 分区信息在…

修改IPQ4019/4018的MTD分区

简介 高通的IPQ4018的SoC使用了ARM的CPU&#xff0c;并使用了高通的QSDK. 在开发中发现很难在它的架构中去修改MTD分区信息。 今天就提供一种可以修改MTD分区的方式。 MTD分区信息是如何从Uboot传到linux的&#xff0c;有几种方式&#xff1f; 换一种问法 uboot如何把参数传入l…

IPQ4019/QCA9531/MT7628/MT7621系嵌入式无线双频AP核心模块选型探讨

嵌入式双频无线AP核心模块,首先是核心模块,不是成品主板,也可以认为是成品的核心部分&#xff0c;或者理解成只带方便延伸的接口功能&#xff0c;不带外围实际接口的成品&#xff0c;实际使用时&#xff0c;可以根据所需要的接口灵活选择(未必要使用全部接口)&#xff1b;功能上…

ARM 汇编语言

1. 什么是汇编语言&#xff1f; 计算机处理器&#xff0c;执行的是 二进制的 10101010001&#xff0c;这些机器码对应的助记符就是汇编指令。 处理器 fetch 到的指令是 1001010101, 可能就是 对应汇编语言中 ADD 的加法指令&#xff0c; 处理器执行 加法操作&#xff0c;并把…

利用keil完成ARM汇编语言编程入门实践

文章目录 一、安装keil软件1.下载安装包2.安装keil3.安装stm32 pack 二、简单的stm汇编语言的编程1.新建工程项目2、新建main.c文件3.编译4.stm32仿真调试5.hex文件分析解读 一、安装keil软件 1.下载安装包 下载安装mdk5软件和stm32包&#xff08;链接&#xff1a;https://pa…

如何在ARM下进行高效的C编程?

通过一定的风格来编写C程序&#xff0c;可以帮助C编译器生成执行速度更快的ARM代码。下面就是一些与性能相关的关键点&#xff1a; 1.对局部变量、函数参数和返回值要使用signed和unsigned int类型。这样可以避免类型转换&#xff0c;而且可高效地使用ARM的32位数据操作指令。 …

## ARM基础编程实验

ARM基础编程实验 作者&#xff1a; Saint 掘金&#xff1a;https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博&#xff1a;https://weibo.com/5458277467/profile?topnav1&wvr6&is_all1 GitHub&#xff1a;github.com/saint-000 CSDN: https://me.csdn.net/qq_4…

ARM汇编编程基础

(一) -- ARM CPU寄存器 本系列文章节选自本人所著《深入浅出嵌入式底层软件开发》。 本系列文章&#xff0c;所需代码请从以下地址下载: http://download.csdn.net/download/scyangzhu/4602585 ARM的汇编编程&#xff0c;本质上就是针对&#xff23;&#xff30;&#…

搭建Keil编程环境,ARM汇编语言编程入门实践

多看多学 一、安装及配置环境01 型号分类及缩写02 资料共享03 安装器件支持包04 Keil简单设置 二、简单程序编译01 新建工程02 配置环境03 添加源文件04 设置仿真器模式05 编译调试06 分析Hex文件 三、中值滤波及程序设计01 中值滤波02 流程框图03 程序设计 四、总结参考资料 一…

ARM编程环境搭建教程

随着移动互联网的繁荣发展&#xff0c;物联网人工智能的兴起&#xff0c;嵌入式开发成为了越来越多IT人必须学习的内容&#xff0c;而在嵌入式芯片领域&#xff0c;ARM具有无可撼动的市场占有率&#xff0c;所以说&#xff0c;学习嵌入式不学ARM&#xff0c;不如回家卖红薯。 接…

嵌入式ARM设计编程(四) ARM启动过程控制

文章和代码已归档至【Github仓库&#xff1a;hardware-tutorial】&#xff0c;需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 &#xff08;1&#xff09; 掌握建立基本完整的ARM 工程&#xff0c;包含启动代码&#xff0c;C语言程序等&…

《嵌入式基础》实验三 ARM编程模型和ARM指令

零、前言 本人不擅长写汇编相关的东西&#xff0c;所以以下内容也是不断摸索&#xff08;百度 &#xff09; 整出来的&#xff0c;和linux的实验报告的质量相比较低。 一、 实验目的 掌握ARM微处理器的汇编指令的使用方法。掌握使用 LDM/STM&#xff0c;B&#xff0c;BL 等指…

嵌入式ARM设计编程(一) 简单数据搬移

文章和代码已归档至【Github仓库&#xff1a;hardware-tutorial】&#xff0c;需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 熟悉实验开发环境&#xff0c;掌握简单ARM汇编指令的使用方法。 二、实验环境 硬件&#xff1a;PC机 软件&am…

ARM汇编语言编程入门实践

文章目录 一、keil的安装二、安装stm32 pack三、keil 的简单设置四、基于STM32汇编程序的编写4.1 新建工程4.2 新建test.s文件4.3 编译程序4.4 分析HEX文件 五、总结六、参考资料 一、keil的安装 双击打开mdk_510.exe应用程序文件&#xff0c;点击Next>>。勾选I agree……

ARM体系结构与编程模型总结

ARM体系结构与编程模型 ARM体系结构 一、ARM处理器简介及RISC特点 ARM处理器简介 ARM&#xff08;Advanced RISC Machines&#xff09;是一个32位RISC&#xff08;精简指令集&#xff09;处理器架构&#xff0c;ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多…

数学建模-层次分析法(评价模型)

层次分析法概述 层次分析法的步骤和方法 1. 建立层次结构模型 2. 构造判断(成对比较)矩阵 3. 层次单排序及其一致性检验 4. 层次总排序及其一致性检验 总结 应用层次分析法的注意事项 举例 层次分析法代码实现 disp(输入判断矩阵C) Cinput(C); %输入矩阵 [n,n] size(C);%…

数学建模-层次分析模型

层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次…

数学建模-层次分析法

个人主页&#xff1a; 个人主页 系列专栏&#xff1a; 数学建模 目录 前言 一、引入 二、层析分析法 1.思想介绍 2.判断矩阵 3.一致矩阵 4.一致性检验 5.一致性检验步骤&#xff08;两张图片告诉你&#xff09; 6.计算权重 一致矩阵计算权重&#xff1a; 判断矩阵计…