RK平台:调试SRM825 WiFi模组

本文主要记录项目开发过程中更换新的5G模组SRM825的调试过程。其主要包括:添加模组驱动、配置模组库文件、修改权限等

1、添加模组相关驱动:

cpp 复制代码
路径:kernel/drivers/pcie_mhi

2、添加对应的RIL库:

cpp 复制代码
vendor/rockchip/common/phone/SRM825NCN-4XX

在mk文件中添加配置:

cpp 复制代码
vendor/rockchip/common/phone/phone.mk

ifeq ($(strip $(PRODUCT_MODEM)), SRM825NCN)
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/SRM825NCN-4XX/libmeig-ril_tianmi.so:vendor/lib64/hw/libreference-ril.so \
    $(LOCAL_PATH)/SRM825NCN-4XX/chat:system/bin/chat \
    $(LOCAL_PATH)/SRM825NCN-4XX/ip-up:system/etc/ppp/ip-up \
    $(LOCAL_PATH)/SRM825NCN-4XX/ip-down:system/etc/ppp/ip-down \
    $(LOCAL_PATH)/SRM825NCN-4XX/libril_hal15.so:/vendor/lib64/libril.so \
    $(LOCAL_PATH)/SRM825NCN-4XX/rild.rc:/vendor/etc/init/rild.rc \
    $(LOCAL_PATH)/SRM825NCN-4XX/rild:/vendor/bin/hw/rild
endif

3、修改rild权限:

cpp 复制代码
hardware/ril/rild/rild.rc

diff --git a/rild/rild.rc b/rild/rild.rc
index f6beb54..3cc19fc 100644
--- a/rild/rild.rc
+++ b/rild/rild.rc
@@ -1,5 +1,5 @@
 service vendor.ril-daemon /vendor/bin/hw/rild
     class main
-    user radio
+    user root
     group radio cache inet misc audio log readproc wakelock
     capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

4、添加属性:

cpp 复制代码
build/make/tools/buildinfo.sh

diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh
index 96c0922854..ff683b095f 100755
--- a/tools/buildinfo.sh
+++ b/tools/buildinfo.sh
@@ -3,6 +3,7 @@
 echo "# begin build properties"
 echo "# autogenerated by buildinfo.sh"

+echo "persist.ril.use.oldgobi=true"
 echo "ro.product.manufacturer=temi"
 echo "ro.product.brand=temi-V3"
 echo "ro.product.model=rk3399-Android11-temiV3"

调试过程中遇到的问题:

1、PCIE link失败

查看模组供电正常。尝试调整模组检测的时延:

cpp 复制代码
kernel/drivers/pci/controller/pcie-rockchip-host.c

diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c
index 41a86516c3e9..64ed71d18637 100644
--- a/drivers/pci/controller/pcie-rockchip-host.c
+++ b/drivers/pci/controller/pcie-rockchip-host.c
@@ -339,7 +339,7 @@ static int rockchip_pcie_host_init_port(struct rockchip_pcie *rockchip)
        struct device *dev = rockchip->dev;
        int err, i = MAX_LANE_NUM;
        u32 status;
-       int timeouts = 2000;
+       int timeouts = 10000;
        gpiod_set_value_cansleep(rockchip->ep_gpio, 0);

        err = rockchip_pcie_init_port(rockchip);

调整时延后,依然没有检测是模组设备。和模组厂家沟通,应该是模组没有刷版本,没有做PCIE的适配。交由模组厂家解决后,模组成功识别。这里要注意,使用的是PCIE接口还是USB接口,模组要刷对应的固件才能正常使用

2、测试发现模组只有4G信号

adb logcat -b radio -v time抓取radio日志分析,发现有这样的log:

