1、问题背景
Modem识别卡,但是UI无法识别卡,抓取问题机开机Log,发现RILJ一直在找寻RILD,但是无法获取相关服务,因此可以确认RILD Crash或出现异常。
但是在异常Log中搜索RILD,也未见相关关键字Log
2、对比实验
抓取对比机开机Log,明显有RILD启动相关打印
对比分析异常Log RILD没有启动。既然RILD没有启动,手动执行RILD启动可行吗?参考mrkrild.rc启动执行.
在问题机上adb shell手动执行/vendor/bin/hw/mtkfusionrild -l libmtk-ril.so,结果打印出如下log,如下图红框所示,但是正常机器启动无此Log打印
问题机:adb shell getprop "vendor.ril.mux.start" 为空
对比机:adb shell getprop "vendor.ril.mux.start" 为0
针对该属性,搜索全局代码
发现在RILD启动之前有gsm0710muxd.c其他进程修改该属性,正常机器就无相关打印,相关代码如下:
可以理解为MUXD多路复用通道启动成功后,在启动RILD。
3、深入研究
现在问题变成了为什么异常机器gsm0710muxd.c不走该逻辑了,再次对比开机Log中muxd的表现。
异常Log
正常Log
发现异常Log相关逻辑信道打开失败,而正常Log无相关报错。查看对应信道对应代码。如下图红框所示,即如下信道配置无法打开。
4、解决方案
上下层卡配置逻辑不相同导致,配置相关SIM卡配置项MTK_MULTI_SIM_SUPPORT为DSDS,或者TSTS,保证AP和Modem一致。