移远通信5G RM500U系列是一款专为IoT/ eMBB/ URLLC应用而设计的5G Sub-6 GHz 模块。采用3GPP Release 15/ Release 16 技术,同时支持 5G NSA 和 SA 模式,向下兼容4G/ 3G。RM500U 系列采用 M.2 封装,与移远通信 RM500Q 系列模块兼容。
RM500U 系列支持国内四大运营商。
RM500U 系列为工规级模块,仅适用于工业级和商业级应用。
RM500U 系列包含三个子型号:RM500U-CN,RM500U-EA 和 RM500U-CNV。RM500U 系列内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(如 Windows、Linux、Android 等操作系统下的 USB/ PCIe 驱动等),极大地拓展了其在 IoT、eMBB 和 URLLC 领域的应用范围,如工业级路由器、家庭网关、机顶盒、工业级 PDA、加固型工业平板电脑、视频传输和数字标牌等。
一、驱动编译
1、获取驱动包
驱动包联系厂商获取
2、选择驱动版本
Quectel_Linux_USB_Serial_Option_Driver_20220902.tgz
获取到的驱动包内含有不同内核版本的源码,解压后根据自己的内核版本选择对应版本的驱动
root@femrice-virtual-machine:/home/# ls linux-4.14/5G-Quectel20231101/20220902/ v2.6.12 v2.6.27 v3.0.51 v3.16.1 v3.5.1 v4.12.1 v4.18.1 v4.6.1 v5.11.11 v5.18.11 v5.7.1 v2.6.13 v2.6.28 v3.10.1 v3.17.1 v3.6.1 v4.12.11 v4.18.11 v4.7.1 v5.12.1 v5.18.5 v5.7.11 v2.6.14 v2.6.29 v3.10.11 v3.18.1 v3.6.11 v4.13.1 v4.19.1 v4.8.1 v5.12.11 v5.19.1 v5.8.1 v2.6.15 v2.6.30 v3.10.51 v3.18.11 v3.7.1 v4.13.11 v4.19.11 v4.8.11 v5.13.1 v5.19.5 v5.8.11 v2.6.16 v2.6.31 v3.1.1 v3.18.111 v3.8.1 v4.14.1 v4.19.111 v4.9.1 v5.13.11 v5.2.1 v5.9.1 v2.6.17 v2.6.32 v3.11.1 v3.18.51 v3.8.11 v4.14.11 v4.19.51 v4.9.11 v5.14.1 v5.2.11 v5.9.11 v2.6.18 v2.6.33 v3.12.1 v3.19.1 v3.9.1 v4.14.111 v4.20.1 v4.9.111 v5.14.11 v5.3.1 v2.6.19 v2.6.34 v3.12.11 v3.2.1 v3.9.11 v4.14.51 v4.20.11 v4.9.51 v5.15.1 v5.3.11 v2.6.20 v2.6.35 v3.12.51 v3.2.11 v4.0.1 v4.1.51 v4.2.1 v5.0.1 v5.15.11 v5.4.1 v2.6.21 v2.6.36 v3.13.1 v3.2.51 v4.10.1 v4.15.1 v4.3.1 v5.0.11 v5.15.6 v5.4.11 v2.6.22 v2.6.37 v3.13.11 v3.3.1 v4.10.11 v4.15.11 v4.4.1 v5.10.1 v5.16.1 v5.4.51 v2.6.23 v2.6.38 v3.14.1 v3.4.1 v4.1.1 v4.16.1 v4.4.11 v5.10.11 v5.16.11 v5.5.1 v2.6.24 v2.6.39 v3.14.11 v3.4.11 v4.1.11 v4.16.11 v4.4.111 v5.1.1 v5.17.1 v5.5.11 v2.6.25 v3.0.1 v3.14.51 v3.4.111 v4.11.1 v4.17.1 v4.4.51 v5.1.11 v5.17.11 v5.6.1 v2.6.26 v3.0.11 v3.15.1 v3.4.51 v4.11.11 v4.17.11 v4.5.1 v5.11.1 v5.18.1 v5.6.11
3、修改驱动源码
我们使用的是RM500U-CN的5G模组,在源码包里没有该模组的支持信息,需要我们在源码中手动添加对RM500U-CN模组的支持
修改驱动源码路径下的drivers/usb/serial/option.c,添加对RM500U-CN模组的支持
Linux系统下可以通过lsusb命令查看5G模组对应的PID和VID号,分别为0x2C7C和0x0900,将其添加到option.c里面
4、在内核配置中将该驱动进行勾选,当前我们选择将驱动编译为动态驱动的方式
[*] Device Drivers → [*] USB Support → [*] USB Serial Converter support → [M] USB driver for GSM and CDMA modems
二、安装驱动
1、编译完成后会生成option.ko和usb_wwan.ko的驱动文件,将该驱动文件放到系统下加载使用
# insmod usb_wwan.ko # insmod option.ko
2、驱动安装完成后,正常情况下会在/dev 目录下产生5个ttyUSB,dmesg信息如下
[ 5.416668] usb 4-1: GSM modem (1-port) converter now attached to ttyUSB0 [ 5.416864] usb 4-1: GSM modem (1-port) converter now attached to ttyUSB1 [ 5.417031] usb 4-1: GSM modem (1-port) converter now attached to ttyUSB2 [ 5.417250] usb 4-1: GSM modem (1-port) converter now attached to ttyUSB3 [ 5.417462] usb 4-1: GSM modem (1-port) converter now attached to ttyUSB4
3、通过拨号工具进行拨号使用
三、问题排查
驱动安装正常,设备节点也正常,但是ifconfig看不到5G模组对应的interface
解决方案:
1、查看RM500U-CN模组相关文档,确定驱动类型
2、使用minicom或者micorocom输入AT指令,修改5G模组的模式,修改后重启模组或者设备断电重启
root@localhost:~# minicom -D /dev/ttyUSB4 Welcome to minicom 2.7.1 OPTIONS: I18n Compiled on Aug 13 2017, 15:25:34. Port /dev/ttyUSB4, 16:21:42 Press CTRL-A Z for help on special keys AT+QCFG="usbnet",1 +CME ERROR: 4 #执行报错,重新执行其它模式,再执行该模式或者有可能为命令输入错误导致 AT+QCFG="usbnet",5 OK AT+QCFG="usbnet",1 OK AT+CFUN=1,1 #重启5G模组 OK
3、重启后,ifconfig -a查看有usb0的网口就是5G模组对应的interface
四、常用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?
参考链接(网络文章):[原创]移远RM500U-CN模组驱动移植 - zhijun - 博客园 (cnblogs.com)