diff --git a/configs/privapp-permissions-com.mediatek.ims.xml b/configs/privapp-permissions-com.mediatek.ims.xml
new file mode 100644
index 0000000..fe93e61
--- /dev/null
+++ b/configs/privapp-permissions-com.mediatek.ims.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/configs/properties/system.prop b/configs/properties/system.prop
index 37becf3..b68fbca 100644
--- a/configs/properties/system.prop
+++ b/configs/properties/system.prop
@@ -1,2 +1,7 @@
# Charger
ro.charger.enable_suspend=true
+
+# IMS
+persist.dbg.volte_avail_ovr=1
+persist.dbg.vt_avail_ovr=1
+persist.dbg.wfc_avail_ovr=1
diff --git a/device.mk b/device.mk
index 72002f8..ad72406 100644
--- a/device.mk
+++ b/device.mk
@@ -140,6 +140,19 @@ PRODUCT_PACKAGES += \
libhidltransport.vendor \
libhwbinder.vendor
+# IMS
+PRODUCT_BOOT_JARS += \
+ mediatek-common \
+ mediatek-framework \
+ mediatek-ims-base \
+ mediatek-ims-common \
+ mediatek-telecom-common \
+ mediatek-telephony-base \
+ mediatek-telephony-common
+
+PRODUCT_COPY_FILES += \
+ $(LOCAL_PATH)/configs/privapp-permissions-com.mediatek.ims.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-com.mediatek.ims.xml
+
# Init files
PRODUCT_PACKAGES += \
fstab.mt6789 \
@@ -216,7 +229,8 @@ PRODUCT_COPY_FILES += \
# Overlays
PRODUCT_PACKAGES += \
FrameworksResOverlay \
- SettingsResOverlay
+ SettingsResOverlay \
+ TelephonyOverlay
# Permissions
PRODUCT_COPY_FILES += \
diff --git a/overlay/FrameworksResOverlay/res/values/config.xml b/overlay/FrameworksResOverlay/res/values/config.xml
index fb4ee69..fe110f7 100644
--- a/overlay/FrameworksResOverlay/res/values/config.xml
+++ b/overlay/FrameworksResOverlay/res/values/config.xml
@@ -308,4 +308,30 @@
true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
diff --git a/overlay/TelephonyOverlay/Android.bp b/overlay/TelephonyOverlay/Android.bp
new file mode 100644
index 0000000..89a8cde
--- /dev/null
+++ b/overlay/TelephonyOverlay/Android.bp
@@ -0,0 +1,12 @@
+//
+// Copyright (C) 2023 The LineageOS Project
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+
+runtime_resource_overlay {
+ name: "TelephonyOverlay",
+ sdk_version: "current",
+ product_specific: true,
+ resource_dirs: ["res"]
+}
diff --git a/overlay/TelephonyOverlay/AndroidManifest.xml b/overlay/TelephonyOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..d9b7a43
--- /dev/null
+++ b/overlay/TelephonyOverlay/AndroidManifest.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/overlay/TelephonyOverlay/res/values/config.xml b/overlay/TelephonyOverlay/res/values/config.xml
new file mode 100644
index 0000000..1f95aa7
--- /dev/null
+++ b/overlay/TelephonyOverlay/res/values/config.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+ com.mediatek.ims
+
+
+ com.mediatek.ims
+
diff --git a/proprietary-files.txt b/proprietary-files.txt
index 6cb30ac..b812542 100644
--- a/proprietary-files.txt
+++ b/proprietary-files.txt
@@ -693,6 +693,37 @@ vendor/lib64/mt6789/libmnl.so
vendor/lib64/librpc.so
vendor/lib64/libviagpsrpc.so
+# IMS
+bin/vtservice
+etc/init/init.vtservice.rc
+framework/mediatek-common.jar
+framework/mediatek-framework.jar
+framework/mediatek-ims-base.jar
+framework/mediatek-ims-common.jar
+framework/mediatek-ims-extension-plugin.jar
+framework/mediatek-telecom-common.jar
+framework/mediatek-telephony-base.jar
+framework/mediatek-telephony-common.jar
+framework/mediatek-wfo-legacy.jar
+lib64/libcomutils.so
+lib64/libimsma.so
+lib64/libimsma_adapt.so
+lib64/libimsma_rtp.so
+lib64/libimsma_socketwrapper.so
+lib64/libmtk_vt_service.so
+lib64/libmtk_vt_wrapper.so
+lib64/libmtkperf_client.so
+lib64/libsignal.so
+lib64/libsink.so
+lib64/libsource.so
+lib64/libvcodec_cap.so
+lib64/libvcodec_capenc.so
+lib64/libvsim-adaptor-client.so
+lib64/libvt_avsync.so
+priv-app/ImsService/ImsService.apk
+system_ext/lib/vendor.mediatek.hardware.videotelephony@1.0.so
+system_ext/lib64/vendor.mediatek.hardware.videotelephony@1.0.so
+
# Keymaster
vendor/bin/hw/vendor.mediatek.hardware.keymaster_attestation@1.1-service
vendor/bin/kmsetkey_ca.trustonic