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

相关推荐
安科士andxe1 天前
深入浅出理解安科士1.25G 1X9 40km光模块,核心技术解析与选型指南
5g
南京码讯光电技术有限公司1 天前
工业级4G/5G CPE选型指南:如何实现恶劣环境下的4G/5G与WiFi全覆盖?
5g·工业通信·cpe·工业cpe·工业无线覆盖
南京码讯光电技术有限公司1 天前
工业防爆DTU选型指南:5G时代下危化环境的数据安全与通信保障
5g·dtu·防爆dtu·防爆ap·防爆网桥
优利德1 天前
频谱仪&矢量网络分析仪&射频模拟信号发生器 | 5G终端MIMO波束赋形测试
5g·信号分析仪·矢量分析·射频模拟信号发生器
YaraMemo1 天前
全双工中继和有源RIS的自干扰机制
5g·信息与通信
Dev7z2 天前
基于MATLAB的5G物理层文本传输系统仿真与性能分析
开发语言·5g·matlab
深念Y4 天前
中兴BAV系列机顶盒WiFi天线改造记:从合盖信号差到外壳开孔外置
网络·wifi·天线·信号·diy·数码·机顶盒
Zero_Era5 天前
物联网加密芯片LKT4305GM
物联网·5g
德思特5 天前
一文读懂移动通信网络架构:4G/5G 组网与测试基础
5g·4g·基站模拟器·移动通信网络架构
安科士andxe5 天前
实践指南|安科士SFP-10/25G-LR-S-I光模块部署与运维技巧
运维·人工智能·5g