移远官网

求助添加HIDL后编译报错的问题

我们的平台:全志A523 安卓13 内核Linux5.15

根据开发文档《Quectel_Android_RIL驱动_用户指导_V1.0.0_Preliminary_20230824》
3.5.3. 添加 HIDL 描述(Android 8.x~13.x)

在我们的平台代码中,找到了manifest.xml

根据文档建议安卓13应采用IRadio 1.5,故添加了

<hal format="hidl">
	<name>android.hardware.radio</name>
	<transport>hwbinder</transport>
	<fqname>@1.5::IRadio/slot1</fqname>
	<fqname>@1.2::ISap/slot1</fqname>
</hal>

添加后无法编译通过,报错,信息请看截图
不添加HIDL描述则编译上没有问题,请教应如何处理????


编译报错.txt (23.1 KB)
manifest.xml.txt (2.7 KB)

您好。这是因为需要添加兼容矩阵。

diff --git a/hardware/interfaces/compatibility_matrices/compatibility_matrix.4.xml b/hardware/interfaces/compatibility_matrices/compatibility_matrix.4.xml
index 8ef0b3a..89c584a 100644
--- a/hardware/interfaces/compatibility_matrices/compatibility_matrix.4.xml
+++ b/hardware/interfaces/compatibility_matrices/compatibility_matrix.4.xml
@@ -348,6 +348,10 @@
     <hal format="hidl" optional="true">
         <name>android.hardware.radio</name>
         <version>1.4</version>
+        <version>1.3</version>
+        <version>1.2</version>
+        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IRadio</name>
             <instance>slot1</instance>
diff --git a/hardware/interfaces/compatibility_matrices/compatibility_matrix.5.xml b/hardware/interfaces/compatibility_matrices/compatibility_matrix.5.xml
index 12b85c7..49860a2 100644
--- a/hardware/interfaces/compatibility_matrices/compatibility_matrix.5.xml
+++ b/hardware/interfaces/compatibility_matrices/compatibility_matrix.5.xml
@@ -384,8 +384,12 @@
     </hal>
     <hal format="hidl" optional="true">
         <name>android.hardware.radio</name>
-        <version>1.4</version>
         <version>1.5</version>
+        <version>1.4</version>
+        <version>1.3</version>
+        <version>1.2</version>
+        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IRadio</name>
             <instance>slot1</instance>
diff --git a/hardware/interfaces/compatibility_matrices/compatibility_matrix.6.xml b/hardware/interfaces/compatibility_matrices/compatibility_matrix.6.xml
index e19d2dd..f98897c 100644
--- a/hardware/interfaces/compatibility_matrices/compatibility_matrix.6.xml
+++ b/hardware/interfaces/compatibility_matrices/compatibility_matrix.6.xml
@@ -225,7 +225,10 @@
     </hal>
     <hal format="hidl" optional="true">
         <name>android.hardware.gnss</name>
-        <version>2.0-1</version>
+        <version>2.1</version>
+        <version>2.0</version>
+        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IGnss</name>
             <instance>default</instance>
@@ -441,6 +444,12 @@
     <hal format="hidl" optional="true">
         <name>android.hardware.radio</name>
         <version>1.6</version>
+        <version>1.5</version>
+        <version>1.4</version>
+        <version>1.3</version>
+        <version>1.2</version>
+        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IRadio</name>
             <instance>slot1</instance>
diff --git a/hardware/interfaces/compatibility_matrices/compatibility_matrix.7.xml b/hardware/interfaces/compatibility_matrices/compatibility_matrix.7.xml
index 26b8d63..ed78bf8 100644
--- a/hardware/interfaces/compatibility_matrices/compatibility_matrix.7.xml
+++ b/hardware/interfaces/compatibility_matrices/compatibility_matrix.7.xml
@@ -248,7 +248,10 @@
     </hal>
     <hal format="hidl" optional="true">
         <name>android.hardware.gnss</name>
-        <version>2.0-1</version>
+        <version>2.1</version>
+        <version>2.0</version>
+        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IGnss</name>
             <instance>default</instance>
@@ -516,6 +519,22 @@
             <instance>default</instance>
         </interface>
     </hal>
+    <hal format="hidl" optional="true">
+        <name>android.hardware.radio</name>
+        <version>1.6</version>
+        <version>1.5</version>
+        <version>1.4</version>
+        <version>1.3</version>
+        <version>1.2</version>
+        <version>1.1</version>
+        <version>1.0</version>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+            <instance>slot3</instance>
+        </interface>
+    </hal>
     <hal format="aidl" optional="true">
         <name>android.hardware.radio.config</name>
         <version>1</version>
diff --git a/hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml b/hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml
index 886f7f5..1175dc6 100644
--- a/hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml
+++ b/hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml
@@ -520,6 +520,22 @@
             <instance>default</instance>
         </interface>
     </hal>
+    <hal format="hidl" optional="true">
+        <name>android.hardware.radio</name>
+        <version>1.6</version>
+        <version>1.5</version>
+        <version>1.4</version>
+       <version>1.3</version>
+        <version>1.2</version>
+        <version>1.1</version>
+        <version>1.0</version>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+            <instance>slot3</instance>
+        </interface>
+    </hal>
     <hal format="aidl" optional="true">
         <name>android.hardware.radio.config</name>
         <version>1</version>

感谢您的支持

按此修改后,可以编译通过,但运行起来后,有异常 @BiaoWang-Q

当前我们内核用的USB Serial Driver
安卓层radio日志持续重复报错

