How to enable VoLTE on Qualcomm devices running Generic System Images (GSIs)

Опубликовано: 30 Март 2026
на канале: Lords Of Android
609
9

Google’s Project Treble is undoubtedly the biggest restructuring of the Android OS since its inception. The Mountain View giant completely revamped the way the Android OS framework and vendor drivers/the Linux kernel interact with one another in order to reduce Android platform version fragmentation. On top of that, Project Treble also made it possible to boot an AOSP Generic System Image (GSI) on any supported device. XDA’s developer community has long been distributing its own custom GSIs with additional device-specific fixes, but there are some known limitations in those builds. For example, advanced cellular services like Voice over LTE (VoLTE) and Wi-Fi Calling (VoWiFi) are usually broken on GSIs.

Unlike traditional circuit-switched-style networks, VoLTE and VoWiFi are powered by the IP Multimedia Subsystem (IMS). A typical Android device with a Qualcomm modem comes with a special privileged application that acts as a liaison between the radio interface layer (RIL) and these IMS services. In theory, one can extract the appropriate IMS APK alongside the necessary shared objects from the stock firmware and push it to their respective destinations after installing the GSIs to get VoLTE working. This is exactly where the VoLTE-Fix mod comes in.




Ways to install
1. Using the flashable zip (Simplest)
Go to releases and download the installer zip. Then simply flash using any custom recovery such as TWRP

Note:
If your Recovery cannot decrypt data, then you need to have root access. Set props manually using

setprop persist.dbg.allow_ims_off 1
setprop persist.dbg.volte_avail_ovr 1
setprop persist.dbg.vt_avail_ovr 1
setprop persist.dbg.wfc_avail_ovr 1
setprop persist.sys.phh.ims.caf true

AFTER booting into system

2. Using the Installer Script

Note: If you're not rooted or are using magisk (that's systemless so it doesn't work), boot into TWRP, and mount system as r/w

Run bash ./install.sh (uses adb, script needs to be run on a computer)

3. Manually

Push the ims folder found inside the 32bit / 64bit folder

Note: If you're using a version older than AOSP v216, you'll also have to push the android.hardware.telephony.ims.xml to /system/etc/permissions. The script and the zip will automatically add it for you

Set the following properties using setprop

persist.dbg.allow_ims_off to 1
persist.dbg.volte_avail_ovr to 1
persist.dbg.vt_avail_ovr to 1
persist.dbg.wfc_avail_ovr to 1
persist.sys.phh.ims.caf to true
For a 64 bit device (arm64)
Copy the 64bit/ims (don't copy the 64bit folder, only the ims folder inside it) folder to /system/priv-app

For a 32 bit device (arm & a64)
Copy the 32bit/ims (don't copy the 32bit folder, only the ims folder inside it) folder to /system/priv-app

Ways to uninstall

1. Using the flashable zip (Simplest)

Go to releases and download the uninstaller zip. Then simply flash using any custom recovery such as TWRP

2. Using the Uninstaller Script

Note: If you're not rooted or are using magisk (that's systemless so it doesn't work), boot into TWRP, and mount system as r/w

Run bash ./uninstall.sh

3. Manually
Set the following properties using setprop

persist.dbg.allow_ims_off to 0
persist.dbg.volte_avail_ovr to 0
persist.dbg.vt_avail_ovr to 0
persist.dbg.wfc_avail_ovr to 0
persist.sys.phh.ims.caf to false
Remove the ims folder from /system/priv-app/