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信号了。

相关推荐
@insist1232 天前
系统架构设计师-5G 技术、冗余设计与分层架构
5g·架构·系统架构·软考·系统架构设计师·软件水平考试
terry6002 天前
5G视频短信服务商选型全攻略:通道资源、架构能力与成本评估2026最新标准
大数据·人工智能·5g·json·asp.net·信息与通信·数据库架构
欢乐熊嵌入式编程3 天前
WIFI通信协议全解析18: ESP32 作为 AP 热点:打造自己的“微型路由器”(附完整实战代码)
物联网·wifi·esp32·蓝牙·wifi协议·ap热点
Johnstons3 天前
5G网络来了,App怎么测?5G网络损伤测试完整指南
开发语言·网络·5g·php·弱网测试·网络损伤·网络损伤仪
我爱C编程3 天前
基于遗传优化和GDOP评价的5G微基站部署策略matlab仿真
5g·matlab·遗传优化·gdop·5g微基站部署
terry6003 天前
2026企业5G短信服务商选型全指南:通道、架构、服务全维度评估标准
大数据·人工智能·5g·web安全·信息与通信·数据库架构
纳米软件5 天前
CSDN:5G_6G毫米波射频芯片测试,如何解决OTA测试中的“测不准”与“效率低”?
自动化测试·5g·ate测试·ate测试系统·电子测试测量·电子测试工具
小白小宋5 天前
【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现
算法·5g·matlab·信息与通信·信号处理
天南散修6 天前
MT7916 BA流程
网络·驱动开发·wifi·802.11
天南散修6 天前
MT7916驱动中802.11转换为802.3
linux·网络·驱动开发·wifi·802.11