1. 简介

  • 中国广电正式放号了,为了支持广电700MHz的5G基站,需要换用新的5G模组.移远通信的RM500U模组正好可以满足我们的使用要求;
  • 我们选用该模组的原因:双卡单待 支持SIM卡热插拔 支持中国广电700MHz基站 版本升级方便
  • 具体参数请到公司官网查看吧> https://www.quectel.com/cn/product/5g-rm500u-cn

2. 编译驱动

2.1 获取驱动包

  • 不用多说,请联系厂商获取

2.2 选择合适的版本

  • 解压
tar -xvf Quectel_Linux_USB_Serial_Option_Driver_20211012.tgz
  • 解压成功后,会产生一个目录20211012,其中存放着各个版本的驱动源码,如下

  • 根据自己的内核版本,选择相应版本的驱动.比如我的内核版本是3.17.0,我就选择v3.17.1版本的驱动
# 查看内核版本
$ uname -a
Linux (none) 3.17.0-xilinx #1 SMP PREEMPT Fri Nov 3 11:57:52 CST 2017 armv7l GNU/Linux # 选择版本最接近的驱动
$ cd 20211012/v3.17.1/

2.3 修改驱动源码

  • 奇怪,移远提供的源码包默认竟然不支持RM500U-CN模组,还需要自己在源码中手动添加对RM500U-CN模组的支持,难道是因为这个模组比较新,驱动还未更新?(2022/7/16)
  • 修改驱动源码路径下的drivers/usb/serial/option.c,添加对RM500U-CN模组的支持
  • linux下lsusb命令可以看到模组对应的PIDVID分别为0x2C7C0x0900,将其添加到option.coption_ids[]数组中,如下图:

2.4 创建驱动安装目录

  • 因为并不是在编译机上进行安装,需要进行交叉编译,因此创建一个驱动的安装目录,便于后续驱动移植
$ make install

2.5 交叉编译

  • 修改Makefile如下:
