How to enable VoLTE on Qualcomm devices running Generic System Images (GSIs)
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.
Developed by Khushraj Rathod, this mod is quite versatile in nature. You can install it from a custom recovery like TWRP in the form of a flashable ZIP file or pick the installer shell script to do the work for you. The developer has also described a manual installation process, where you need to move the files and set the required prop values by hand after installing a GSI. Please note that the IMS APK is closed source, in case you’re wondering.
Keep in mind that certain OEMs (e.g. Samsung) prefer not to follow the multimedia telephony service (MMTel) standard. Their IMS implementations are completely proprietary, thus you can’t enable VoLTE on such devices using this mod.