DART-MX8M Android Modem

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

Overview

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


Note:

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

Hardware Interface

Hardware Availability and Setup

Software Setup

Make sure you have the required hardware as per above.

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)

Adding Driver to build

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/

Add Quectel libraries to build

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

TARGET_HAVE_QUECTEL_RIL := true 
ifeq ($(TARGET_HAVE_QUECTEL_RIL),true)
# wifionly device
PRODUCT_PROPERTY_OVERRIDES += \
    ro.radio.noril=false

PRODUCT_COPY_FILES += \
	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 \
	vendor/quectel/libquectel-ril/ql-ril.conf:vendor/etc/ql-ril.conf
fi

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
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

Add RILD in the HIDL service

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

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

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
#PCIe
/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

#quectel
/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
#PCIe
/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 };

Build Android Images with RIL

Rebuild the android images using
Developers Guide

Flash Android Images with RIL

Developers Guide

References

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