DART-MX8M Android Modem

From Variscite Wiki
DART-MX8M - Android Oreo Android O8.1.0_r14 - mPCIE - Modem

1 Overview

The DART-MX8M is capable of adding mini PCI-e based modem to support LTE connectivity.


  • At present we support only LTE Quectel EC25 support.
  • Other modules could be supported please contact your module vendor.

1.1 Hardware Interface

2 Hardware Availability and Setup

3 Software Setup

Make sure you have the required hardware as per above.

3.1 RIL Setup

By default, the build doesn't have a RIL setup. <be> To add the RIL support follow the below steps.

Register and get access to the download zone https://www.quectel.com/login Download Quectel_Android_RIL_Driver_XX.Y.ZZ_master_<release>.tgz Where (XX.Y.ZZ are version numbers from quectel and <release> can be alpha/beta etc)

3.2 Adding Driver to build

3.3 Downloading and adding Quectel RIL to build

$ cd ~/var_imx-o8.1.0_1.3.0_8m/android_build
$ mkdir -p vendor/quectel/
$ tar -xvf ~/Downloads/Quectel_Android_RIL_Driver_V3.3.49_master_beta.tgz -C vendor/quectel/

3.3.1 Add Quectel libraries to build

Edit device/variscite/imx8m/dart_mx8m/dart_mx8m.mk and add following code

# wifionly device

	vendor/quectel/libquectel-ril/arm64-v8a/libreference-ril.so:vendor/lib64/hw/libreferece-ril.so \
       vendor/quectel/libquectel-ril/arm64-v8a/ip-up:vendor/bin/ip-up \ 
       vendor/quectel/libquectel-ril/arm64-v8a/chat:vendor/bin/chat \
       vendor/quectel/libquectel-ril/arm64-v8a/ip-down:vendor/bin/ip-down \

3.3.2 Add Quectel libraries in the ril-daemon service

Edit device/variscite/imx8m/dart_mx8m/init.rc and add following code

service ril-daemon /vendor/bin/hw/rild -l vendor/lib64/hw/
    class main
    user radio
    group radio cache inet misc audio sdcard_rw log

3.3.3 Add RILD in the HIDL service

Edit device/variscite/imx8m/dart_mx8m/manifest.xml and add following code

<hal format="hidl">

3.3.4 Setup file context and selinux permissions

Edit device/variscite/imx8m/dart_mx8m/ueventd.nxp.rc and add following code

#quectel port
/dev/ttyUSB* 0660 radio radio
/dev/ttyACM* 0660 radio radio
/dev/cdc-wdm* 0660 radio radio
/dev/qcqmi* 0660 radio radio
/dev/cdc-acm* 0660 radio radio
/dev/mhi_DUN 0660 radio radio
/dev/mhi_DIAG 0660 radio radio
/dev/mhi_BHI 0660 radio radio
/dev/mhi_LOOPBACK 0660 radio radio
/dev/mhi_QMI0 0660 radio radio

Edit device/variscite/imx8m/dart_mx8m/sepolicy/file_contexts and add following code

/dev/ttyUSB[0-9] u:object_r:radio_device:s0
/dev/ttyACM[0-9] u:object_r:radio_device:s0
/dev/cdc-wdm[0-9] u:object_r:radio_device:s0
/dev/qcqmi[0-9] u:object_r:radio_device:s0
/vendor/bin/hw/rild u:object_r:rild_exec:s0
/dev/socket/rildOemHook u:object_r:rild_socket:s0
/dev/mhi_DUN u:object_r:radio_device:s0
/dev/mhi_DIAG u:object_r:radio_device:s0
/dev/mhi_BHI u:object_r:radio_device:s0
/dev/mhi_LOOPBACK u:object_r:radio_device:s0
/dev/mhi_QMI0 u:object_r:radio_device:s0

Create a seplicy file for rild to allow the socket communication File : device/variscite/imx8m/dart_mx8m/sepolicy/rild.te and add the following content to it.

allow rild self:packet_socket { create bind write read };

3.4 Build Images with RIL

Rebuild the android images using
Developers Guide#Build_Android_Images

4 References

  1. https://forums.quectel.com/uploads/short-url/paFeIdgzFeu3ArLuJEfWpWkIV05.pdf
  2. https://www.quectel.com/product/lte-ec25-mini-pcie-series