Difference between revisions of "DART-MX8M Android Modem"
Line 49: | Line 49: | ||
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 | ||
+ | |||
+ | === Add Quectel libraries in the ril-daemon service === | ||
+ | Edit device/variscite/imx8m/{{#var:ANDROID_MACHINE_NAME}}/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/{{#var:ANDROID_MACHINE_NAME}}/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/{{#var:ANDROID_MACHINE_NAME}}/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/{{#var:ANDROID_MACHINE_NAME}}/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/{{#var:ANDROID_MACHINE_NAME}}/sepolicy/rild.te | ||
+ | and add the following content in it. | ||
+ | |||
+ | allow rild self:packet_socket { create bind write read }; | ||
=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 |
Revision as of 09:30, 28 November 2021
1 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.
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, build doesn't have RIL setup. <be> To add the RIL support follow below steps.
Register and get access to 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
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 in it.
allow rild self:packet_socket { create bind write read };