Occuring error in manifest.xml after adding the IRadio for quectel EC20

HI
I have a error while building the AOSP after adding the following lines in manifest.xml file
for the quectel EC20 gnss module

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

ERROR:

The following HALs in device manifest are not declared in FCM <= level 7: 
  android.hardware.radio@1.4::IRadio/slot1
ERROR: files are incompatible: android.hardware.radio@1.4::IRadio/slot1 is deprecated in compatibility matrix at FCM Version 7; it should not be served.
android.hardware.radio@1.4::IRadio/slot1 is deprecated in compatibility matrix at FCM Version 7; it should not be served.
android.hardware.radio@1.4::IRadio/slot1 is deprecated in compatibility matrix at FCM Version 7; it should not be served.
The following instances are in the device manifest but not specified in framework compatibility matrix: 
    android.hardware.radio@1.4::IRadio/slot1
Suggested fix:
1. Update deprecated HALs to the latest version.
2. Check for any typos in device manifest or framework compatibility matrices with FCM version >= 7.
3. For new platform HALs, add them to any framework compatibility matrix with FCM version >= 7 where applicable.
4. For device-specific HALs, add to DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE or DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE.: Success
INCOMPATIBLE

can i know what’s the version of IRadio is need to use for Android 13 (kernel 5.15) under arm64 architecture.

It is Android 13.
And you can modify the compatible_matrices.

diff --git a/compatibility_matrices/compatibility_matrix.7.xml b/compatibility_matrices/compatibility_matrix.7.xml
index e5ef954255..b754ed5788 100644
--- a/compatibility_matrices/compatibility_matrix.7.xml
+++ b/compatibility_matrices/compatibility_matrix.7.xml
@@ -576,6 +576,16 @@
             <instance>slot3</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>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+            <instance>slot3</instance>
+        </interface>
+    </hal>
     <hal format="hidl" optional="true">
         <name>android.hardware.radio</name>
         <version>1.2</version>
1 Like

Hi Biao Wang

Thank you for your reply. My AOSP has been successfully built. After adding android.hardware.radio in compatibility_matrix.7.xml and libreference-ril.so, how can I check if my GNSS is working?, There occurring some of error in logcat and I tried some debug commands to check if GNSS is working or not I’m using IRadio 1.4 libreference-ril.so

init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 309 (/system/bin/hwservicemanager)
[  206.055586][    T1] init: Service 'ril-daemon' (pid 2851) exited with status 1
[  206.063107][    T1] init: Sending signal 9 to service 'ril-daemon' (pid 2851) process group...
[  206.072294][    T1] libprocessgroup: Successfully killed process cgroup uid 0 pid 2851 in 0ms
[  206.081475][    T1] init: process with updatable components 'ril-daemon' exited 4 times in 4 minutes
[  206.093570][    T1] init: processing action (sys.init.updatable_crashing=1) from (/system/etc/init/flags_health_check.rc:10)
[  206.105694][    T1] init: starting service 'exec 52 (/system/bin/flags_health_check UPDATABLE_CRASHING)'...
[  206.121815][    T1] init: SVC_EXEC service 'exec 52 (/system/bin/flags_health_check UPDATABLE_CRASHING)' pid 2853 (uid 1000 gid 1000+0 context default) started; waiting...

mek_8q:/ # getprop | grep ril
[init.svc.ril-daemon]: [restarting]
[init.svc.vendor.ril-daemon]: [running]
[init.svc_debug_pid.ril-daemon]: [3258]
[init.svc_debug_pid.vendor.ril-daemon]: [670]
[ro.boottime.ril-daemon]: [40271719250]
[ro.boottime.vendor.ril-daemon]: [40656888750]
[ro.radio.noril]: [yes]
[sys.init.updatable_crashing_process_name]: [ril-daemon]