cpp 复制代码
01-16 14:59:14.915 D/RIL-AT  (  403): AT> AT^HCSQ?
01-16 14:59:14.915 D/RIL-CM  (  403): [01-16_06:59:14:915][meig_cm] current is pcie
01-16 14:59:14.915 D/RILJ    (  833): [0027]> BASEBAND_VERSION [PHONE0]
01-16 14:59:14.915 D/RIL-CM  (  403): [01-16_06:59:14:916][meig_cm] netcard driver = pcie_mhi, driver version = V1.3.4
01-16 14:59:14.916 D/RILJ    (  833): [0021]< OPERATOR {CHINA MOBILE, CMCC, 46000} [PHONE0]
01-16 14:59:14.916 D/RIL-CM  (  403): [01-16_06:59:14:916][meig_cm] Found Qmi Channel
01-16 14:59:14.916 D/RIL-CM  (  403): [01-16_06:59:14:916][meig_cm] main function before run ql_qmap_mode_detect qmap  version is:0,qmap mode is:1
01-16 14:59:14.916 D/RIL-CM  (  403): [01-16_06:59:14:916][meig_cm] enter ql_get_drier_rmnet_info
01-16 14:59:14.916 D/RIL-CM  (  403): [01-16_06:59:14:917][meig_cm] usnet_adapter name is:rmnet_mhi0
01-16 14:59:14.916 D/RIL-CM  (  403): [01-16_06:59:14:917][meig_cm] rmnet_Info rx_urb_size is:15360,qmap_mode is:1,qmap_version is:9,inface id is:4
01-16 14:59:14.917 D/RIL-CM  (  403): [01-16_06:59:14:917][meig_cm] qmap_mode = 1, qmap_version = 9, qmap_size = 15360, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
01-16 14:59:14.917 D/RIL-AT  (  403): AT< ^HCSQ: 0,0,"LTE",59,34,60,234
01-16 14:59:14.918 D/RIL-AT  (  403): AT< OK
01-16 14:59:14.918 D/RIL     (  403): networktype chanege notify to framework
01-16 14:59:14.918 D/RIL-CM  (  403): [01-16_06:59:14:918][meig_cm] after function qmap version is:9,qmap mode is:1
01-16 14:59:14.918 D/RIL-CM  (  403): [01-16_06:59:14:918][meig_cm] old gobi adapter:rmnet_mhi0, muxadapter[0]:rmnet_mhi0
01-16 14:59:14.918 D/RIL-CM  (  403): [01-16_06:59:14:918][meig_cm] qmap_mode=1
01-16 14:59:14.918 D/RIL     (  403): LTE
......
01-16 14:59:14.951 D/RILJ    (  833): [0044]> OPERATOR [PHONE0]
01-16 14:59:14.951 D/RIL-AT  (  403): AT< ^SYSINFOEX:2,3,0,1,0,9,"LTE",72,"TDD LTE"
01-16 14:59:14.951 D/RIL-AT  (  403): AT< OK

从log看确实只有4G信号。和模组厂家沟通说可能是上层锁4G信号了。使用getprop ro.telephony.default_network 查看默认网络,结果显示:33。在 RILConstants.java 中查看

java 复制代码
frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java

/** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */
int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33;

33是有5G网络信号的。接着分析,替换模组驱动和RIL库,怎么会影响到上层锁4G信号的?换回原来的RIL库,用原来的模组测试,有5G信号,说明是RIL库的问题。联系模组厂家更新RIL库,再次看到radio log

cpp 复制代码
01-18 09:37:23.835   394   394 D RIL-AT  : AT> AT^HCSQ?
01-18 09:37:23.835  1125  1125 D SST     : [0] notifyVoiceRegStateRilRadioTechnologyChanged: vrs=1 rat=0
01-18 09:37:23.838   458   880 D TelephonyRegistry: listen oscl: mHasNotifySubscriptionInfoChangedOccurred==false no callback
01-18 09:37:23.839  1125  1125 W CarrierConfigManager: Error getting config for subId -1 ICarrierConfigLoader is null
01-18 09:37:23.842   394   457 D RIL-AT  : AT< ^HCSQ: 0,0,"NR5G",65,62,55
01-18 09:37:23.842   394   457 D RIL-AT  : AT< OK
01-18 09:37:23.842   394   394 D RIL     : RIL_SignalStrength_v10 length is:56

OK,连接的是NR5G,表明有5G信号了。

相关推荐
黎阳之光13 小时前
黎阳之光:十五五规划下,以5G+AI全栈技术重塑零碳园区“信息高速路”
大数据·人工智能·5g·安全·智慧城市
求真求知的糖葫芦13 小时前
硅基 PA 学习笔记 (一)应用于毫米波5G的一种大功率宽带多初级基于DAT的Doherty功率放大器学习笔记(上)
笔记·学习·5g
珠海西格电力2 天前
5G+物联网,零碳园区管理系统的“信息高速路”
大数据·人工智能·物联网·算法·5g
安科士andxe3 天前
安科士 SFP-25G-SR 光模块核心技术解析,打造 25GbE 短距传输硬核方案
5g
石头wang3 天前
分辨率与WLAN
wifi·分辨率·wlan
此方ls3 天前
前沿科技一——5G/6G
科技·5g
爱浦路 IPLOOK4 天前
5G 核心网用户面功能实体 UPF:技术演进与选型指南
5g
liuyukuan4 天前
5G-A与AI融合开启智能体互联网时代
人工智能·5g
一去不复返的通信er4 天前
5G系统级仿真
网络·5g