高新兴GM510模块调试

时间:2024-03-05 11:13:12

Platform:rk3399

Os:android7.1

Kernel:4.4

 

1.1 在内核中添加USB串口驱动和USB网卡驱动

通过指令make ARCH=arm64 menuconfig,配置内核:

添加 USB 串口驱动:

device drivers-->

 usb support-->

usb serial converter support-->

 USB driver for GSM and CDMA modems

 

添加 USB 网卡驱动

device drivers-->

 Network device support-->

usb Network Adapters-->

 Mulil-purpose USB Networking Framework

 

总之,要确保源文件中的 option.c 及其相关的部分(USB 串口驱动),cdc_ether.c 及其相关部分

USB 网卡驱动)参与编译即可。

1.2 在内核中添加PPP组件

device drivers-->

Network device support-->

 ppp support-->

 ppp filtering

ppp support for async serial ports

ppp support for sync tty ports

ppp deflate compression

ppp BSD-compress compression

 

1.3 在内核驱动源文件中添加模组相关的信息:

在内核驱动源文件中添加模组相关的信息:USB 网卡驱动可以自动识别到 GOSUNCN

模组,因此,其对应的 cdc_ether.c 文件中不需要添加任何内容。但是 USB 串口驱动不能

自动识别,必须要添加 GOSUNCN 模组的设备信息到源文件 option.c 中。

文件路径:/kernel/drivers/usb/serial/option.c

GM510 的 VID 和 PID 分别是 0x305a 和 0x1415, 添加如下:

static const struct usb_device_id option_ids[] = {

。。。。

{ USB_DEVICE(ZTE_GM510_VENDOR_ID, ZTE_PRODUCT_GM510_X) },//wmc add by ZTE GM510

。。。。

}

 

添加黑名单信息,上面添加模组信息时只添加了设备的 VID 和 PID,没有附加任何额外的端口信息,这样会导致设备的网卡也被加载成为 USB 串口。以下提供一种类似于黑名单的方式,在 option_probe 函数中,将网卡对应的端口加入黑名单,防止 USB 网卡被加载成为 USB 串口。

ECM 端口模式下,GM510 网卡对应的端口为 0、1,请将以下代码添加到option_probe 函数中。

 

1.4在Android系统的init.rc中添加服务

在以下路径\system\core\rootdir\init.rc中修改:

ril-daemon 服务(添加前注释掉原来的 ril-daemon 服务)

 

pppd_gprs 服务

 

 

 

1.5修改分配ip地址是挂接到usb0:

没修改之前,ip地址是挂接到eth0上,都没有接网线,这样肯定不对。

kernel\drivers\net\usb\usbnet.c中:

 

 

 

eth改为usb。用ifconfig查看ip地址:

 

1.6打包相关文件到系统中

 

以上文件是模组厂提供的,只需要预置到系统对应的文件下就可以了。

1.7 apn配置

一般是修改apns-conf.xml文件,一般常用的卡比如移动、联通、电信都是有已经配置好在里面了。特殊的卡才需要自己再继续添加。

 

 

1.8 buil.prop里面设置网络的优先等级

ro.telephony.default_network=22

这个对应frameworks\base\telephony\java\com\android\internal\telephony\RILConstants.java

 

 

2、调试

此时,我们的基本适配工作就做完了。编译系统并烧写。首先可以来检查我们的4G模块是否被正确识别到。可以查看内核打印来检查。

 

 

通常kernel启动时候打印以上信息,说明驱动没问题了。

 

抓取Radio log的方法adb logcat -b radio -v time,如果上不了网,可以通过这个打印信息来分析问题。

几条调试可能用到的AT指令:

AT+CPIN? //SIM 卡状态

AT+CSQ //信号强度

AT+ZPAS? //注册状态

 

echo -e "AT+ZSNT?" > /dev/ttyUSB1//查看模块是什么模式

echo -e "AT+ZSNT=0,0,0" > dev/ttyUSB1//这个是自动模式

注意:模块要设置成自动模式才可以用。

 

总结:按照以上的步骤来调试,sim卡装上移动卡和联通卡发现都可以上网,但是装上电信物联卡就不行,经了解原来电信物联卡具有绑定设备的功能,也就是此卡已经绑定之前在用的ec20模块,要在其他设备上使用的话,需要解锁才可以。果然,解锁了之后,插上马上就有信号出来了。

 

参考:https://www.cnblogs.com/chorm590/p/rk3128_me3630-w.html

官方文档:高新兴物联模组Android系统RIL适配参考_V1.6-20190315