logcat -b radio -v time

06-22 05:34:00.818 D/RILD ( 4546): RIL Daemon Started
06-22 05:34:00.818 D/RILD ( 4546): RILd param count=10
06-22 05:34:00.819 E/RILD ( 4546): dlopen failed: dlopen failed: library “android.hardware.secure_element@1.0.so” not found: needed by /vendor/lib64/libreference-ril.so in namespace (default)
在设备上搜索了下,android.hardware.secure_element@1.0.so这个文件确实不存在

getprop init.svc.ril-daemon

restarting
一直在重启

cat /vendor/etc/init/*rild.rc | grep ril-daemon

service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril.so – -d /dev/ttyUSB2 -B 115200 -C 0
使用ttyUSB2这个串口对吗???
libreference-ril.so确定是移远提供的,从设备上提取出来比较过hash

这个要提供下日志

logcat -b all

找个mk 加上

PRODUCT_PACKAGES += \
    android.hardware.secure_element@1.0  \
    android.hardware.secure_element@1.1  \
    android.hardware.secure_element@1.2  \

感谢您的支持,相关问题已进行排查处理,当前状态,底层驱动似乎正常,radio有相关日志,但是设备不能上网
帮忙看看啥原因 @BiaoWang-Q

radio_log.txt (78.3 KB)

all_log.txt (1.4 MB)

  1. IRadio 版本不对。

这里需要确认

  • 移远的libril.so 放进去了吗?使用的是1.5 里的吗?配置的是IRadio 1.5 吗?

将设备里的 vendor/etc/vintf/ 目录打包发出来看看。

  1. 要用移远的qmi_wwan_q.c ,内核自带的qmi_wwan.c 不行;

我们的平台本身会编译libril.so,可能存在冲突覆盖了,我再排查下
配置的IRadio是1.5的
我们的移植资料包里,没有qmi_wwan_q.c源码文件,移植资料是让我们手动改qmi_wwan, 添加VID PID,添加raw ip模式

vintf.zip (12.5 KB)

覆盖掉平台自带的libril.so 遇到的冲突要你们自己解决了。
从log 看看怀疑是不是预制进去的libril.so 版本不对

请将 vendor/etc/vintf/manifest.xml/radio.xml 删掉。

重新排查处理了下,编译了新系统,还是不能上网,ping不通,wwan0节点也没有ip
@BiaoWang-Q

  1. 确定新系统的libril.so和libreference-ril.so库是移远提供的,从设备上提取出文件比较过hash值
  2. getprop init.svc.ril-daemon的返回值是空的,getprop gsm.version.ril-impl的返回值也是空的,不知道这个有没有关系
  3. vendor/etc/vintf/manifest/radio.xml文件已不集成到系统了

状态2

radio_log.txt (61.4 KB)

all_log.txt (1.4 MB)

vintf.zip (12.2 KB)

从log 看到

||Line 3639: 01-01 08:00:17.150   197   197 I hwservicemanager: getTransport: Cannot find entry android.hardware.radio.config@1.1::IRadioConfig/default in either framework or device VINTF manifest.|
|---|---|
||Line 3640: 01-01 08:00:17.150   651   669 E HidlServiceManagement: Service android.hardware.radio.config@1.1::IRadioConfig/default must be in VINTF manifest in order to register/get.|
IRadio 1.5 的配置写法

    <!-- IRADIO -->
    <hal format="hidl">
        <name>android.hardware.radio</name>
        <transport>hwbinder</transport>
        <fqname>@1.5::IRadio/slot1</fqname>
        <fqname>@1.2::ISap/slot1</fqname>
    </hal>
    <!-- RADIO CONFIG -->
    <hal format="hidl">
        <name>android.hardware.radio.config</name>
        <transport>hwbinder</transport>
        <version>1.1</version>
        <interface>
            <name>IRadioConfig</name>
            <instance>default</instance>
        </interface>
    </hal>

添加下IRadioConfig 1.1

IRadioConfig 1.1已添加,日志上看不报之前的那个错误了,但是其他情况依旧
@BiaoWang-Q

all_log.txt (1.7 MB)

能不能把radioMonitor 删掉

RadioMonitor的源码已移除,重新编译了系统,目前还是不能上网,安卓层也没有IP,比较奇怪,帮忙分析下还有哪些因素会导致故障 @BiaoWang-Q

all_log.txt (1.7 MB)

我使用移远的库在A523上面可以了,你可以查看一下我的

RILD和RILJ没有连上。
RILJ : Radio HAL version: -1.-1 [PHONE0]

ps -elf | grep ril
ps -elf | grep radio
getprop | grep ril

看看

如果是公司,可以直接联系前线技术支持让他们帮忙安排远程看看吧。

是公司的项目
@BiaoWang-Q

  1. 改了系统的两处配置,现在开机状态栏会显示信号图标了,系统里能看到SIM卡状态,但是还是没有IP,无法上网,我看了下日志,没有 “RILJ : Radio HAL version: -1.-1 [PHONE0]“ 这个报错了
  2. 这个设备目前时间不正常(RTC时钟芯片问题),不知道是否有影响
  3. 我们买的模块是EC20CE HCLG,VID 2C7C PID 0125,这个在驱动里算是EC25,而EC25 qmi_wwan驱动里是走raw ip模式吧,对于我们这个模块,到底应不应该添加raw ip模式的代码,目前我们的驱动是添加了的
  4. 系统的apn接入点之类的,是否需要配置??这个我们的移植资料里没有提

all_log.txt (2.3 MB)