4G模块适配与调试

  • Post author:
  • Post category:其他




RK平台4G模块适配

需要:sim卡(要加上卡套并且金属片一方要贴紧金手指)、一个4G模块、天线

注意:由于网络存在优先级,调试的时候记得下wifi和以太网。默认优先级:Eth > Wifi > mobile。



1、识别VID、PID

将4G模块插入到板子上,记得插稳。开启adb或串口调试。因为4G模块是USB接口,所以可以输入命令查看pid和vid号:

//串口下
lsusb
//adb下
busybox lsusb 或 lsusb
ID: VID/PID
Bus 001 Device 006: ID 2c7c:0125



2、添加VID\PID到android的option驱动中

//海思的option.c在source里
device/hisilicon/bigfish/sdk/source/kernel/linux-4.9.y/drivers/usb/serial/option.c

添加时记得检查一下添加的VID/PID是否已经添加过了,因为很多厂家把同一个4G模块换个皮就卖出去了。如果有重复的就不用添加了。

重新编译刷机后在板子下是否生成设备节点



3、插上sim卡,4G模块一定要接上天线



4、根据安卓系统和安卓版本发给模块厂要求其提供ril库



5、预置ril库



6、在framework中添加根据pid和vid关联ril库的代码



这样USB串口就算集成了



7、可以通过一下命令查看ril库添加是否正确

getprop |grep ril

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Aq8FSm6-1680437999535)(D:\MarkdownNote\图库\4G模块适配7.png)]



8、ifconfig查看当前模块是否已经获得Ip

一般网口为USB0



9、最后抓log看模块或在模块下ping百度来测试是否适配成功

ping不通 www.baidu.com的可以试试m.baidu.com,两个都是百度的dns

//只抓ril日志(一般只抓这种即可,一开机马上抓,抓久一点)
adb logcat -b radio -v time > d:\radio.log
//ril+系统日志(一开机马上抓,抓久一点)
adb logcat -b main -b system -b radio > all.txt
adb logcat -b all > ./ril.txt



如果以上基本适配操作完成后还没有能够通网可以尝试以下调试步骤配合模块厂进行调试



10、查询当前模块能够接收的网络类型

在上面抓到的三种日志搜索一下

logcat |grep networktype



11、源码修改Android默认4G优先(未验证,以后有人验了回来把这条改改)

根据9搜素能够当前默认接收网络类型,若networktype不等于9 或者其他功能更适当的值(Android10 为:26),则默认不是请求的 4G 或者 5G 网络,需要修改 Android 源码,配置默认为 4G 优先。


a.Android


设置添加网络模式设置菜单

部分客户 android 网络模式设置菜单只有 3G 和 2G 两个菜单项,没有 4G 的。

打开 android 源码 packages/services/Telephony/res/values/config.xml,将其中 config_enabled_lte 的值改为 true。这样设置菜单中就会有 4G 或者5G 选项出现。


b.


修改


android


默认网络模式为


4G


:打开


android


源码

frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java 将其中的变量 PREFERRED_NETWORK_MODE 修改为

4G:NETWORK_MODE_LTE_GSM_WCDMA (有部分系统没有枚举5G 网络选项,这部分系统用5G 模块时请用该选项)

5G:NETWORK_MODE_NR_LTE_GSM_WCDMA(android10及以上)。

**c.**

网络设置模式设置的


java


源码:

packages/services/Telephony/src/com/android/phone/MobileNetworkSettings.java 客户如果通过 a, b 步骤仍然有问题的,可以去分析这个代码找一下问题。



12、APN配置

情景:读到卡了但是没有服务。

APN 是用于拨号时的必要信息。Android 默认预置了部分 APN,但是仍然有部分 APN 是没有预置的,因此可能会导致某些 Longsung 卡不能拨号的问题,此时就需要添加对应的 APN。

一般手机卡对应下面面的3家,物联卡对应:cmiot。当客户寄物联卡过来的时候,我们调试切记不要用一张物联卡去调试多个以上的4G/5G模块,这样会导致物联卡被锁无法获取到服务。

中国移动: 保留 cmnet

中国电信: 保留 3gnet

中国电信: 保留 ctnet

添加方式:

2.8.1、 UI 界面添加 APN:

在 Android 的 setting 里面对应的 SIM卡配置里面可以找到 APN 的配置。

2.8.2、 配置文件添加 APN:

路径:

vendor/rockchip/common/phone/etc/apns-full-conf.xml(源码),我们的源码可以位置不尽相同。

修改系统中的配置文件后,必须删除掉对应的 databass,然后重启才会生效。因为这个databass 只会在不存在的时候,才会从配置文件中加载数据,并生成 databass,如果已经存在,就不会再加载配置文件中的数据了。或者在 Android 的 APN 配置界面选择恢复默认值,也会更新 databass。

Databass 路径:

rm -f /data/data/com.android.providers.telephony/databases/telephony.db

rm -f /data/data/com.android.providers.telephony/databases/telephony.db-journal

2.8.3、 编译环境确保可以正确编译到 APN 的配置文件:

PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/apns-full-conf.xml:system/etc/

apns-conf.xml。



13、确认哪一个ttyUSB为AT口

logcat |grep ttyUSB



14、ttyUSB*出现无限死循环乱码问题(与AT指令一起用)

高版本 linux 在 cat ttyUSB*可能会出现无限死循环出现乱码或者\r\n 的无线返回,该问题主要是使用的 linux 系统有了自动回显造成的,根据以下操作关闭 linux 对应设备节点的回显:分析结果是 Linux 和模块同时开启了回显,模块跟 PC 之间一直在互发数据导致该问题,请在 Linux 下执行

 stty -F /dev/ttyUSB -echo

关掉 ttyUSB1的回显,其它口类似操作。



15、AT指令查询模块状态



16、相关ATlog和说明(基于Fx650)

AT+CPIN?
+CPIN: READY //确保 SIM 卡就绪

OK
*****************************************************************
AT+CESQ
+CESQ: 99,99,255,255,23,39,255,255,255 //确保模块能接收到信号,当前模块为4G信号

OK
*****************************************************************
AT+CGDCONT=1,"IP","ctlte" //设置 APN 接入点信息

OK
*****************************************************************
AT+COPS?
+COPS: 0,0,"CHN-TELECOM",7 //确保模块注册上运营商网络

OK
*****************************************************************
AT+CGREG?
+CGREG: 0,1 //模块附着数据网络

OK
*****************************************************************
AT+CEREG? //模块附着 LTE 网络
+CEREG: 0,1

OK
*****************************************************************
AT+CGDCONT?
+CGDCONT: 1,"IP","ctlte","0.0.0.0",0,0,0,0 //查询是否设置成功

OK
*****************************************************************
AT+GTRNDIS? //查询拨号状态,查看模块是否已经获取到 IP,也可以直接ifconfig查看模块是否已经获得IP
+GTRNDIS: 1,1,"100.85.126.41","202.101.172.37", "202.101.173.157"
    
OK
*****************************************************************
AT+GTRNDIS=0,1 //断开拨号
    
OK
*****************************************************************
AT+CGREG=2,3 //SIM卡欠费
    
OK



17、SIM卡欠费、绑卡、锁卡问题导致没有ip地址

会出现以下打印:

4137D use-Rlog/RLOG-RIL ATC: AT< +OENG:… ,“LIMSRV”…



版权声明:本文为mafumafu65原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。