联系管理员

开通文章发布权限

扫码 添加微信
微信图片
电话: QQ:1602036736

rk3588 android13调试移远EC20模块(仅参考)

(仅参考) 没有实物验证

本文以rk3588 android13平台调试移远EC20模块所遇到的问题做出记录。
Soc: rk3588
Os: android13

1.sdk支持4g modem功能

打开device/rockchip/common下BoardConfig.mk
BOARD_HAS_RK_4G_MODEM ?=true

2.修改ro.boot.noril为false

因为vendor/rockchip/common/phone/phone.mk和device/rockchip/common/modules/4g_modem.mk都有定义 将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服务

hardware/ril/rild/rild.rc文件中
service ril-daemon /vendor/bin/hw/rild
    class main
    user root
    group radio cache inet misc audio log readproc wakelock
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

7.apn相关配置文件如下路径:

vendor/rockchip/common/phone/etc/apns-full-conf.xml

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.拨号命令执行

setprop ctl.stop ril-daemon
setprop ctl.start ril-daemon

调试过程中遇到的问题

a.遇到AIDL packages are not found in any compatibility matrix
图片#B #S #R #60% #auto
打开system/libvintf目录下做如下改动:
图片#B #S #R #60% #auto

  1. logcat -b radio查看ril没有正确加载,dlopen打开库失败
    图片#B #S #R #60% #auto

先去系统的"/system/lib64"和"/vendor/lib64"目录下找一些看有没有响应的库,如果没有在device/rockchip/common/modules/4g_modules.mk

android.hardware.secure_element@1.0 \
 android.hardware.secure_element@1.1 \
android.hardware.secure_element@1.2
如果还提示错误,参照下面的修改复制到vendor/lib64
android.hardware.secure_element@1.0.vendor \
android.hardware.secure_element@1.1.vendor \
android.hardware.secure_element@1.2.vendor

c.系统提示找不到android.hardware.radio@1.5::IRadio/slot1
调试过程中遇到这个错误的时候系统的4G图标不能显示,"logcat -b radio"查看log,发现ril库已经跑起来了,有AT命令的输出结果,但是就是无法上网。ifconfig查看相应的网卡也没有自动获取到IP。
图片#B #S #R #60% #auto

将系统下vendor/libril.so替换为移远提供的libril.so,如果出现previously defined at build/make/core/base_rules.mk等报错可以查找第4点添加对应的宏做出修改

 

d.查找系统所支持的依赖库是否存在

find -name android.hardware.radio* 2>/dev/null

看看如下的依赖库是否存在

libhidlbase.so
libhwbinder.so
android.hardware.radio.deprecated@1.0.so
android.hardware.radio@1.3.so
android.hardware.radio@1.4.so
android.hardware.radio@1.5.so 此文件从安卓11开始才有
android.hardware.radio@1.6.so 此文件从安卓12开始才有
android.hardware.radio.config@1.0.so
android,hardware.radio.config@1.1.so
android,hardware.radio.config@1.2.so

评论

快捷导航

把好文章收藏到微信

打开微信,扫码查看

关闭

还没有账号?立即注册