Shenzhen Reecam Electronic Technology Co.,Ltd;
CONTACT

Contact infomation in English

You can modify these words by yourself

Details
Home > Industry news > Details

Android ril集成和常见问题分享

Time: 2023-10-31 View: 2232 Author: Reecam



01、ril daemon配置相关问题

02、IRadio配置相关问题

03、主控wifi only版本问题

04、qmi驱动问题

05、安卓支持热插拔相关问题

06、APN相关问题

07、注网与掉网相关问题

08、电话、短信相关问题

01



ril daemon配置相关问题

1、ril daemon配置中没有指定ril库路径导致库无法启动


可以看到下面这个例子是在rild.rc中没有指定需要链接的动态库文件,那这可能导致系统无法找到我们所需启动的ril库

原因:系统是先加载ril daemon中-l的指定路径,如无-l后参数,那么才会尝试从系统属性中获取ril库的路径。


在属性vendor.rild.libpath中指定对应路径ril库路径,需要注意以下几点:

1)确保在vendor.rild.libpath属性中指定的ril库绝对路径是正确的,路径以及文件名是否有误。

2)检查rild.c看是否正确使用了property_get()函数获取vendor.rild.libpath属性。


所以还是建议客户在ril daemon中将指定路径加上,这样会少掉很多关于rild的启动


2、配置两个ril daemon情况
这种情况会导致相互抢AT口,导致无法上网或上网一段时间掉网现象可以在log中过滤到如下情况



02



IRadio配置相关问题

安卓11以上的IRadio一般配置在 /vendor/etc/vintf/manifest.xml 目录下,根据客户使用的不同版本IRadio,配置会有一点差异。

不同的安卓版本支持的最高IRadio版本也不同,配置不能超过当前安卓版本支持版本。移远实现的libril目前支持到1.5接口,使用移远RIL库时候manifest.xml最高不能配置超过1.5。


安卓8.x ---最高支持IRadio 1.1

安卓9.x ---最高支持IRadio 1.2

安卓10.x ---最高支持IRadio 1.4

安卓11.x ---最高支持IRadio 1.5

安卓12.x ---最高支持IRadio 1.6


安卓11&12 2&3&4G模块使用1.1接口即可正常上报信息


安卓11&12 如适配的5G模块,在新归档的RIL版本中,针对5G信号上报做了调整,需要将IRadio接口切至1.5


IRadio服务未注册,会导致RIL库与上层通信失败。

此时就需要检查使用的IRadio版本和对应的manifest.xml的配置,如果使用了1.2以上的IRadio版本还需要确认是否有对应移远的libril.so。(原生libril.so仅支持IRadio1.1)

一般在radio log上过滤RILJ,只有一行打印:

RILJ ( 934): RIL: init preferredNetworkType=9 cdmaSubscription=0)[PHONEnull]

且不会上报:

RILJ ( 934): [UNSL]< UNSOL_RIL_CONNECTED [PHONE


03



主控wifi only版本问题

在radio log过滤RILJ打印只有几行的情况:


客户安卓主控是wifi only版本,需要打开config_mobile_data_capable配置。可以让客户源码根目录搜索一下config_mobile_data_capable,涉及到的位置都改成true。

还需把属性ro.radio.noril=false,如果是true会不运行phone 模块


04



qmi驱动问题

经常有客户遇到4G图标有了,但是ping不通ip,其实这个原生跟qmi_wwan网卡有关,抓usbmon会发现,QMI消息发送的EP号不对。


需要替换成移远的qmi_wwan_q驱动即可


经常有客户移植了qmi_wwan_q却加载的还是qmi_wwan,其实是没满足以下两步要求:



05



 安卓支持热插拔相关问题

需在ql-ril.conf文件中使能相关项,根据SIM卡座高低电平识别,如高电平识别则改为=2


在客户设置热插拔时,只在初始化AT中加入AT+QSIMDET=1,1的情况,


那这样会出现以下问题:

只设置初始化AT(AT+QSIMDET=1,1)的情况下,在ril初始化AT流程中,发送此消息后不会立即生效(不会触发AT+CFUN=1,1操作),需重启后热插拔功能才会真正生效。


因模块出厂是AT+QSIMDET=0,0状态,若卡座是高电平识别,此时设备第一次开机都是识别不到卡的状态,如客户是在产线才发现这个问题,就会疯狂催原厂了。


06



APN相关问题

若排查发现模块注网都正常,但是安卓不发起拨号,这种情况可以在ril log中搜到no apn的关键字

D/DCT ( 602): trySetupData: X No APN found retValue=false

出现原因主要是客户apns-conf.xml中没有对应SIM卡的apn信息。解决方法有两种:

(1)设置APN界面:Settings->WIRELESS & NETWORKS -> More…->Mobile Networks-> Access Point Names。在APN界面点击右上角,可以弹出菜单,选择新建 APN

(2)把文件apns-conf.xml push到客户板子的/system/etc/ 目录下,然后恢复出厂设置。


07



注网与掉网相关问题

如是注网及网络连接问题,可以排查SIM卡、天线是否安装稳固。基于调试目的,可用发AT查询模块相关状态:

可开2个adb shell窗口

1、窗口1: logcat –b radio –v time | grep ATC””, 通过ril log看AT

2、 窗口2: echo –en “ati\r” > /dev/ttyUSB2, 发AT


注意千万不要直接cat /dev/ttyUSB2. 因为我们RIL是通过/dev/ttyUSB2收发AT的,如果AT response被你cat走了。会导致RIL认为模块出问题,而导致RIL异常。

若是网络连接(异常掉网)等问题需同步抓取ril log及模块log(建议先将固件版本更新至最近归档版本)


08



电话、短信相关问题

电话、短信等问题,首先要确认模块OC是否支持,及固件版本是否支持。

遇到比较多的是EC20系列 R06基线仅支持移动volte,客户在使用电信、联通卡做电话测试时周围没有2&3G信号导致电话打不通的问题。(R08基线支持三大运营商volte)

也可能是上层的相关服务加载异常,导致电话功能异常。

这点是比较容易混淆的,可能是上层至ril的问题,也可能是模块固件的问题。


那如何判断是模块的问题还是上层调用的问题呢,可用以下调试方法:

上层拨打电话时,可在后台调试,看有无调用到模块的ATD指令,同理也可开adb shell窗口: logcat –b radio –v time | grep ATC””, 通过ril log看AT指令中有没有ATD相关指令。

如没有ATD相关请求,那么可能是上层与RIL之间的问题,需要具体抓取ril log分析。

如有但对方未收到电话,则可能是当前固件版本不支持volte,且周围2&3G信号过差导致,这点可抓模块log分析。

如指令报错则可判断模块固件版本不支持电话功能,短信同理



SERVICE ONLINE
HOTLINE
  • 0755-86242231