91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RK3576+Android15+Linux6.1調(diào)試EM05 4G模塊全記錄:從底層到上層的踩坑與破局

jf_44130326 ? 來源:Linux1024 ? 2026-02-03 15:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式Android開發(fā)中,4G模塊的調(diào)試往往是牽一發(fā)而動全身的關(guān)鍵環(huán)節(jié)——既要搞定底層驅(qū)動與內(nèi)核適配,又要打通上層框架與RILRadio Interface Layer)服務(wù)。最近我們在RK3576開發(fā)板+ Android15系統(tǒng)+ Linux6.1內(nèi)核環(huán)境下調(diào)試EM05 4G模塊時,就遇到了從“RIL起不來庫缺失再到上層功能未開的一系列問題。今天就把完整的調(diào)試流程、踩過的坑和解決方案整理出來,希望能給做類似開發(fā)的同學(xué)避坑!

一、調(diào)試環(huán)境先明確

在開始前,先把核心環(huán)境信息列清楚,避免大家因環(huán)境差異導(dǎo)致問題復(fù)現(xiàn)偏差:

?硬件:RK3576開發(fā)板+ EM05 4G模塊

?系統(tǒng):Android 15(上層框架)

?內(nèi)核:Linux 6.1(底層驅(qū)動)

?關(guān)鍵依賴:Quectel_Android_RIL_Driver_V4.2.1

二、調(diào)試全流程:從“RIL未啟動“4G通網(wǎng)

1.初遇困境:模組RIL未啟動,rild文件失蹤

現(xiàn)象

剛上電調(diào)試時,發(fā)現(xiàn)4G模組完全沒反應(yīng),執(zhí)行service ril-daemon指令無任何輸出——核心的RIL(無線接口層)服務(wù)根本沒起來。

wKgZPGkam2yAe-gpAADeI8HhVJA265.png

排查

RIL服務(wù)依賴rild可執(zhí)行文件,其默認路徑是vendor/bin/hw/rild。進入該路徑查看,果然沒有rild文件——系統(tǒng)編譯時壓根沒把rild編進去

解決方案

需要在代碼中添加rild的編譯配置,具體是:

hardwarerilrild目錄下補充Android.mk文件,通過該.mk文件將rild編譯進系統(tǒng)。重新編譯后,vendor/bin/hw/rild路徑下成功生成rild文件。

2.新問題:rild存在,但鏈接庫缺胳膊少腿

好不容易搞定rild,運行后又報錯——鏈接庫缺失!這一步遇到了兩個典型的庫問題,我們逐個解決。

問題2.1android.hardware.radio系列NDK庫缺失

現(xiàn)象

執(zhí)行/vendor/bin/hw/rild驗證時,終端報錯:

CANNOT LINK EXECUTABLE "/vendor/bin/hw/rild": library "android.hardware.radio.config-V2-ndk.so" not found: needed by /vendor/lib64/libril.so in namespace

顯然,libril.so依賴的一系列android.hardware.radio相關(guān)NDK庫沒加進去。

解決方案

修改hardware/ril/rild/Android.mk文件,在LOCAL_SHARED_LIBRARIES中補充缺失的NDK庫,具體添加內(nèi)容如下:

--- a/hardware/ril/rild/Android.mk

+++ b/hardware/ril/rild/Android.mk

@ -14,6 +14, 16 @@ LOCAL_SHARED_LIBRARIES :=

liblog

libril

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.config-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.data-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.messaging-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.modem-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.network-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.sim-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.voice-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio-V2-ndk

添加后重新編譯,將生成的庫文件直接pushvendor/lib64/路徑下。

問題2.2libnetutils.so缺失,訪問路徑不對

wKgZPGkam2yAfJlOAAAQyYmKeow391.png

現(xiàn)象

解決NDK庫后,查看Logcat又出現(xiàn)新報錯(關(guān)鍵詞:dlopen failed: library "libnetutils.so" not found):

1547): dlopen failed: dlopen failed: library "libnetutils.so" not found: needed by /vendor/lib64/quectel_ril/libreference-ril.so in namespace (default)

1826): dlopen failed: dlopen failed: library "libnetutils.so" not found: needed by vendor/lib64/quectel_ril/libreference-ril.so in namespace (default)

