RM510Q-GL RIL/GPS driver for Android 15/16

Hello, I am porting Android 15/16 to a Qcom sm8350 devices that uses a Quectel RM510Q-GL modem. I am encountering this error when utilizing the stock blobs along with the source built aosp vendor/bin/rild since the device launched on Android 12 and was never updated to 13, using the prebuilt rild results in the following:

11-22 11:11:36.999  4215  4215 F linker  : CANNOT LINK EXECUTABLE "/vendor/bin/hw/rild": cannot locate symbol "initWithMmapSize" referenced by "/vendor/bin/hw/rild"...

Using the source built rild, I get the following error:

11-22 16:30:38.606  4520  4520 I HidlServiceManagement: Registered vendor.qti.hardware.radio.qtiradio@2.6::IQtiRadio/slot1
11-22 16:30:38.606  4520  4520 F libc    : FORTIFY: memcpy: prevented 858650992-byte write into 32-byte buffer
11-22 16:30:38.606  4520  4520 F libc    : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 4520 (rild), pid 4520 (rild)
11-22 16:30:38.628  4525  4525 I crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
11-22 16:30:38.629   767   767 I tombstoned: received crash request for pid 4520
11-22 16:30:38.630  4525  4525 I crash_dump64: performing dump of process 4520 (target tid = 4520)
11-22 16:30:38.632  4525  4525 E DEBUG   : failed to read process info: failed to open /proc/4520: No such file or directory
11-22 16:30:38.652   702   702 I logd    : logdr: UID=1001 GID=1001 PID=4525 n tail=500 logMask=8 pid=4520 start=0ns deadline=0ns
11-22 16:30:38.668   702   702 I logd    : logdr: UID=1001 GID=1001 PID=4525 n tail=500 logMask=1 pid=4520 start=0ns deadline=0ns
11-22 16:30:38.695  4525  4525 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
BUILD PROP LINE REDACTED
11-22 16:30:38.695  4525  4525 F DEBUG   : Revision: '0'
11-22 16:30:38.695  4525  4525 F DEBUG   : ABI: 'arm64'
11-22 16:30:38.695  4525  4525 F DEBUG   : Timestamp: 2025-11-22 16:30:38.631830977-1100
11-22 16:30:38.695  4525  4525 F DEBUG   : Process uptime: 0s
11-22 16:30:38.695  4525  4525 F DEBUG   : Cmdline: /vendor/bin/hw/rild -l /vendor/lib64/hw/libquectel-ril.so
11-22 16:30:38.695  4525  4525 F DEBUG   : pid: 4520, tid: 4520, name: rild  >>> /vendor/bin/hw/rild <<<
11-22 16:30:38.695  4525  4525 F DEBUG   : uid: 1001
11-22 16:30:38.695  4525  4525 F DEBUG   : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
11-22 16:30:38.695  4525  4525 F DEBUG   : Abort message: 'FORTIFY: memcpy: prevented 858650992-byte write into 32-byte buffer'
11-22 16:30:38.695  4525  4525 F DEBUG   :     x0  0000000000000000  x1  00000000000011a8  x2  0000000000000006  x3  0000007fccd20460
11-22 16:30:38.695  4525  4525 F DEBUG   :     x4  34353734371f6364  x5  34353734371f6364  x6  34353734371f6364  x7  7f7f7f7f7f7f7f7f
11-22 16:30:38.695  4525  4525 F DEBUG   :     x8  00000000000000f0  x9  fca74375a640167b  x10 0000000000000001  x11 0000007bf09062e0
11-22 16:30:38.695  4525  4525 F DEBUG   :     x12 0000000037780c39  x13 0000000034155555  x14 0000000000000018  x15 00000000377734b8
11-22 16:30:38.695  4525  4525 F DEBUG   :     x16 0000007bf09720d8  x17 0000007bf0959c40  x18 0000007bf429c000  x19 00000000000011a8
11-22 16:30:38.695  4525  4525 F DEBUG   :     x20 00000000000011a8  x21 00000000ffffffff  x22 0000007fccd20741  x23 0000007fccd20690
11-22 16:30:38.695  4525  4525 F DEBUG   :     x24 0000007fccd206f0  x25 0000000000000003  x26 0000000000000000  x27 0000000000000000
11-22 16:30:38.695  4525  4525 F DEBUG   :     x28 0000005c1d11d018  x29 0000007fccd204e0
11-22 16:30:38.695  4525  4525 F DEBUG   :     lr  0000007bf08f05d8  sp  0000007fccd20460  pc  0000007bf08f05fc  pst 0000000000001000
11-22 16:30:38.695  4525  4525 F DEBUG   : 8 total frames
11-22 16:30:38.695  4525  4525 F DEBUG   : backtrace:
11-22 16:30:38.695  4525  4525 F DEBUG   :       #00 pc 00000
``

It seems the vendor implementation used IRadio 1.5 as per the manifest below:

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

What could be the issue here, any insight on what to try?

This is my .rc

service quectel.ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/hw/libquectel-ril.so
    class main
    user radio
    group radio cache inet misc audio sdcard_rw log
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
    interface android.hardware.radio@1.0::IRadio slot1
    interface android.hardware.radio@1.1::IRadio slot1
    interface android.hardware.radio@1.2::IRadio slot1
    interface android.hardware.radio@1.3::IRadio slot1
    interface android.hardware.radio@1.4::IRadio slot1
    interface android.hardware.radio@1.5::IRadio slot1
    interface android.hardware.radio@1.0::ISap slot1
    interface android.hardware.radio@1.1::ISap slot1
    interface android.hardware.radio@1.2::ISap slot1
    interface android.hardware.radio.config@1.0::IRadioConfig default
    interface android.hardware.radio.config@1.1::IRadioConfig default
    interface vendor.qti.hardware.radio.ims@1.0::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.ims@1.1::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.ims@1.2::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.ims@1.3::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.ims@1.4::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.ims@1.5::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.ims@1.6::IImsRadio imsradio0
    interface vendor.qti.hardware.radio.qtiradio@1.0::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.0::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.1::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.2::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.3::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.4::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.5::IQtiRadio slot1
    interface vendor.qti.hardware.radio.qtiradio@2.6::IQtiRadio slot1
    interface vendor.qti.hardware.data.iwlan@1.0::IIWlan slot1

Any idea, @Bean.Wang-Q ?

I guess this may not be possible. Qualcomm itself has a set of QCRIL, which needs to be removed.
If your rild cannot run, there should be something wrong with libreference-ril.so itself, which needs to be compiled in Qualcomm’s Android SDK.
I don’t have Qualcomm Android SDK, I suggest you submit an e-service case to Quectel.