发布时间:2025-06-24 18:53:58 作者:北方职教升学中心 阅读量:763
本文以rk3588 android13平台调试移远EC20模块所遇到的问题做出记录。ifconfig查看相应的网卡也没有自动获取到IP。
将系统下vendor/libril.so替换为移远提供的libril.so,如果出现previously defined at build/make/core/base_rules.mk等报错可以查找第4点添加对应的宏做出修改
), arm64)-PRODUCT_PROPERTY_OVERRIDES += \+#PRODUCT_PROPERTY_OVERRIDES += \ vendor.rild.libpath=/vendor/lib64/librk-ril.soPRODUCT_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.soelse-PRODUCT_PROPERTY_OVERRIDES += \+#PRODUCT_PROPERTY_OVERRIDES += \ vendor.rild.libpath=/vendor/lib/librk-ril.soPRODUCT_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=yCONFIG_USB_SERIAL_WWAN=yCONFIG_USB_SERIAL_OPTION=y如果需要ppp拨号的情况下:CONFIG_PPP=yCONFIG_PPP_BSDCOMP=yCONFIG_PPP_DEFLATE=yCONFIG_PPP_FILTER=yCONFIG_PPP_MPPE=yCONFIG_PPP_MULTILINK=yCONFIG_PPPOE=yCONFIG_PPPOLAC=yCONFIG_PPPOPNS=yCONFIG_PPP_ASYNC=yCONFIG_PPP_SYNC_TTY=yCONFIG_SLIP=yCONFIG_SLHC=y如果需要rndis或者ecm拨号情况下:CONFIG_USB_USBNET=yCONFIG_USB_NET_CDCETHER=yCONFIG_USB_NET_RNDIS_HOST=y
9.添加4g图标,信号图标
device/rockchip/common目录下overlay_wifi_only/frameworks/base/core/res/res/values/config.xmlconfig_mobile_data_capable属性修改为truedevice/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-daemonsetprop ctl.start ril-daemon
调试过程中遇到的问题
a.遇到AIDL packages are not found in any compatibility matrix
打开system/libvintf目录下做如下改动:
b. logcat -b radio查看ril没有正确加载,dlopen打开库失败
先去系统的"/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/lib64android.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命令的输出结果,但是就是无法上网。