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版本问题
客户安卓主控是wifi only版本,需要打开config_mobile_data_capable配置。可以让客户源码根目录搜索一下config_mobile_data_capable,涉及到的位置都改成true。
还需把属性ro.radio.noril=false,如果是true会不运行phone 模块
04
qmi驱动问题
需要替换成移远的qmi_wwan_q驱动即可
经常有客户移植了qmi_wwan_q却加载的还是qmi_wwan,其实是没满足以下两步要求:
05
安卓支持热插拔相关问题
在客户设置热插拔时,只在初始化AT中加入AT+QSIMDET=1,1的情况,
那这样会出现以下问题:
只设置初始化AT(AT+QSIMDET=1,1)的情况下,在ril初始化AT流程中,发送此消息后不会立即生效(不会触发AT+CFUN=1,1操作),需重启后热插拔功能才会真正生效。
因模块出厂是AT+QSIMDET=0,0状态,若卡座是高电平识别,此时设备第一次开机都是识别不到卡的状态,如客户是在产线才发现这个问题,就会疯狂催原厂了。
06
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
注网与掉网相关问题
可开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
电话、短信相关问题
遇到比较多的是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分析。
如指令报错则可判断模块固件版本不支持电话功能,短信同理