Are there any plans to provide RIL drivers for the EC-25 for Android 14 (or driver version Radio1.6)?
I’ve seen in another thread that Android 13 should work using Radio1.5 – are there any other steps then integrating Radio1.1 (apart from chaing the version number in manifest.xml and w.r.t to libril.so, etc?)
I am sorry it is not recommended to talk via chat or PM on the Quectel Forums.
Form the log you provided, the Quectel modem is restarting.
The USB connection seems not stable.
I managed to start the Quectel RIL on both Hikey960 and Vim3 with some basic communication to the modem.
However, there I get the following errors:
D RILC : dlopen /vendor/lib64/hw/radio.quectel.module.so failed: dlopen failed: library “/vendor/lib64/hw/radio.quectel.module.so” not found
D RILC : start the service through api…
D RILC : ql_radio_config_init start
E RadioConfigFactory: ‘/vendor/manifest.xml’ not exist.
and it seems, like the Android Telephony Framework is not loaded properly:
E RILC : radioStateChangedInd: radioService[0]->mRadioIndication == NULL
I can prevent this error if I don’t build AOSP’s default libril.so, but then rild does not start because librilutils.so is missing. Could you provide all the required ril-libary files for arm64?
thanks again for all the hints – in the meantime we have a running stable RIL integration using Radio@1.5 in Android 14 for both the Hikey and the Khadas VIM3 board.
When we try to use Radio@1.6, we get an error during initialization within the RIL daemon:
01-01 00:08:13.424 0 0 I init : starting service 'vendor.ril-daemon'...
01-01 00:08:13.459 0 0 I init : ... started service 'vendor.ril-daemon' has pid 4836
03-06 14:49:17.102 4836 4836 D RILD : **RIL Daemon Started**
03-06 14:49:17.102 4836 4836 D RILD : **RILd param count=3**
03-06 14:49:17.106 4836 4836 D RILD : RIL_Init argc = 4 clientId = 0
03-06 14:49:17.106 4836 4836 D RILC : Quectel RIL Version: Quectel_Android_RIL_Driver_V4.0.1_IRadio1.6_Release_20231211_10_47
03-06 14:49:17.106 4836 4836 D RIL_READ_CONF: original conf line: stop_sent_at=1
03-06 14:49:17.106 4836 4836 D RIL_READ_CONF: stop_sent_at = 1
03-06 14:49:17.106 4836 4836 D RIL_READ_CONF: original conf line: vzw_test=1
03-06 14:49:17.106 4836 4836 D RIL_READ_CONF: vzw_test = 1
03-06 14:49:17.106 4836 4836 E RILC : '/vendor/manifest.xml' not exist.
03-06 14:49:17.106 4836 4836 D RILC : 34.0</version>
03-06 14:49:17.106 4836 4836 F libc : FORTIFY: memcpy: prevented 305954416-byte write into 32-byte buffer
03-06 14:49:17.107 4836 4836 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 4836 (rild), pid 4836 (rild)
03-06 14:49:17.146 4840 4840 I crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
03-06 14:49:17.147 254 254 I tombstoned: received crash request for pid 4836
03-06 14:49:17.150 4840 4840 I crash_dump64: performing dump of process 4836 (target tid = 4836)
01-01 00:08:13.577 0 0 I logd : logdr: UID=1001 GID=1001 PID=4840 n tail=500 logMask=8 pid=4836 start=0ns deadline=0ns
01-01 00:08:13.593 0 0 I logd : logdr: UID=1001 GID=1001 PID=4840 n tail=500 logMask=1 pid=4836 start=0ns deadline=0ns
03-06 14:49:17.212 4840 4840 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-06 14:49:17.212 4840 4840 F DEBUG : Build fingerprint: 'Android/yukawa/vim3:14/UP1A.231105.003.A1/eng.infine.20240306.114104:userdebug/test-keys'
03-06 14:49:17.212 4840 4840 F DEBUG : Revision: '0'
03-06 14:49:17.212 4840 4840 F DEBUG : ABI: 'arm64'
03-06 14:49:17.212 4840 4840 F DEBUG : Timestamp: 2024-03-06 14:49:17.152001843+0000
03-06 14:49:17.212 4840 4840 F DEBUG : Process uptime: 1s
03-06 14:49:17.212 4840 4840 F DEBUG : Cmdline: /vendor/bin/hw/rild -l /vendor/lib64/hw/libquectel-ril.so
03-06 14:49:17.212 4840 4840 F DEBUG : pid: 4836, tid: 4836, name: rild >>> /vendor/bin/hw/rild <<<
03-06 14:49:17.212 4840 4840 F DEBUG : uid: 1001
03-06 14:49:17.212 4840 4840 F DEBUG : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
03-06 14:49:17.212 4840 4840 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
03-06 14:49:17.212 4840 4840 F DEBUG : Abort message: 'FORTIFY: memcpy: prevented 305954416-byte write into 32-byte buffer'
03-06 14:49:17.212 4840 4840 F DEBUG : x0 0000000000000000 x1 00000000000012e4 x2 0000000000000006 x3 0000ffffedc37f50
03-06 14:49:17.212 4840 4840 F DEBUG : x4 3438342f321f6364 x5 3438342f321f6364 x6 3438342f321f6364 x7 7f7f7f7f7f7f7f7f
03-06 14:49:17.212 4840 4840 F DEBUG : x8 00000000000000f0 x9 0000f20a958eb090 x10 0000000000000001 x11 0000f20a95934f00
03-06 14:49:17.213 4840 4840 F DEBUG : x12 0000000000000000 x13 000000007fffffff x14 00000000000180ec x15 000000000000000a
03-06 14:49:17.213 4840 4840 F DEBUG : x16 0000f20a959a1d08 x17 0000f20a9597d810 x18 0000f20a9c084000 x19 00000000000000ac
03-06 14:49:17.213 4840 4840 F DEBUG : x20 00000000000000b2 x21 00000000000012e4 x22 00000000000012e4 x23 00000000ffffffff
03-06 14:49:17.213 4840 4840 F DEBUG : x24 0000ffffedc381f0 x25 0000000000000000 x26 0000000000000000 x27 0000000000000002
03-06 14:49:17.213 4840 4840 F DEBUG : x28 0000ba6a9c09a348 x29 0000ffffedc37fd0
03-06 14:49:17.213 4840 4840 F DEBUG : lr 0000f20a95925414 sp 0000ffffedc37f30 pc 0000f20a95925444 pst 0000000000000000
03-06 14:49:17.213 4840 4840 F DEBUG : 8 total frames
03-06 14:49:17.213 4840 4840 F DEBUG : backtrace:
03-06 14:49:17.213 4840 4840 F DEBUG : #00 pc 000000000005c444 /apex/com.android.runtime/lib64/bionic/libc.so (abort+180) (BuildId: e28e590ca0e65ae6ef686c6e737bc371)
03-06 14:49:17.213 4840 4840 F DEBUG : #01 pc 000000000005e39c /apex/com.android.runtime/lib64/bionic/libc.so (__fortify_fatal(char const*, ...)+124) (BuildId: e28e590ca0e65ae6ef686c6e737bc371)
03-06 14:49:17.213 4840 4840 F DEBUG : #02 pc 0000000000089f18 /apex/com.android.runtime/lib64/bionic/libc.so (__check_buffer_access(char const*, char const*, unsigned long, unsigned long)+40) (BuildId: e28e590ca0e65ae6ef686c6e737bc371)
03-06 14:49:17.213 4840 4840 F DEBUG : #03 pc 000000000008a0c4 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy_chk_fail+68) (BuildId: e28e590ca0e65ae6ef686c6e737bc371)
03-06 14:49:17.213 4840 4840 F DEBUG : #04 pc 000000000008b0a0 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy_chk+16) (BuildId: e28e590ca0e65ae6ef686c6e737bc371)
03-06 14:49:17.213 4840 4840 F DEBUG : #05 pc 000000000003dea8 /vendor/lib64/hw/libquectel-ril.so (RIL_Init+1196) (BuildId: 4c5946f37cb74d34f80cf17d8fe151f6)
03-06 14:49:17.213 4840 4840 F DEBUG : #06 pc 0000000000002354 /vendor/bin/hw/rild (main+756) (BuildId: 39e8837d02fab8874bbf678c150865ed)
03-06 14:49:17.213 4840 4840 F DEBUG : #07 pc 0000000000054838 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+104) (BuildId: e28e590ca0e65ae6ef686c6e737bc371)
03-06 14:49:17.222 642 1863 W NativeCrashListener: Couldn't find ProcessRecord for pid 4836
03-06 14:49:17.223 254 254 E tombstoned: Tombstone written to: tombstone_43
03-06 14:49:17.223 642 750 E NativeTombstoneManager: Tombstone's UID (1001) not an app, ignoring
03-06 14:49:17.224 642 750 E NativeTombstoneManager: Tombstone's UID (1001) not an app, ignoring
01-01 00:08:13.621 0 0 I init : Untracked pid 4840 exited with status 0
01-01 00:08:13.621 0 0 I init : Untracked pid 4840 did not have an associated service entry and will not be reaped
01-01 00:08:13.630 0 0 I init : Service 'vendor.ril-daemon' (pid 4836) received signal 6
01-01 00:08:13.637 0 0 I init : Sending signal 9 to service 'vendor.ril-daemon' (pid 4836) process group...
01-01 00:08:13.646 0 0 I libprocessgroup: Successfully killed process cgroup uid 1001 pid 4836 in 0ms
01-01 00:08:13.655 0 0 I init : Untracked pid 4842 exited with status 0
01-01 00:08:13.659 0 0 I init : Untracked pid 4842 did not have an associated service entry and will not be reaped
03-06 14:49:17.528 3349 3349 W HidlServiceManagement: Waited one second for android.hardware.radio@1.6::IRadio/slot1
03-06 14:49:17.528 216 216 I hwservicemanager: Since android.hardware.radio@1.6::IRadio/slot1 is not registered, trying to start it as a lazy HAL (if it's not configured to be a lazy HAL, it may be stuck starting or still starting).
03-06 14:49:17.529 3349 3349 I HidlServiceManagement: getService: Trying again for android.hardware.radio@1.6::IRadio/slot1...
03-06 14:49:17.538 216 4845 W libc : Unable to set property "ctl.interface_start" to "android.hardware.radio@1.6::IRadio/slot1": error code: 0x20
03-06 14:49:17.538 216 4845 I hwservicemanager: Tried to start android.hardware.radio@1.6::IRadio/slot1 as a lazy service, but was unable to. Usually this happens when a service is not installed, but if the service is intended to be used as a lazy service, then it may be configured incorrectly.
01-01 00:08:13.926 0 0 E init : Control message: Could not find 'android.hardware.radio@1.6::IRadio/slot1' for ctl.interface_start from pid: 216 (/system/bin/hwservicemanager)
Hi @Bean.Wang-Q ,
I would have a follow-up question:
We would like to switch from USB to UART for communication. Do you know if this is possible with the EC25 or only with modems that support the multiplexing (CMUX)?
I am asking this, because we can communicate with plain UART with the modem, but when using the Android RIL, the mux driver complains that the modem isn’t answering (although on the physical lines, we see a response).
Here are some logs of the problem:
01-01 00:00:09.115 463 463 D RIL_SERVICE_1_5: RadioImpl_1_5::registerAsService(slot1)
01-01 00:00:09.121 463 496 D MUXD : MUXD 2687:gsm0710muxd(): gsm0710muxd serialname = /dev/ttyAML6, gsm0710muxd_pid = 0
01-01 00:00:09.129 463 463 D RIL_SERVICE_1_1: status = 0
01-01 00:00:09.129 463 463 I RILC : RILHIDL called registerService
01-01 00:00:09.129 463 463 D RILD : RIL_Init RIL_register completed
01-01 00:00:09.129 463 463 D RILD : RIL_register_socket started
01-01 00:00:09.129 463 463 D RIL_UIM_SOCKET: Adding socket with id: 0
01-01 00:00:09.129 463 463 D RILD : RIL_register_socket completed
01-01 00:00:09.288 511 511 D MUXD : MUXD 2528:main(): Quectel CMUX Revision: Quectel_Linux_CMUX_Driver_V2.0.3
01-01 00:00:09.288 511 511 V MUXD : MUXD 2529:main(): Enter
01-01 00:00:09.288 511 511 D MUXD : MUXD 2638:main(): Called with following options:
01-01 00:00:09.288 511 511 D MUXD : MUXD 2639:main(): -d: Fork, get a daemon [yes]
01-01 00:00:09.288 511 511 D MUXD : MUXD 2640:main(): -v: Set verbose logging level. 0 (Silent) - 7 (Debug) [6]
01-01 00:00:09.288 511 511 D MUXD : MUXD 2641:main(): -s <serial port name>: Serial port device to connect to [/dev/ttyAML6]
01-01 00:00:09.288 511 511 D MUXD : MUXD 2642:main(): -c <hardware flow control>: Hardware flow control [disabled]
01-01 00:00:09.288 511 511 D MUXD : MUXD 2643:main(): -t <timeout>: reset modem after this number of seconds of silence [0]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2644:main(): -P <pin-code>: PIN code to unlock SIM [-1]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2645:main(): -p <number>: use ping and reset modem after this number of unanswered pings [0]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2646:main(): -b <baudrate>: mode baudrate [115200]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2647:main(): -m <modem>: Mode (basic, advanced) [basic]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2648:main(): -f <framsize>: Frame size [127]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2649:main(): -n <number of ports>: Number of virtual ports to create, must be in range 1-4 [3]
01-01 00:00:09.289 511 511 D MUXD : MUXD 2650:main(): -o <output log to file>: Output log to /tmp/gsm0710muxd.log [no]
01-01 00:00:09.289 511 511 V MUXD : MUXD 2271:watchdog(): Enter
01-01 00:00:09.289 511 511 V MUXD : MUXD 2274:watchdog(): Serial state is 0
01-01 00:00:09.289 511 511 V MUXD : MUXD 2043:open_serial_device(): Enter
01-01 00:00:09.289 511 511 D MUXD : MUXD 2050:open_serial_device(): Opened serial port
01-01 00:00:09.289 511 511 D MUXD : MUXD 2068:open_serial_device(): Configured serial device
01-01 00:00:09.289 511 511 V MUXD : MUXD 2072:open_serial_device(): Switched Mux state to 1
01-01 00:00:09.289 511 511 D MUXD : MUXD 2282:watchdog(): Watchdog started
01-01 00:00:09.289 511 511 D MUXD : MUXD 2099:start_muxer(): Configuring modem
01-01 00:00:09.289 511 511 V MUXD : MUXD 1386:chat(): Enter
01-01 00:00:09.289 511 511 V MUXD : MUXD 732:syslogdump(): >s 00000000: 41 54 0d 0a . . . .- . . . . . . . . AT..
01-01 00:00:09.289 511 511 V MUXD : MUXD 1393:chat(): Wrote 4 bytes
01-01 00:00:09.289 511 511 V MUXD : MUXD 1395:chat(): CHAT++++++++++++
01-01 00:00:09.291 511 511 V MUXD : MUXD 1406:chat(): Selected 1
01-01 00:00:09.391 511 511 V MUXD : MUXD 1413:chat(): Read 11 bytes from serial device
01-01 00:00:09.391 511 511 V MUXD : MUXD 732:syslogdump(): <s 00000000: 41 a8 35 ff 0d 14 9e 2d-6a 14 ff . . . . . A�5�..�-j.�
01-01 00:00:09.933 409 409 W HidlServiceManagement: Waited one second for android.hardware.radio.config@1.1::IRadioConfig/default
01-01 00:00:10.115 463 492 D RILC : dlopen /vendor/lib64/hw/radio.quectel.module.so failed: dlopen failed: library "/vendor/lib64/hw/radio.quectel.module.so" not found
01-01 00:00:10.115 463 492 D RILC : start the service through api...
01-01 00:00:10.116 463 492 D RILC : ql_radio_config_init start
01-01 00:00:10.116 463 492 E RadioConfigFactory: '/vendor/manifest.xml' not exist.
01-01 00:00:10.116 463 492 D RadioConfigImpl: RadioConfigImpl()
01-01 00:00:10.116 463 492 D RadioConfigImpl_1_2: RadioConfigImpl_1_2:registerAsService(default)
01-01 00:00:10.118 463 492 D RadioConfigFactory: radio_config_register_service status=0
01-01 00:00:10.118 463 492 D RILC : ql_radio_config_init finish
01-01 00:00:10.118 463 492 D RILC : ql_radio_sap_init start
01-01 00:00:10.118 463 492 D RIL_SAP_1_2: ql_radio_sap_init() start.
01-01 00:00:10.119 463 492 D RIL_SAP_1_2: radio_sap_register_service status=0
01-01 00:00:10.119 463 492 D RILC : ql_radio_sap_init finish
01-01 00:00:10.120 409 409 I radiocompat: Found 1 slot(s)
01-01 00:00:10.122 409 409 I radiocompat: android.hardware.radio.data.IRadioData/slot1 is not declared in VINTF (this may be intentional)
01-01 00:00:10.122 409 409 I radiocompat: android.hardware.radio.messaging.IRadioMessaging/slot1 is not declared in VINTF (this may be intentional)
01-01 00:00:10.123 409 409 I radiocompat: android.hardware.radio.modem.IRadioModem/slot1 is not declared in VINTF (this may be intentional)
01-01 00:00:10.123 409 409 I radiocompat: android.hardware.radio.network.IRadioNetwork/slot1 is not declared in VINTF (this may be intentional)
01-01 00:00:10.123 409 409 I radiocompat: android.hardware.radio.sim.IRadioSim/slot1 is not declared in VINTF (this may be intentional)
01-01 00:00:10.123 409 409 I radiocompat: android.hardware.radio.voice.IRadioVoice/slot1 is not declared in VINTF (this may be intentional)
01-01 00:00:10.124 409 409 D radiocompat: Radio HAL compat service is operational
01-01 00:00:10.390 511 511 V MUXD : MUXD 1406:chat(): Selected 0
01-01 00:00:10.390 511 511 W MUXD : MUXD 2104:start_muxer(): Modem does not respond to AT commands, trying close mux mode
01-01 00:00:10.390 511 511 V MUXD : MUXD 758:write_frame(): write_frame Enter
01-01 00:00:10.390 511 511 V MUXD : MUXD 766:write_frame(): Sending frame to channel 0
01-01 00:00:10.390 511 511 V MUXD : MUXD 732:syslogdump(): >s 00000000: f9 03 c3 01 40 f9 . .- . . . . . . . . �.�.@�
01-01 00:00:10.390 511 511 V MUXD : MUXD 810:write_frame(): Leave
01-01 00:00:10.390 511 511 V MUXD : MUXD 758:write_frame(): write_frame Enter
01-01 00:00:10.390 511 511 V MUXD : MUXD 766:write_frame(): Sending frame to channel 0
01-01 00:00:10.391 511 511 V MUXD : MUXD 732:syslogdump(): >s 00000000: f9 03 ef 05 c3 01 f2 f9- . . . . . . . . �.�.�.��
01-01 00:00:10.391 511 511 V MUXD : MUXD 810:write_frame(): Leave
01-01 00:00:10.391 511 511 V MUXD : MUXD 1386:chat(): Enter
01-01 00:00:10.391 511 511 V MUXD : MUXD 732:syslogdump(): >s 00000000: 41 54 0d 0a . . . .- . . . . . . . . AT..
01-01 00:00:10.391 511 511 V MUXD : MUXD 1393:chat(): Wrote 4 bytes
01-01 00:00:10.391 511 511 V MUXD : MUXD 1395:chat(): CHAT++++++++++++
01-01 00:00:11.392 511 511 V MUXD : MUXD 1406:chat(): Selected 0
01-01 00:00:11.392 511 511 V MUXD : MUXD 1386:chat(): Enter
01-01 00:00:11.392 511 511 V MUXD : MUXD 732:syslogdump(): >s 00000000: 41 54 0d 0a . . . .- . . . . . . . . AT..
01-01 00:00:11.392 511 511 V MUXD : MUXD 1393:chat(): Wrote 4 bytes
01-01 00:00:11.392 511 511 V MUXD : MUXD 1395:chat(): CHAT++++++++++++
If you have only Main uart connected with the EC25, the RIL will automatically to use CMUX.
Because the RIL need both the AT port and modem port to set up ppp connection.