# 指明内核源码路径,这里因为有些敏感信息,我隐藏了一部分路径,修改成自己的源码路径即可
KERNELDIR := /***/***/***/***/***/kernel/build/linux-***-v2014.4 # 内核源码路径
PWD := $(shell pwd) obj-m+=./drivers/usb/serial/option.o
obj-m+=./drivers/usb/serial/usb_wwan.o
obj-m+=./drivers/usb/serial/qcserial.o modules: clean
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules install: modules
# 这里表示编译完成后,执行make install时将驱动拷贝到步骤2.4自定义的路径下
cp $(PWD)/drivers/usb/serial/*.ko ./install clean:
$(MAKE) -C $(KERNELDIR) M=$(PWD) clean
  • 开始编译,指定交叉编译工具
# make install ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
  • 等待编译完成,查看驱动安装目录:
$ ls install/
option.ko qcserial.ko usb_wwan.ko
  • 编译完成

3. 安装驱动

3.1 将编译好的驱动拷贝到目标机上,安装之

# insmod usb_wwan.ko
# insmod option.ko
# insmod qcserial.ko

3.2 检查驱动是否正常

  • 驱动安装完成后,正常情况下就会在/dev目录下产生5个ttyUSB,dmesg如下:
# dmesg | grep ttyUSB*
[ 1121.543526] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB9
[ 1121.593404] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB10
[ 1121.614269] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB11
[ 1121.655317] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB12
[ 1121.684846] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB13
  • 如果驱动安装过程中没有报错,但是模组没有识别,重新给模组上下电试试

4. 问题排查

Q:驱动安装正常,设备节点也正常,但是ifconfig看不到5G模组对应的interface,这是什么原因呢?

  • 因为RM500U-CN模组默认使用的是USB NCM驱动,但是我司的嵌入式设备上使用的是cdc_ether驱动,需要修改5G模组的模式
  • 使用minicom 或 microcom输入如下AT指令,并重启模组(minicom或microcom如何使用这里就不赘述了,网上资料一大堆):
# minicom -D /dev/ttyUSB11
AT+QCFG="usbnet",1 # 重启模组生效
  • 模组重启后,dmesg可以看到如下信息:说明usb0就是5G模组对应的interface
[ 1121.500432] cdc_ether 1-1.1:1.0 usb0: register 'cdc_ether' at usb-zynq-ehci.0-1.1, CDC Ethernet Device, 3e:37:f1:99:c9:6e

5. 常用AT指令

#查询卡是否成功识别
AT+CPIN?
+CPIN: READY OK #查询APN
AT+CGDCONT?
+CGDCONT: 1,"IPV4V6","3gnet","0.0.0.0",0,0,0,0,,,,,,0,,,0,,0,0,0,0
+CGDCONT: 11,"IPV4V6","ims","0.0.0.0",0,0,0,0,,,,,,0,,,0,,0,0,0,0 OK #查询运营商
AT+QSPN
+QSPN: "CHN-UNICOM","UNICOM","CHN-UNICOM",0,"46001" OK #设置APN
AT+CGDCONT=1,"IP","3gnet"
OK #查询网络信息:访问计数,运营商,频段
AT+QNWINFO
+QNWINFO: "FDD LTE",46001,"LTE BAND 3",1506
+QNWINFO: "NR5G-NSA",46001,"",0 OK #查询网络配置优先级
AT+QNWPREFCFG="mode_pref"
+QNWPREFCFG: "mode_pref",AUTO OK #设置NSA入网
AT+QNWPREFCFG="mode_pref",NR5G-NSA
OK #设置SA入网
AT+QNWPREFCFG="mode_pref",NR5G-SA
OK #设置模组自动选择入网方式及优先级
AT+QNWPREFCFG="mode_pref",AUTO
OK #拨号
AT+QNETDEVCTL=1,1,0
OK #查询IP
AT+CGPADDR
+CGPADDR: 1,"10.66.98.208"
+CGPADDR: 11,"" OK #查询信号强度NSA
AT+QENG="servingcell"
+QENG: "servingcell", "NOCONN"
+QENG: "LTE","FDD",460,01,B61D52,312,350,1,3,3,184B,-88,-9,-62,8,12,0,37
+QENG: "NR5G-NSA",460,01,589,-88,17,-3,627264,78,0,6219,1 OK #查询信号强度SA
AT+QENG="servingcell"
+QENG: "servingcell","NOCONN","NR5G-SA","TDD",460,11,596961006,341,590E02,627264,78,100,-88,-10,5,20,28,1 OK #查询运营商
AT+QSPN
+QSPN: "CHN-UNICOM","UNICOM","CHN-UNICOM",0,"46001" OK #查询运营商的另一种方法
AT+COPS=3,1
OK
AT+COPS?
+COPS: 0,1,"CUCC",13 OK #查询当前使用的卡槽
AT+QUIMSLOT?
+QUIMSLOT: 1 OK #切换为卡槽2
AT+QUIMSLOT=2
OK #切换为卡槽1
AT+QUIMSLOT=1
OK #查看模组温度
AT+QTEMP
+QTEMP: "soc-thermal","33"
+QTEMP: "pa-thermal","31"
+QTEMP: "pa5g-thermal","31"
+QTEMP: "board-thermal","32" OK #设置用户名,密码,鉴权方式
AT+QICSGP=1,3,"3gnet","cogent","cogent",2
OK #查询用户名,密码,鉴权方式
AT+QICSGP?
+QICSGP: 1,1,"cmnet","user","passwd",3 OK #开启热插拔,使用该指令时模组中不能插卡
AT+QSIMDET=1,1
#查看热插拔状态
AT+QSIMDET?

NOTE:

  • 本文为原创文章,转载请注明出处
  • 禁止转载到CSDN!!!

[原创]移远RM500U-CN模组驱动移植的更多相关文章

  1. 移远模组-BC95-工作模式之间关系

    三种连接状态下,均可发送上行数据( CoAP/UDP): IDLE 下发送数据, 模块会进入 CONNECT 状态: PSM 下发送是数据会唤醒模块, 进入 CONNECT,或者当 TAU(TAU 的 ...

  2. 将移远通信的EC20驱动移植到NUC972上(转)

    源: 将移远通信的EC20驱动移植到NUC972上

  3. NB-IoT移远BC95使用小结

    移远-BC95-测试前准备 1.  设备连接主串口,串口调试助手波特率使用9600,选择对应的端口号.在串口调试助手上输入AT发送,查看是否有OK返回. 如果想修改波特可以通过下面的AT来修改 AT+ ...

  4. 最全的NB-IoT芯片厂商、模组厂商信息

    NB-IoT作为LPWAN(低功耗广域网)的新兴技术,因为具有低功耗.低成本.广覆盖.海量节点等优势,并且在授权频段可以与2G.3G无缝连接而被运营商所青睐且接受.特别是到了2017年,据统计全球有5 ...

  5. NFC模组,开发NFC功能 仅仅要几条指令的事情

    特点:实现NFC透明传输.内置NFC协议栈,支持UART串口直接读写,用于门禁能够同一时候兼容手机和卡片开门,还能实现动态密钥,读到的NFC数据自己主动串口输出,会串口就能开发NFC,不须要研究LLC ...

  6. 第五部分 linux系统管理员 开机流程 模组管理 与loader

    第五部分   linux系统管理员  开机流程  模组管理  与loader   开机流程分析 cmos保存电脑硬件的参数 bios 基本的输入输出系统  读取硬件的软件 MBR  master bo ...

  7. android camera(一):camera模组CMM介绍

    一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段 ...

  8. 【转】android camera(一):camera模组CMM介绍

    关键词:android  camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210)  作者:xubin ...

  9. android camera(一):camera模组CMM介绍【转】

    转自:https://blog.csdn.net/kevinx_xu/article/details/8821818 androidcmm图像处理工作手机三星 关键词:android  camera ...

随机推荐

  1. 老生常谈系列之Aop--Spring Aop原理浅析

    老生常谈系列之Aop--Spring Aop原理浅析 概述 上一篇介绍了AspectJ的编译时织入(Complier Time Weaver),其实AspectJ也支持Load Time Weaver ...

  2. QY-16 浮标水质监测站 组成 及基础参数是什么?一文认识什么是浮标水质监测站

    浮标水质监测站是设立在河流.湖泊.水库.近岸海域等流 域内的现场水质自动监测实验室,是以水质监测仪为核心,运用 传感器技术,结合浮标体.电源供电系统.数据传输设备组成的 放置于水域内的小型水质监测系统 ...

  3. 使用 AgileConfig 动态配置 NLog

    NLog 是我们在 .NET 领域使用非常广泛的日志组件.它默认使用 xml 来维护它的配置.最近有几个同学问我当使用 AgileConfig 的时候如何配置 NLog .因为 AgileConfig ...

  4. 445. Add Two Numbers II - LeetCode

    Question 445. Add Two Numbers II Solution 题目大意:两个列表相加 思路:构造两个栈,两个列表的数依次入栈,再出栈的时候计算其和作为返回链表的一个节点 Java ...

  5. linux篇-linux下zabbix安装

    1本人用的是apache+mysql+php 2下载zabbix软件包,官网下载 https://sourceforge.net/projects/zabbix/files/ZABBIX Latest ...

  6. 论文阅读 Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks

    6 Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks link:https://arxiv.org/ab ...

  7. Redis 全局通用命令整理

    转载请注明出处: 1.查看所有键 keys * 该命令会存在线程阻塞问题,keys 命令也可以通过正则匹配获取存在的缓存数据 2.查看键总数 dbsize dbsize命令会返回当前数据库中键的总数. ...

  8. Redis快速度特性及为什么支持多线程及应用场景

    转载请注明出处: 目录 1.Redis 访问速度快特性 2.Redis 6.0 为什么支持多线程? 3.Redis可以做什么 3.1.缓存 3.2.排行榜系统 3.3.计数器应用 3.4.社交网络 3 ...

  9. 走进Linux的世界

    开源软件Linux的起源: Linux--操作系统. Linux,1991年Linux之父林纳斯 本纳第克特 托瓦兹,创建了Linux操作系统内核(开源). Linux的发行版和RHCE 1.Linu ...

  10. ApeForms | WinForm窗体UI美化库(Metro扁平风格)演示与安装

    ApeForms系列① 快速上手 @ 目录 ApeForms系列① 快速上手 前言 演示视频 快速上手 安装及使用 Demo下载 联系开发者 加入我们 建议与咨询 前言 ApeForms是一套基于Wi ...