【硬件平台】
CPU:RK3288
4G:SIM7650E
【背景知识】
Android中负责通信功能的Telephony中间层,通常也被称之为RIL(Radio Interface Layer)
Telephony 整体架构图
【软件梳理】
启动脚本需要编译到 boot 里面,所以不能直接 push 到系统里面, 否则不能生效
./device/rockchip/rk3288/rk3288_box/init.rc
运行service启动脚本并添加权限
on init
# add for sim7650
chmod 0777 /system/etc/init.gprs-pppd
chmod 0777 /system/etc/3gdata_call.conf
添加开机启动,开机启动的 ril 进程和库的路径一定要和 push 时的文件路径对应
#simcom_add
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so
class main
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio sdcard_rw
service pppd_gprs /system/etc/init.gprs-pppd
user root
group radio cache inet misc
disabled
oneshot
#simcom_end
拷贝原厂ril库到根文件系统
./vendor/rockchip/common/phone/phone.mk
PRODUCT_COPY_FILES += \
$(CUR_PATH)/phone/lib/sim7605e/libreference-ril.so:system/lib/libreference-ril.so\
$(CUR_PATH)/phone/lib/sim7605e/init.gprs-pppd:system/etc/init.gprs-pppd\
$(CUR_PATH)/phone/lib/sim7605e/3gdata_call.conf:system/etc/3gdata_call.conf\
$(CUR_PATH)/phone/lib/sim7605e/rild:system/bin/rild\
$(CUR_PATH)/phone/lib/sim7605e/chat:system/bin/chat\
$(CUR_PATH)/phone/lib/sim7605e/libril.so:system/lib/libril.so
【日志搜集】
// 内核日志
dmesg -c
// radio日志
logcat -v time -b radio
【问题总结】
1、在init.rc脚本中修改/system/etc/init.gprs-pppd文件权限失败?
https://www.cnblogs.com/jason207489550/p/8600270.html
—》当前system目录设置为只读权限了,在init.rc脚本中无法修改/system/etc目录下的问价权限,通过把文件拷贝到/system/bin目录解决,此目录默认有可执行权限
【参考资料】
Android init.rc文件详解
https://blog.csdn.net/u013171283/article/details/79198335
Android系统init进程启动及init.rc全解析
https://zhonglunshun.blog.csdn.net/article/details/78615980?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2
Android RIL RILJ, RILC, RILD
https://lixiaogang03.github.io/2019/09/12/Android-RIL/