Difference between revisions of "DART-MX8M Android Modem"

From Variscite Wiki
 
(21 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!--
 
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!--
 
--> {{#lst:Android_Platform_Customization|{{#var:RELEASE_PARAM|RELEASE_O8.1.0_1.3.0_8M_DART-MX8M}}}} <!--
 
--> {{#lst:Android_Platform_Customization|{{#var:RELEASE_PARAM|RELEASE_O8.1.0_1.3.0_8M_DART-MX8M}}}} <!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} - Android {{#var:ANDROID_NAME}} {{#var:ANDROID_VERSION}} - mPCIE - Modem}} {{DocImage|category1=Android|category2={{#var:HARDWARE_NAME}}}} __toc__
+
--> {{PageHeader|{{#var:HARDWARE_NAME}} - {{#var:ANDROID_NXP_VERSION}} - mPCIE - Modem}} {{DocImage|category1=Android|category2={{#var:HARDWARE_NAME}}}} __toc__
  
 
=Overview=
 
=Overview=
The {{#var:HARDWARE_NAME}} is capable of adding mini PCI-e based modem to support LTE connectivity.  
+
The {{#var:HARDWARE_NAME}} is capable of adding a Mini PCI-E based modem to support LTE connectivity.  
  
  
 
Note:<br>
 
Note:<br>
* At present we support only LTE Quectel EC25 support.  
+
* At present we support LTE Quectel EC25.  
 
* Other modules could be supported please contact your module vendor.  
 
* Other modules could be supported please contact your module vendor.  
  
 
== Hardware Interface ==
 
== Hardware Interface ==
 +
* Quectel EC25 mPCI-E Hardware module with a SIM card <br>
 +
* mPCI-E interface with USB support, like the one on the DT8MCustomBoard (note that the Symphony-Board mPCI-E interface does not support USB)
  
 
=Hardware Availability and Setup=
 
=Hardware Availability and Setup=
 +
* Connect SIM card to mPCIe-E module
 +
* Connect mPCI-E Module to J23
 +
Note: Make sure your SIM provider is supporting mPCI-E module specification of the network.
  
 
=Software Setup=
 
=Software Setup=
 
Make sure you have the required hardware as per above.
 
Make sure you have the required hardware as per above.
 
==RIL Setup==
 
==RIL Setup==
By default, the build doesn't have a RIL setup. <be>
+
By default, the build doesn't have a RIL setup.<br>
To add the RIL support follow the below steps.  
+
To add the RIL support follow the below steps.<br>
 
+
<br>
Register and get access to the download zone https://www.quectel.com/login  
+
Register and get access to the download zone https://www.quectel.com/login<br>
Download Quectel_Android_RIL_Driver_XX.Y.ZZ_master_<release>.tgz
+
Download Quectel_Android_RIL_Driver_XX.Y.ZZ_master_<release>.tgz<br>
 
Where (XX.Y.ZZ are version numbers from quectel and <release> can be alpha/beta etc)
 
Where (XX.Y.ZZ are version numbers from quectel and <release> can be alpha/beta etc)
  
 
==Adding Driver to build==
 
==Adding Driver to build==
 +
 +
Edit {{#ifeq:{{#var:KERNEL_HAS_GKI}}|true |
 +
arch/arm64/configs/{{#var:KERNEL_GKI_FRAGMENT}} and add following
 +
CONFIG_USB_NET_QMI_WWAN=m
 +
|
 +
{{#var:KERNEL_DEFCONFIG}} and enable following
 +
Device Drivers->
 +
  Network device support ->
 +
  USB Network Adapters ->
 +
    Multi-purpose USB Networking Framework ->
 +
    <*> QMI WWAN driver for Qualcomm MSM based 3G and LTE modems
 +
and enable
 +
CONFIG_USB_NET_QMI_WWAN=y
 +
}}
  
 
==Downloading and adding Quectel RIL to build==
 
==Downloading and adding Quectel RIL to build==
Line 44: Line 63:
 
  PRODUCT_COPY_FILES += \
 
  PRODUCT_COPY_FILES += \
 
  vendor/quectel/libquectel-ril/arm64-v8a/libreference-ril.so:vendor/lib64/hw/libreferece-ril.so \
 
  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/ip-up:vendor/bin/ip-up \  
        vendor/quectel/libquectel-ril/arm64-v8a/chat:vendor/bin/chat \
+
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/arm64-v8a/ip-down:vendor/bin/ip-down \
 
  vendor/quectel/libquectel-ril/ql-ril.conf:vendor/etc/ql-ril.conf
 
  vendor/quectel/libquectel-ril/ql-ril.conf:vendor/etc/ql-ril.conf
 
  fi
 
  fi
Line 105: Line 124:
 
  allow rild self:packet_socket { create bind write read };
 
  allow rild self:packet_socket { create bind write read };
  
== Build Images with RIL ==
+
== Build Android Images with RIL ==
 
Rebuild the android images using  <br>
 
Rebuild the android images using  <br>
{{Varlink|Android_NXP_Guide|{{#vardefine:RELEASE_LINK}}|Developers Guide#Build_Android_Images}}
+
{{Varlink|Android_NXP_Guide|{{#var:RELEASE_LINK}}#Build_Android_Images|Developers Guide}}
 +
 
 +
== Flash Android Images with RIL ==
 +
Flash the resulting Android Images
 +
{{Varlink|Android_NXP_Guide|{{#var:RELEASE_LINK}}#Flashing_Android_with_USB_Fastboot|Developers Guide}}
 +
 
 
=References=
 
=References=
 
# https://forums.quectel.com/uploads/short-url/paFeIdgzFeu3ArLuJEfWpWkIV05.pdf
 
# https://forums.quectel.com/uploads/short-url/paFeIdgzFeu3ArLuJEfWpWkIV05.pdf
 
# https://www.quectel.com/product/lte-ec25-mini-pcie-series
 
# https://www.quectel.com/product/lte-ec25-mini-pcie-series

Latest revision as of 18:33, 7 February 2022

DART-MX8M - Android O8.1.0_1.3.0 - mPCIE - Modem

1 Overview

The DART-MX8M is capable of adding a Mini PCI-E based modem to support LTE connectivity.


Note:

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

1.1 Hardware Interface

  • Quectel EC25 mPCI-E Hardware module with a SIM card
  • mPCI-E interface with USB support, like the one on the DT8MCustomBoard (note that the Symphony-Board mPCI-E interface does not support USB)

2 Hardware Availability and Setup

  • Connect SIM card to mPCIe-E module
  • Connect mPCI-E Module to J23

Note: Make sure your SIM provider is supporting mPCI-E module specification of the network.

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.
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

Edit imx8m_var_dart_android_defconfig and enable following

Device Drivers->
 Network device support ->
  USB Network Adapters ->
   Multi-purpose USB Networking Framework ->
    <*> QMI WWAN driver for Qualcomm MSM based 3G and LTE modems

and enable

CONFIG_USB_NET_QMI_WWAN=y

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

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

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

3.3.3 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>

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
#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 };

3.4 Build Android Images with RIL

Rebuild the android images using
Developers Guide

3.5 Flash Android Images with RIL

Flash the resulting Android Images Developers Guide

4 References

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