Linux - 5G模块驱动开发及使用

        一般在嵌入式设备中,使用有线网络或者WIFI来联网,但是使用有线网络或者 WIFI有很多限制,因为要布线,即使是 WIFI 也得先布线,然后在接个路由器。有很多场合是不方便布线的,这个时候5G和4G模块就突出它的优势了。

1.硬件

1.1 5G模块简介

下面是一些部分不同厂商的模块图片:

很多5G和4G模块都是MiniPCIE接口,这些 5G 模块虽然用了 MiniPCIE 接口,但是实际上的通信接口都是 USB,所以5G模块的驱动就转换为了USB驱动。而这些 5G 模块厂商都提供了详细的文档讲解如何在 Linux下使用5G模块,以及如何修改 Linux内核来加入5G模块驱动。需要注意的是模块工作是需要天线的,一定记得要和天线一起搭配才能正常使用。

1.2 RG500Q-CN简介

我用的5G模块是使用的上海移远的RG500Q-CN,其特性如下:

I.最高下行速率可达 2.5 Gbps,最高上行速率可达 900 Mbps;

II.支持5G NSA和SA模式;

III.向下兼容4G/3G;

IV.集成多星座 GNSS 接收机,满足不同环境下对快速、精准定位

的需求;

V.支持多种功能: DFOTA*和 VoLTE(可选);

2.驱动移植

2.1添加VID PID

为了能够正确识别到模块,添加相应的VID PID到驱动文件:drivers/usb/serial/option.c

2.2添加USB网络驱动到drivers/usb/serial/option.c

2.3结构体option_1port_device中添加休眠唤醒代码:

文档相关描述:

2.4添加零包处理代码:/drivers/usb/serial/usb_wwan.c.

文档相关描述:


 

 3.RG500Q模块的使用

        3.1确认模块已被正常加载

因为模块是通过usb总线连接到我们的芯片,所以可以通过lsusb查看到模块的基本信息:

如图所示:红色标框就是5G模块,显示了产商信息以及VID和PID;

        3.2如何和模块进行通信

进入系统后,在/dev/下面会发现多了ttyUSB0~ttyUSB3这几个设备,这4个tty设备接口就是RG500Q虚拟出来的串口,关于这个几个设备接口,其含义在文档中的描述如下:

所以我们就是主要通过这几个port和模块进行通信。

        3.3设置波特率

我们在主控芯片侧通过microcom工具进行设置,Microcom 是一款在 UNIX 和类 UNIX 系统中使用的串行通信软件。它是一个简单而功能强大的终端程序,可以用于与远程设备进行串行通信,如通过串口与调制解调器、路由器、交换机等设备进行交互。

具体操作如下:microcom -s 115200 /dev/ttyUSB2 &,为了方便后台监视模块的回显,一般会再执行一下:cat /dev/ttyUSB2 &

        3.4查看模块固件版本号

每个模块在出厂前厂家都会烧录好其内部的固件,当我们想要更换里面固件的时候,也有相应的工具,查询其版本号的指令:echo -e "ATI\r\n" > /dev/ttyUSB2

                3.4.1如何更新模块的固件

目前移远的这款5G模块他们提供了QFirehose这个工具进行内部固件的升级,这个工具使用他们提供的源码包进行交叉编译即可得到:

将QFirehose可执行文件和将要升级的固件包push到我们的系统同一级目录下,然后使用:./QFirehose  -f ./RG500QCNAAR12A06M4G即可开始升级。

        ​​​​​​​3.5拨打电话

当插入SIM卡后,可以使用如下AT指令进行拨打电话:echo -e "ATD18123074359;\r\n" > /dev/ttyUSB2

        ​​​​​​​3.6如何拨号上网

由于我们的项目的5G模块还外接了一个WIFI(FG50),因此在进行拨号上网的时候,就有两种模式:

⑴host借助WIFI模块上网,此时5G模块处于ECM网卡模式;

⑵host使用蜂窝上网,模块需要借助qcm拨号工具拨号(qcm拨号需要加载qmi驱动,这个qmi驱动移远也会提供,按照官方文档将其编译进内核即可使用),此时5G模块使用的是rmnet网卡(wwanx),另外这个qcm的拨号工具也会一并提供,交叉编译后得到(高通模块ECM模式下自动拨号,可不借助qmi拨号)。

host使用蜂窝上网,模块使用ECM网卡模式也是可以的。因此,不做切换网卡模式的话,建议使用ECM网卡。

WiFi STA mode的优先级高于蜂窝拨号,即在使用蜂窝拨号上网时启用STA WiFi mode,ECM网卡自动使用WiFi数据。

两种场景下切换模块网卡模式:at+qcfg="usbnet",0 //rmnet      at+qcfg="usbnet",1 //ecm  (重启生效)

此时直接ping www.baidu.com即可。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值