rk3588 android13调试移远EC20模块(仅参考)
(仅参考) 没有实物验证
本文以rk3588 android13平台调试移远EC20模块所遇到的问题做出记录。
Soc: rk3588
Os: android13
1.sdk支持4g modem功能
2.修改ro.boot.noril为false
3.修改dhcpcd和rk所支持的librk-ril.so
device/rockchip/common/4g_modem路径下存放4g模块相关的ril库
但是拿到sdk中device/rockchip/common/modules/4g_modem.mk定义了dhcpcd和librk-ril.so的拷贝
因为我们拿到的是EC20模块所以将rk提供的ril库注释掉,改动如下所示:
--- a/modules/4g_modem.mk
+++ b/modules/4g_modem.mk
@@ -17,15 +17,29 @@
PRODUCT_PACKAGES += \
CarrierDefaultApp \
CarrierConfig \
+ TelephonyProvider \
+ TeleService \
+ Telecom \
rild \
- librk-ril \
dhcpcd
ifeq ($(strip $(TARGET_ARCH)), arm64)
-PRODUCT_PROPERTY_OVERRIDES += \
+#PRODUCT_PROPERTY_OVERRIDES += \
vendor.rild.libpath=/vendor/lib64/librk-ril.so
PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
- $(LOCAL_PATH)/4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so
+ $(LOCAL_PATH)/../4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
+ #$(LOCAL_PATH)/../4g_modem/lib64/libril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libril.so
else
-PRODUCT_PROPERTY_OVERRIDES += \
+#PRODUCT_PROPERTY_OVERRIDES += \
vendor.rild.libpath=/vendor/lib/librk-ril.so
PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/4g_modem/bin32/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
- $(LOCAL_PATH)/4g_modem/lib32/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib/librk-ril.so
+ $(LOCAL_PATH)/../4g_modem/bin32/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
+ #$(LOCAL_PATH)/../4g_modem/lib32/libril.so:$(TARGET_COPY_OUT_VENDOR)/lib/libril.so
4.增加EC20模块lib库并编译进系统
我们拿到移远所提供的ril库等文件之后,可以在device/rockchip/rk3588/rk3588_box下面的.mk文件做以下修改:
如rk3588_box.mk
+BOARD_HAVE_VENDOR_RIL := true
+#$(warning zhuhua BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES : $(BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES))
+PRODUCT_COPY_FILES += \
+ device/rockchip/common/4g_modem/EC20/ip-down:system/etc/ppp/ip-down \
+ device/rockchip/common/4g_modem/EC20/ip-up:system/etc/ppp/ip-up \
+ device/rockchip/common/4g_modem/EC20/chat:system/bin/chat \
+ device/rockchip/common/4g_modem/EC20/apns-full-conf.xml:system/etc/apns-conf.xml \
+ device/rockchip/common/4g_modem/EC20/ql-ril.conf:system/etc/ql-ril.conf \
+ device/rockchip/common/4g_modem/EC20/ql-ril.conf:vendor/etc/ql-ril.conf \
+ device/rockchip/common/4g_modem/EC20/lib/libreference-EC20-ril.so:vendor/lib/libreference-EC20-ril.so \
+ device/rockchip/common/4g_modem/EC20/lib64/libreference-EC20-ril.so:vendor/lib64/libreference-EC20-ril.so \
+ device/rockchip/common/4g_modem/EC20/lib64/libril.so:vendor/lib/libril.so \
+ device/rockchip/common/4g_modem/EC20/lib64/libril.so:vendor/lib64/libril.so
如果copy失败的话可以在同级目录下Boardconfig.mk做出以下修改
+BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES :=true
+BUILD_BROKEN_DUP_RULES := true
5.配置4g相关的hidl
根据kernel的版本来选择compatibility_matrix.*.xml的文件,android13选择compatibility_matrix.7.xml
做出改动如下:
修改android13所支持的so库:
PRODUCT_PACKAGES += \
- android.hardware.radio@1.2-radio-service \
- android.hardware.radio.config@1.0-service
+ android.hardware.secure_element@1.0 \
+ android.hardware.secure_element@1.1 \
+ android.hardware.secure_element@1.2 \
+ android.hardware.secure_element@1.0.vendor \
+ android.hardware.secure_element@1.1.vendor \
+ android.hardware.secure_element@1.2.vendor
+PRODUCT_PACKAGES += \
+ android.hardware.radio@1.5-radio-service \
+ android.hardware.radio.config@1.2-service \
+ android.hardware.radio.config@1.0-service \
+ android.hardware.radio.config@1.0.vendor \
+ android.hardware.radio.config@1.2.vendor \
+ android.hardware.radio@1.5.vendor \
+ libhwbinder.vendor
修改4g_modem目录下的manifest.xml
--- a/4g_modem/manifest.xml
+++ b/4g_modem/manifest.xml
@@ -2,8 +2,7 @@
<hal format="hidl">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
- <fqname>@1.1::IRadio/slot1</fqname>
- <fqname>@1.1::IRadio/slot2</fqname>
+ <fqname>@1.5::IRadio/slot1</fqname>
<fqname>@1.2::ISap/slot1</fqname>
</hal>
<hal format="hidl">
修改hardware/interfaces目录下的compatibility_matrix.7.xml
--- a/compatibility_matrices/compatibility_matrix.7.xml
+++ b/compatibility_matrices/compatibility_matrix.7.xml
@@ -516,9 +516,17 @@
<instance>default</instance>
</interface>
</hal>
- <hal format="aidl" optional="true">
+ <hal format="hidl" optional="true">
<name>android.hardware.radio.config</name>
- <version>1</version>
+ <!--
+ Note: Devices launching with target-level 4, if implementing the
+ radio config HAL, must provide an implementation of 1.1 IRadioConfig
+ that can handle version 1.2 of IRadioConfigResponse and
+ IRadioConfigIndication.
+ -->
+ <version>1.0</version>
+ <version>1.1</version>
+ <version>1.2</version>
<interface>
<name>IRadioConfig</name>
<instance>default</instance>
@@ -573,6 +581,28 @@
<instance>slot2</instance>
<instance>slot3</instance>
</interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio</name>
+ <version>1.1</version>
+ <version>1.2</version>
+ <version>1.3</version>
+ <version>1.4</version>
+ <version>1.5</version>
+ <interface>
+ <name>IRadio</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio.deprecated</name>
+ <version>1.0</version>
+ <interface>
+ <name>IOemHook</name>
+ <instance>slot1</instance>
+ </interface>
</hal>
<hal format="aidl" optional="true">
<name>android.hardware.radio.voice</name>
6.增加rild服务
7.apn相关配置文件如下路径:
8.内核增加模块vid和pid及宏配置
kernel-5.10/drivers/usb/serial/option.c文件增加id
添加options驱动支持:
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
如果需要ppp拨号的情况下:
CONFIG_PPP=y
CONFIG_PPP_BSDCOMP=y
CONFIG_PPP_DEFLATE=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=y
CONFIG_PPPOLAC=y
CONFIG_PPPOPNS=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
CONFIG_SLIP=y
CONFIG_SLHC=y
如果需要rndis或者ecm拨号情况下:
CONFIG_USB_USBNET=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_RNDIS_HOST=y
9.添加4g图标,信号图标
device/rockchip/common目录下
overlay_wifi_only/frameworks/base/core/res/res/values/config.xml
config_mobile_data_capable属性修改为true
device/rockchip/rk3588
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -31,6 +31,14 @@
<!-- the 6th element indicates boot-time dependency-met value. -->
<string-array translatable="false" name="networkAttributes">
<item>"wifi,1,1,2,-1,true"</item>
+ <item>"mobile,0,0,0,-1,true"</item>
+ <item>"mobile_mms,2,0,2,60000,false"</item>
+ <item>"mobile_supl,3,0,2,60000,true"</item>
+ <item>"mobile_dun,4,0,2,60000,true"</item>
+ <item>"mobile_hipri,5,0,3,60000,true"</item>
+ <item>"mobile_fota,10,0,2,60000,true"</item>
+ <item>"mobile_ims,11,0,2,60000,true"</item>
+ <item>"mobile_cbs,12,0,2,60000,true"</item>
<item>"bluetooth,7,7,0,-1,true"</item>
<item>"ethernet,9,9,9,-1,true"</item>
</string-array>
10.拨号命令执行
调试过程中遇到的问题
a.遇到AIDL packages are not found in any compatibility matrix
打开system/libvintf目录下做如下改动:
logcat -b radio查看ril没有正确加载,dlopen打开库失败

先去系统的"/system/lib64"和"/vendor/lib64"目录下找一些看有没有响应的库,如果没有在device/rockchip/common/modules/4g_modules.mk
c.系统提示找不到android.hardware.radio@1.5::IRadio/slot1
调试过程中遇到这个错误的时候系统的4G图标不能显示,"logcat -b radio"查看log,发现ril库已经跑起来了,有AT命令的输出结果,但是就是无法上网。ifconfig查看相应的网卡也没有自动获取到IP。
将系统下vendor/libril.so替换为移远提供的libril.so,如果出现previously defined at build/make/core/base_rules.mk等报错可以查找第4点添加对应的宏做出修改
d.查找系统所支持的依赖库是否存在
看看如下的依赖库是否存在


评论