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/