一、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包进行封装传输数据。
官网源码:https://ppp.samba.org
二 、驱动检查
首先检查是否有USB设备信息。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
然后在dev目录下查看设备。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
另外在dev下还有一个qcqmi0。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
说明驱动已经集成了GobiNet。
三、拨号上网
拨号程序使用移远提供的quectel-CM,这是一个4G连接管理程序,交叉编译后得到可执行bin“quectel-CM”,将quectel-CM下的Makefile文件修改成如下,然后 make
CC:= aarch64-linux-gnu-gcc
编辑切换为居中
把这个bin放到OK3588-C开发板上启动后上述一、二驱动没有问题的情况下直接执行该bin就可以。将quectel-CM可执行程序拷贝到OK3588-C开发板中。
【注】移动是[cmnet],电信是[ctnet]。
$ ./quectel-CM -s ctnet &root@ok3588:~#
[03-16_23:36:36:353] WCDMA<E_QConnectManager_Linux&Android_V1.1.34
[03-16_23:36:36:356] ./quectel-CM profile[1] = ctnet///0, pincode = (null)
[03-16_23:36:36:364] Find /sys/bus/usb/devices/1-1 idVendor=2c7c idProduct=0125
[03-16_23:36:36:370] Find /sys/bus/usb/devices/1-1:1.4/net/usb0
[03-16_23:36:36:375] Find usbnet_adapter = usb0
[03-16_23:36:36:380] Find /sys/bus/usb/devices/1-1:1.4/GobiQMI/qcqmi0
[03-16_23:36:36:386] Find qmichannel = /dev/qcqmi0
[03-16_23:36:36:454] Get clientWDS = 7
[03-16_23:36:36:486] Get clientDMS = 8
[03-16_23:36:36:518] Get clientNAS = 9
[03-16_23:36:36:550] Get clientUIM = 10
[03-16_23:36:36:583] Get clientWDA = 11
[03-16_23:36:36:614] requestBaseBandVersion EC20CEFAGR06A08M4G
[03-16_23:36:36:710] requestGetSIMStatus SIMStatus: SIM_READY
[03-16_23:36:36:710] requestSetProfile[1] ctnet///0
[03-16_23:36:36:774] requestGetProfile[1] ctnet///0
[03-16_23:36:36:806] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[03-16_23:36:36:837] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[03-16_23:36:36:902] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[03-16_23:36:40:870] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[03-16_23:36:41:958] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[03-16_23:36:42:118] requestRegistrationState2 MCC: 0, MNC: 0, PS: Attached, DataCap: 1XEVDO_REVB
[03-16_23:36:42:182] requestRegistrationState2 MCC: 0, MNC: 0, PS: Attached, DataCap: 1XEVDO_REVB
[03-16_23:36:42:214] requestSetupDataCall QMUXResult = 0x1, QMUXError = 0xe
[03-16_23:36:44:166] requestRegistrationState2 MCC: 460, MNC: 11, PS: Detached, DataCap: UNKNOW
[03-16_23:36:45:158] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE
[03-16_23:36:45:222] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE
[03-16_23:36:45:285] requestSetupDataCall WdsConnectionIPv4Handle: 0x871aef60
[03-16_23:36:45:382] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE
[03-16_23:36:45:413] requestQueryDataCall IPv4ConnectionStatus: CONNECTED
[03-16_23:36:45:478] ifconfig usb0 up
[03-16_23:36:45:496] Fail to access /usr/share/udhcpc/default.script, errno: 2 (No such file or directory)
[03-16_23:36:45:500] busybox udhcpc -f -n -q -t 5 -i usb0udhcpc: started, v1.30.1udhcpc: sending discoverudhcpc: sending select for 10.21.127.53udhcpc: lease of 10.21.127.53 obtained, lease time 7200
[03-16_23:36:46:534] requestRegistrationState2 MCC: 460, MNC: 3, PS: Attached, DataCap: 1XEVDO_REVB
[03-16_23:36:46:566] requestRegistrationState2 MCC: 460, MNC: 3, PS: Attached, DataCap: 1XEVDO_REVB
这就是拨号成功了,当然也可查看IP信息。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
接下来就是ping一下看是否可以联网。
# ping 211.149.226.120
编辑切换为居中
添加图片注释,不超过 140 字(可选)
可以看到能ping通外网。
这样设备就可以作为一个移动的网关的,配上无线网络,就可以做一个无线路由器了。
|