[  256.087130][    T1] init: starting service 'ril-daemon'...
[  256.170126][    T1] init: Service 'ril-daemon' (pid 3299) exited with status 1
[  256.177521][    T1] init: Sending signal 9 to service 'ril-daemon' (pid 3299) process group...
[  256.186616][    T1] libprocessgroup: Successfully killed process cgroup uid 0 pid 3299 in 0ms
[  256.755692][    T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 309 (/system/bin/hwservicemanager)
[  257.756863][    T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 309 (/system/bin/hwservicemanager)
[  258.758560][    T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 309 (/system/bin/hwservicemanager)
[  259.760414][    T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 309 (/system/bin/hwservicemanager)
[  260.761878][    T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 309 (/system/bin/hwservicemanager)



mek_8q:/ # ps -elf | grep ril
radio          670     1 0 11:24:22 ?     00:00:00 rild
root          3856   461 8 11:28:30 ttyLP0 00:00:00 grep ril

1|mek_8q:/ # getprop | grep phone
1|mek_8q:/ #



1|mek_8q:/ # ls -la /vendor/lib64/*radio*
-rw-r--r-- 1 root root  366088 2024-09-19 11:21 /vendor/lib64/android.hardware.broadcastradio@2.0.so
-rw-r--r-- 1 root root 1897000 2024-09-19 11:21 /vendor/lib64/android.hardware.radio@1.0.so
-rw-r--r-- 1 root root 1310256 2024-09-19 11:21 /vendor/lib64/android.hardware.radio@1.1.so


mek_8q:/ # ls -la /vendor/lib64/*ril*
-rw-r--r-- 1 root root  53576 2024-09-19 11:32 /vendor/lib64/libreference-ril.so
-rw-r--r-- 1 root root 306120 2024-09-19 11:32 /vendor/lib64/libril.so
-rw-r--r-- 1 root root  14648 2024-09-19 11:21 /vendor/lib64/librilutils.so






130|mek_8q:/ # logcat -b radio -v time
[  579.755984][  T320] logd: logdr: UID=0 GID=0 PID=4306 b tail=0 logMask=2 pid=0 start=0ns deadline=0ns
--------- beginning of radio
01-01 00:00:48.367 D/RILD    (  654): **RIL Daemon Started**
01-01 00:00:48.367 D/RILD    (  654): **RILd param count=3**
01-01 00:00:48.381 E/RILD    (  654): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
01-01 00:00:48.800 D/RILD    (  670): **RIL Daemon Started**
01-01 00:00:48.817 D/RILD    (  670): **RILd param count=1**
01-01 00:00:48.817 D/RILD    (  670): RIL_Init starting sleep loop
01-01 00:00:53.153 D/RILD    (  742): **RIL Daemon Started**
01-01 00:00:53.154 D/RILD    (  742): **RILd param count=3**
01-01 00:00:53.156 E/RILD    (  742): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
01-01 00:00:58.164 D/RILD    (  750): **RIL Daemon Started**
01-01 00:00:58.164 D/RILD    (  750): **RILd param count=3**
01-01 00:00:58.166 E/RILD    (  750): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
01-01 00:01:03.182 D/RILD    (  785): **RIL Daemon Started**
01-01 00:01:03.183 D/RILD    (  785): **RILd param count=3**
01-01 00:01:03.185 E/RILD    (  785): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
01-01 00:01:08.199 D/RILD    (  806): **RIL Daemon Started**
01-01 00:01:08.199 D/RILD    (  806): **RILd param count=3**
01-01 00:01:08.202 E/RILD    (  806): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
01-01 00:01:13.206 D/RILD    (  808): **RIL Daemon Started**
01-01 00:01:13.206 D/RILD    (  808): **RILd param count=3**
01-01 00:01:13.208 E/RILD    (  808): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:24:53.818 D/RILD    (  871): **RIL Daemon Started**
09-19 11:24:53.821 D/RILD    (  871): **RILd param count=3**
09-19 11:24:53.826 E/RILD    (  871): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:24:58.882 D/RILD    (  882): **RIL Daemon Started**
09-19 11:24:58.883 D/RILD    (  882): **RILd param count=3**
09-19 11:24:58.885 E/RILD    (  882): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:03.846 D/RILD    (  903): **RIL Daemon Started**
09-19 11:25:03.846 D/RILD    (  903): **RILd param count=3**
09-19 11:25:03.848 E/RILD    (  903): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:08.787 D/RILD    (  928): **RIL Daemon Started**
09-19 11:25:08.789 D/RILD    (  928): **RILd param count=3**
09-19 11:25:08.795 E/RILD    (  928): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:13.877 D/RILD    (  945): **RIL Daemon Started**
09-19 11:25:13.879 D/RILD    (  945): **RILd param count=3**
09-19 11:25:13.884 E/RILD    (  945): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:18.879 D/RILD    (  962): **RIL Daemon Started**
09-19 11:25:18.882 D/RILD    (  962): **RILd param count=3**
09-19 11:25:18.886 E/RILD    (  962): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:23.831 D/RILD    (  973): **RIL Daemon Started**
09-19 11:25:23.832 D/RILD    (  973): **RILd param count=3**
09-19 11:25:23.834 E/RILD    (  973): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:28.925 D/RILD    (  999): **RIL Daemon Started**
09-19 11:25:28.926 D/RILD    (  999): **RILd param count=3**
09-19 11:25:28.935 E/RILD    (  999): dlopen failed: dlopen failed: library "android.hardware.secure_element@1.0.so" not found: needed by /vendor/lib64/hw/libreference-ril.so in namespace (default)
09-19 11:25:33.839 D/RILD    ( 1021): **RIL Daemon Started**

after this error and also tried this process in IRadio1.6 version occuring same error

PRODUCT_PACKAGES += \
              android.hardware.secure_element@1.0.vendor
1 Like

Unless it is to exchange logs or send some files, I will not reply with any PM or chat.

android.hardware.secure_element@1.0.so can be compiled by yourself.
You can find it in the source code, hardware/interfaces.

1 Like

Hi Biao Wang

After adding the android.hardware.secure_element@1.0.vendor in device.mk file
library "android.hardware.secure_element@1.0.so" not found error is gone, after this the new error has been occur "android.hardware.radio.config@1.0.so" not found: after solving this another error occurs "android.hardware.radio.config@2.0.so" not found: , so what are the dependencies need to add in device.mk file.

Thanks,
subash.

PRODUCT_PACKAGES += \
               android.hardware.radio@1.0.vendor  \
               android.hardware.radio@1.1.vendor  \
               android.hardware.radio@1.2.vendor  \
               android.hardware.radio@1.3.vendor  \
               android.hardware.radio@1.4.vendor  \
               android.hardware.radio@1.5.vendor  \
               android.hardware.radio@1.6.vendor  \
               android.hardware.radio。config@1.0.vendor  \
               android.hardware.radio。config@1.1.vendor  \
               android.hardware.radio。config@1.2.vendor
1 Like

Hi Biao Wang

Thank you, after adding this error has been gone, but I can repeatedly see some error in my logcat
[ 402.372017][ T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 319 (/system/bin/hwservicemanager)

I already created forum about this I will attach the link Error in libreference-ril.so file

130|mek_8q:/ # getprop | grep ril
[  601.740551][    T1] init: Control message: Could not find 'android.hardware.radio@1.4::IRadio/slot1' for ctl.interface_start from pid: 319 (/system/bin/hwservicemanager)
[init.svc.ril-daemon]: [running]
[init.svc.vendor.ril-daemon]: [running]
[init.svc_debug_pid.ril-daemon]: [638]
[init.svc_debug_pid.vendor.ril-daemon]: [652]
[ro.boottime.ril-daemon]: [25023868250]
[ro.boottime.vendor.ril-daemon]: [25209810875]
[ro.radio.noril]: [yes]

Thanks,
subash

There are some problem from this.

  1. there should be only one rild but there are two on your device.
    2.ro.radio.noril should be no.

Hi Biao Wang

I removed one rild and changed the status the ro.radio.noril to NO but the error didn’t disappear

mek_8q:/ # [  311.067700][    T1] init: Control message: Could not find 'android.hardware.radio@1
.4::IRadio/slot1' for ctl.interface_start from pid: 336 (/system/bin/hwservicemanager)
mek_8q:/ # getprop | grep ril
[init.svc.ril-daemon]: [running]
[init.svc_debug_pid.ril-daemon]: [669]
[ro.boottime.ril-daemon]: [41257197750]
[ro.radio.noril]: [no]

Thanks,
subash.

We can not know why it failed from this log.

Hi Biao Wang

I will share the debug command log file of logcat -b radio -v time
dummy.txt (45.8 KB)

 [ro.radio.noril]: [yes]
...
01-01 00:00:49.908 D/RILC    (  654): Quectel RIL Version: Quectel_Android_RIL_Driver_V3.6.24_master_Release_20231211_10_47
01-01 00:00:49.911 D/RIL_READ_CONF(  654): since '/system/etc/ql-ril.conf' doesn't exsits using '/vendor/etc/ql-ril.conf' but it still doesn't exsits program panic here!
01-01 00:00:49.911 D/RILC    (  654): [ro.build.version.release]: [13]
01-01 00:00:49.911 D/RILC    (  654): Android Version: 130, RIL_VERSION: 12 / 12
01-01 00:00:49.911 E/RILC    (  654): '/vendor/manifest.xml' not exist.
01-01 00:00:49.912 D/RILC    (  654): __getIRadioVersion:673 IRadioVersion:4
01-01 00:00:49.912 D/RILC    (  654): [ro.build.description]: [mek_8q_car2-userdebug 13 TQ1A.230205.002 eng.petsbm.20240920.180851 dev-keys]
01-01 00:00:49.912 D/RILC    (  654): [ro.hardware]: [nxp]
01-01 00:00:49.912 D/RILC    (  654): selinux maybe set Enforcing mode, use command getenforce to check
01-01 00:00:49.912 D/RILC    (  654): selinux maybe set Enforcing mode, use command "setenforce 0" to disable
01-01 00:00:49.912 I/RILC    (  654): clientID = 0
01-01 00:00:49.913 D/RILD    (  654): RIL_Init rilInit completed
01-01 00:00:49.913 I/RILC    (  654): SIM_COUNT: 1
01-01 00:00:49.913 E/RILC    (  654): RIL_register: RIL version 12
01-01 00:00:49.913 I/RILC    (  654): s_registerCalled flag set, 1
01-01 00:00:49.914 D/RILC    (  654): registerService: starting android::hardware::radio::V1_1::IRadio slot1

You can try the NDK version first.

1 Like

Hi Biao Wang

Am I need to set the [ro.radio.noril]: [yes] for a inbuild rild available in AOSP source code, inbuild libreference-ril.so is generating in the following path vendor/lib64/ libreference-ril.so ,so how can i check the version of this libreference-ril.so

Thanks,
subash

Hi Biao Wang

I will share the debug command log file of logcat -b radio -v time after adding the inbuild libreference-ril.so
inbuild_libreference-ril.txt (12.1 KB)

Thanks,
subash.

RIL_SAP_Init not defined or exported in /vendor/lib64/libreference-ril.so: undefined symbol: RIL_SAP_Init

Quectel provide different RIL libs.
Some works for IRadio 1.4 /1.5/1.6.
And the NDK RIL works for IRadio 1.1 or ahead.

You can try the NDK version first.

1 Like

Hi Biao Wang

Sorry for the late reply I tried the default NDK version of ril IRadio and I changed the version of IRadio1.4 to 1.1 in mainfest.xml file for the default NDK libreference-ril.so but I still facing the RIL_SAP_Init not defined or exported in /vendor/lib64/libreference-ril.so: undefined symbol: RIL_SAP_Init same error I will attach the log below for your reference
putty.txt (66.7 KB)

Thanks,
subash

I mean that you could you she the default libril.so but use the libreference-ril.so from Quectel.
And set the IRadio to 1.1.
And the libreference-ril.so should be based on the NDK but not the IRadio 1.5 or 1.6.

If still not work you could try the IRadio 1.6.
If want to try the IRadio 1.6 you should try the libril.so and libreference-ril.so both.
Puth the libril.so into the vendor/lib64.

1 Like

Hi Biao Wang

Can you share me a IRadio version 1.1 libreference-ril.so for arm64?

Thanks,
subash

Please try it.

1 Like