Blackrose's Blog Blackrose's Blog

4G通信模块拨号方式

in technologyread (414) 文章转载请注明来源!

最近使用移远的4G模块,刚开始觉得没有什么大问题,直接拨号使用就可以了。后来同事有问,2G, 3G, 4G拨号有什么区别,才发现自己对这个也不太明白。以移远EC20为例,官方提供的文档中有四种驱动,USB Serial Driver, CDC ACM Driver,GobiNet Driver和QMI Driver。

EC20模块的使用,主要以USB接口为主。这里有两种驱动方式,USB Serial和GobiNet/QMI。

很早以前CPU通过串口的发送AT指命与modem模块交互,在2G时代的通讯模块都是提供这种方式。对于AT指命有一套规范,但各家modem厂商也有自己的独有功能部分。到了3G时代,modem速率有提升,为了让CPU和modem交互更方便的连接,使用了AT+PPP方式,这种方式一直沿用到4G时代。但是由于LTE速率大于串口速率,所有需要更快的通讯协议。其中,Qualcomm开发了QMI(Quallcomm MSM Interface)方式。

Gobi模块最早是由Qualcomm开发的broadband模块。这类模块可以连接至2G/3G/4G网络,不同于其他的broadband模块使用AT指命通讯,Gobi模块使用Qualcomm自己开发的QMI协议与模块通讯。该协议使用USB subsystem来处理请求,响应。

Linux系统中的QMI有两种实现,GobiNet和qmi_wwam。

GobiNet是由Qualcomm开发,user space层的支持有GobiAPI。

GobiNetArchitecture.png
GobiNet 驱动结构

qmi_wwan是由社区开发,Linux 3.4版本时引入到上游版本。user space支持有libqmi, ofono, uqmi等等。

qmi_wwanArchitecture.png
qmi_wwan驱动架构

两者驱动上有很大区别,GobiNet很复杂,实现了核心协议逻辑。QMI则只是在现有kernel上加入支持。

USB Serial

模块通过USB信号与CPU通迅,系统启动后加载USB驱动,会识别出USB设备,并生成四个ttyUSB设备。

  • ttyUSB0 DM
  • ttyUSB1 For GPS NMEA message output
  • ttyUSB2 For AT commands
  • ttyUSB3 For PPP connections or commands

这时候,使用pppd工具,可以从串口协议拨号到2G或3G网络。拨号成功后,会出现ppp0网络设备,同时会有IP,DNS地址设置到系统。

QMI

根据EC20文档添加设备和raw-ip部分的代码到qmi_wwan.c中,启动后可以看到wwan0网络设备。然后使用移远提供的quectel-CM工具连接网络。

文章二维码

扫描二维码,在手机上阅读!

发表新评论
博客已萌萌哒运行
© 2018 由 Typecho 强力驱动.Theme by Yodu
前篇 后篇
雷姆
拉姆