find命令查找文件位置,發(fā)現(xiàn)libnetutils.so其實存在,路徑是./system/lib64/libnetutils.so,但libreference-ril.sovendor目錄下,訪問不到system目錄的庫。

解決方案

直接將/system/lib64/libnetutils.so移動到/vendor/lib64/路徑下(與libreference-ril.so同目錄)。

這一步操作后,底層RIL鏈路終于打通!從Log中能看到AT指令交互(比如查詢服務(wù)小區(qū)的AT+QENG="servingcell"):

wKgZPGkam2yAQgoBAAEf1KRaz7w293.png

3.上層卡點:無RILJ初始化,4G功能未開啟

底層打通后,查看系統(tǒng)Log發(fā)現(xiàn)一個關(guān)鍵問題:沒有RILJRIL Java層)初始化相關(guān)操作——上層根本不知道要啟用4G功能!

原因

Android系統(tǒng)默認可能關(guān)閉了移動數(shù)據(jù)和電信功能,需要手動開啟配置。

解決方案

分兩步修改上層配置:

步驟1:開啟移動數(shù)據(jù)能力(修改config.xml

修改overlay/frameworks/base/core/res/res/values/config.xml,添加config_mobile_data_capabletrue(表示支持移動數(shù)據(jù)),具體diff

--- a/overlay/frameworks/base/core/res/res/values/config.xml

+++ b/overlay/frameworks/base/core/res/res/values/config.xml

@@ -24,6 +24,11 @@

false

true

步驟2:添加電信功能權(quán)限(修改device.mk

修改device.mk,添加電信功能的權(quán)限配置文件拷貝,確保系統(tǒng)識別為支持電信功能的設(shè)備

+++ b/device.mk

@@ -260,6 +260,9 @@ PRODUCT_COPY_FILES +=

frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml

endif

+PRODUCT_COPY_FILES +=

frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml

4.再遇波折:HAL配置缺失,功能仍不通

修改完上層配置后,運行還是沒通——查了半天發(fā)現(xiàn),缺少4G模塊對應(yīng)的HAL(硬件抽象層)配置,導(dǎo)致上層無法與底層RIL服務(wù)通信

解決方案

devicerockchipcommon4g_modem目錄下創(chuàng)建/修改manifest.xml,添加android.hardware.radio系列HALAIDL配置(版本均為V2,對應(yīng)之前的NDK庫版本):

android.hardware.radio.config

2

IRadioConfig/default

android.hardware.radio.data

2

IRadioData/slot1

android.hardware.radio.messaging

2

IRadioMessaging/slot1

android.hardware.radio.modem

2

IRadioModem/slot1

android.hardware.radio.network

2

IRadioNetwork/slot1

android.hardware.radio.sim

2

IRadioSim/slot1

android.hardware.radio.voice

2

IRadioVoice/slot1

5.最后一公里:ril-daemon服務(wù)被停止

配置完HAL后,功能還是沒通!用getprop |grep ril查看服務(wù)狀態(tài),發(fā)現(xiàn)關(guān)鍵問題:

[init.svc.ril-daemon]:[stopped]

——ril-daemon服務(wù)被莫名關(guān)掉了,電話服務(wù)也隨之停用。

解決方案

關(guān)閉系統(tǒng)中可能導(dǎo)致ril-daemon停止的配置(具體需結(jié)合實際設(shè)備的初始化腳本,此處為針對性關(guān)閉沖突配置)。

操作后重啟服務(wù),ril-daemon終于保持“running”狀態(tài)!

6.驗證:4G功能完全打通

至此,所有問題解決!我們做了三項驗證,確認4G功能正常:

1.網(wǎng)卡信息正常wwan0網(wǎng)卡已識別,獲取到運營商分配的IP

wwan0

Link encap:Ethernet HWaddr e28b6f:c4 Driver qmi_wwan_q

inet addr:10.35.91.190 Mask:255.255.255.252

inet6 addr: fe80:8bff6fc4/64 Scope:Link

UP RUNNING NOARP MTU:1500 Metric:1

RX packets:31 errors:0 dropped:0 overruns:0 frame:0

TX packets:46 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:5678 TX bytes:3960

1.Ping通外網(wǎng):執(zhí)行ping www.baidu.com,無丟包,延遲正常:

PING www.a.shifen.com (157.148.69.151) 56(84) bytes of data.

64 bytes from 157.148.69.151: icmp_seq=1 ttl=52 time=29.9 ms

64 bytes from 157.148.69.151: icmp_seq=2 ttl=52 time=48.6 ms

64 bytes from 157.148.69.151: icmp_seq=3 ttl=52 time=55.3 ms

--- www.a.shifen.com ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

1.系統(tǒng)顯示正常Android界面顯示已連接China Unicom / 4G”,網(wǎng)絡(luò)狀態(tài)穩(wěn)定。

wKgZPGkam2yAadHBAAJEHPVVK2I768.png

三、關(guān)鍵代碼修改記錄匯總

為了方便大家后續(xù)復(fù)用,這里把調(diào)試過程中所有修改/新增的文件列出來(含路徑),避免遺漏:

操作類型

涉及文件路徑

關(guān)鍵修改內(nèi)容

修改

hardware/ril/rild/Android.mk

補充android.hardware.radio系列NDK庫依賴

修改

overlay/frameworks/base/core/res/res/values/config.xml

開啟config_mobile_data_capable

修改

device.mk(含device/rockchip/common/device.mkdevice/rockchip/rk3576/device.mk

添加android.hardware.telephony.gsm.xml拷貝

修改

device/rockchip/common/4g_modem/manifest.xml

配置android.hardware.radio系列HAL

移動

/system/lib64/libnetutils.so → /vendor/lib64/

調(diào)整庫文件路徑,解決訪問問題

新增

hardware/ril/rild/Android.mk

編譯rild文件進系統(tǒng)

其他修改

build/make/core/Makefiledevice/rockchip/common/BoardConfig.mk、kernel-6.1/drivers/net/usb/qmi_wwan_q.c

適配內(nèi)核驅(qū)動、系統(tǒng)編譯配置

新增目錄/文件

device/rockchip/common/4g_modem/、device/rockchip/rk3576/em05_quectel_ril/、external/usb_modeswitch/

4G模塊依賴文件、工具

四、調(diào)試心得

這次EM05 4G模塊調(diào)試,本質(zhì)是從底層到上層的逐層排查:

1.先解決有沒有:比如rild文件是否存在、庫文件是否齊全,這是基礎(chǔ);

2.再解決通不通:比如庫路徑是否正確、HAL配置是否匹配,這是鏈路;

3.最后解決啟不啟:比如服務(wù)是否運行、上層功能是否開啟,這是功能。

過程中一定要善用dmesg(內(nèi)核日志)、logcatAndroid日志)、getprop(系統(tǒng)屬性)、find(文件查找)等命令,定位問題會事半功倍。

如果大家也在RK3576+Android15環(huán)境下調(diào)試4G模塊,遇到類似問題可以參考本文,祝大家少踩坑、快通網(wǎng)!



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20435

    瀏覽量

    333894
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4023

    瀏覽量

    133957
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11756

    瀏覽量

    218995
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RK3576 Android 14.0 SDK開發(fā)指南(第一集)

    RK3576 Android 14.0 SDK代碼編譯 SDK下載到本地后大概70多個G 下載后要做個校驗 解壓后內(nèi)核源碼 kernel代碼路徑說明 Android14支持
    發(fā)表于 05-20 08:43

    Linux學(xué)習(xí)過程過的與如何解決

    Linux記錄記錄Linux學(xué)習(xí)過程過的
    發(fā)表于 11-04 08:44

    記錄寫SAM4S的bootloader所

    記錄寫SAM4S的bootloader所
    發(fā)表于 01-24 07:16

    關(guān)于RK1808板子調(diào)試過程過的記錄

    關(guān)于RK1808板子調(diào)試過程過的記錄
    發(fā)表于 02-16 06:38

    如何調(diào)試RK3288 Android5.1 4G模塊?

    如何調(diào)試RK3288 Android5.1 4G模塊?
    發(fā)表于 03-03 07:46

    如何對RK3288 Android8上的4G模塊EC20進行調(diào)試

    如何對RK3288 Android8上的4G模塊EC20進行調(diào)試呢?
    發(fā)表于 03-04 06:42

    怎樣在RK3288 Android上去移植4G模塊EC20呢

    怎樣在RK3288 Android上去移植4G模塊EC20呢?有哪些移植步驟?
    發(fā)表于 03-04 06:01

    如何對RK3399上的4G模塊EC20進行調(diào)試

    怎樣去移植RK3399上的4G模塊EC20呢?如何對RK3399上的4G模塊EC20進行
    發(fā)表于 03-07 06:15

    嵌入式Linux記錄

    Linux記錄記錄Linux學(xué)習(xí)過程過的
    發(fā)表于 11-01 17:21 ?10次下載
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>踩</b><b class='flag-5'>坑</b><b class='flag-5'>記錄</b>

    STM32CubeIDE+FREERTOS記錄

    STM32CubeIDE+FREERTOS記錄
    發(fā)表于 12-05 18:06 ?15次下載
    STM32CubeIDE+FREERTOS<b class='flag-5'>踩</b><b class='flag-5'>坑</b><b class='flag-5'>記錄</b>

    初次編譯rk3568(rk3576Linux 6.1內(nèi)核記錄報錯終止到成功解決的完整流程

    很多剛接觸瑞芯微 rk 系列芯片開發(fā)的小伙伴,在初次編譯基于 Linux 6.1 內(nèi)核的系統(tǒng)時,很容易因為環(huán)境依賴問題卡殼。最近我在編譯 rk3576
    的頭像 發(fā)表于 02-06 16:47 ?2550次閱讀
    初次編譯<b class='flag-5'>rk</b>3568(<b class='flag-5'>rk3576</b>)<b class='flag-5'>Linux</b> <b class='flag-5'>6.1</b>內(nèi)核<b class='flag-5'>踩</b><b class='flag-5'>坑</b><b class='flag-5'>記錄</b>:<b class='flag-5'>從</b>報錯終止到成功解決的完整流程

    嵌入式Android調(diào)試:AP6256藍牙正常WiFi失效?原來是通道選錯了!

    WiFi” 毫無反應(yīng),日志里還一堆報錯。最近調(diào)試 RK3576+Android14+AP6256 模塊時,就了這個,最后發(fā)現(xiàn)竟是 “通
    的頭像 發(fā)表于 02-02 17:16 ?2154次閱讀
    嵌入式<b class='flag-5'>Android</b><b class='flag-5'>調(diào)試</b>避<b class='flag-5'>坑</b>:AP6256藍牙正常WiFi失效?原來是通道選錯了!

    保姆級教程!RK3588 Linux6.1?固件簽名完整實現(xiàn)方案(不含rootfs)

    內(nèi)核)上實操固件簽名時,了不少官方文檔的,經(jīng)過反復(fù)調(diào)試終于打通全流程。今天就把這份實戰(zhàn)經(jīng)驗整理成保姆級教程,配置到問題排查,一步步帶大家搞定
    的頭像 發(fā)表于 01-14 17:21 ?1812次閱讀
    保姆級教程!<b class='flag-5'>RK</b>3588 <b class='flag-5'>Linux6.1</b>?固件簽名完整實現(xiàn)方案(不含rootfs)

    硬核進階:RK3576 Android15?驅(qū)動與系統(tǒng)開發(fā)實戰(zhàn)指南

    android15,想與大家探討更多,不僅僅是驅(qū)動,更包含android其他方面。 各位嵌入式與Android開發(fā)的朋友們,我們的? RK3576
    的頭像 發(fā)表于 01-26 22:29 ?624次閱讀
    硬核進階:<b class='flag-5'>RK3576</b> <b class='flag-5'>Android15</b>?驅(qū)動與系統(tǒng)開發(fā)實戰(zhàn)指南

    RK3576 Android15音頻開發(fā)必看:alsa_route核心文件解析與修改場景

    ——alsa_route(alsa_route.h/alsa_route.c)。 作為連接Android上層音頻框架與底層ALSA驅(qū)動的“橋梁”,alsa_route是RK3576
    的頭像 發(fā)表于 02-26 08:08 ?75次閱讀
    <b class='flag-5'>RK3576</b> <b class='flag-5'>Android15</b>音頻開發(fā)必看:alsa_route核心文件解析與修改場景