1 Gobinet/QMI-WWAN/PPP拨号概述
1.Gobinet拨号
GOBI 高通Gobi无线宽带芯片技术,只需一个模块即可支持多种移动宽带网络和众多移动运营商。高通公司称全新的芯片将基于Gobi 4G LTE无线基带、MDM9615和MDM9215。这种技术可以在FDD和TDD网络下进行LTE连接,同时支持HSPA+和EV-DO网络、2G/3G网络。这意味着用户可以在本地使用高速4G LTE网络,在其他地方使用3G网络。Gobi平台在MDM芯片组的基础上还提供了软件增强层,这样可以使用不同技术下的无线连接更简单。
2.QMI-WWAN协议拨号
QMI: Qualcom Message Interface
MSM: Mobile station mode
AP: Application Procesor
高通平台目前都是非对称多核心,最主要的是AP和Modem。
两个处理器怎么进行通信呢,我们把AP和Modem当作两个主机,问题就变得了很简单,TCP/IP协议不是一种非常成功的进程间跨主机通信方式。高通没有采用这种方式,但是借鉴了TCP/IP的框架设计。
Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机)
对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。
3.PPP协议拨号:点对点协议
PPP(点到点协议)在拨号过程中用于MS和PC间数据交互、协商。在拨号流程的初期首先开启的就是PC和MS直接的PPP过程,在拨号成功后,还需要依靠PPP协议对IP包进行封装传输数据。
2 驱动检查
MYD-YG2UL驱动已经支持4G和5G了,笔者这里使用的EC20 4G模组,其接口如下:
可以看到,M2接的是USB,因此如果有USB转M2的转接板,可以直接使用家USB接口即可。
插入4G模组后,会有一下信息:
首先检查是否有USB设备信息。
然后在dev目录下查看USB设备。
另外在dev下还有一个cdc-wdm0。
说驱动已经集成了QMI。
3 quectel-CM拨号上网
拨号程序使用移远提供的quectel-CM,这是一个4G连接管理程序,这里没什么说的,交叉编译后得到可执行bin“quectel-CM”,
将quectel-CM下的Makefile文件修改成如下,然后 make
CC:= ${CC}
把这个bin放到板卡上启动后上述一、二驱动没有问题的情况下直接执行该bin就可以。将quectel-CM可执行程序拷贝到板子中。
【注】移动式[cmnet],电信是[ctnet]。
$ ./quectel-CM -s ctnet &
或者
$ ./quectel-CM &
root@myir-rzg2ul:~# ./quectel-CM -s ctnet
[09-18_01:01:55:846] Quectel_Linux_ConnectManager_SR01A01V30
[09-18_01:01:55:847] ./quectel-CM profile[1] = ctmet///0, pincode = (null)
[09-18_01:01:55:848] Find /sys/bus/usb/devices/2-1.1 idVendor=2c7c idProduct=0125
[09-18_01:01:55:849] Find /sys/bus/usb/devices/2-1.1:1.4/net/wwan0
[09-18_01:01:55:849] Find usbnet_adapter = wwan0
[09-18_01:01:55:850] Find /sys/bus/usb/devices/2-1.1:1.4/usbmisc/cdc-wdm0
[09-18_01:01:55:850] Find qmichannel = /dev/cdc-wdm0
[09-18_01:01:55:865] cdc_wdm_fd = 7
[09-18_01:01:55:962] Get clientWDS = 20
[09-18_01:01:55:994] Get clientDMS = 1
[09-18_01:01:56:026] Get clientNAS = 4
[09-18_01:01:56:058] Get clientUIM = 1
[09-18_01:01:56:091] Get clientWDA = 1
[09-18_01:01:56:123] requestBaseBandVersion EC20CEFAGR06A08M4G
[09-18_01:01:56:186] requestGetSIMStatus SIMStatus: SIM_READY
[09-18_01:01:56:187] requestSetProfile[1] ctmet///0
[09-18_01:01:56:251] requestGetProfile[1] ctmet///0
[09-18_01:01:56:282] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE
[09-18_01:01:56:314] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[09-18_01:01:56:378] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE
[09-18_01:01:56:858] requestSetupDataCall WdsConnectionIPv4Handle: 0x871698d0
[09-18_01:01:56:923] requestQueryDataCall IPv4ConnectionStatus: CONNECTED
[09-18_01:01:56:955] ifconfig wwan0 up
[09-18_01:01:56:988] busybox udhcpc -f -n -q -t 5 -i wwan0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending select for 10.21.127.53
这就是拨号成功了,当然也可查看IP信息。
如果拨号失败可以关闭wwan0,然后再次拨号。
# ifconfig wwan0 down
# echo Y > /sys/class/net/wwan0/qmi/raw_ip
# ifconfig wwan0 up
# busybox udhcpc -f -n -q -t 5 -i wwan0
接下来就是ping一下看是否可以联网。
# ping 211.149.226.120
【注1】由于要使用网络通讯,所以不可避免的要用到dhcp。理想的网络通讯方式是下面3种都要支持:
1.接入已有网络。这便要求可以作为dhcp客户端。
2.作为DHCP服务器,动态分配IP。
3.指定固定IP