高新兴GM510模块调试
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库