This document describes enabling VoLTE support on select Google Pixel devices by using Android's internal telephony.ICarrierConfigLoader.overrideConfig()
. This patch can be considered as a rootless method of voenabler.
- Pixel device with Google Tensor Chipset
- Google Pixel 6
- Google Pixel 6a
- Google Pixel 6 Pro
- Google Pixel 7
- Google Pixel 7 Pro
- Windows, macOS or Linux PC with Android Platform Tools installed
- USB-A to USB-C or USB-C to USB-C cable to connect Pixel to the PC
Shizuku makes possible to call internal Android API without root permission by creating a proxy service with ADB user.
- Install Shizuku at the Pixel device you're trying to patch.
- Open installed applciation.
- Connect your Pixel phone with PC by following this description.
- Start shizuku service by executing
adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/start.sh
. You should see somewhat like "Shizuku is running" at your Pixel phone. - Now continue to next section.
- Click the following link or check out Releases tab of this Github repository to install latest version of
PixelIMS
application's APK file. - Install downloaded APK file.
- Start installed application.
- Tap "Allow all the time" when seeing prompt asking for Shizuku permission.
- Press "ENABLE VOLTE" button to enable VoLTE (and VoWiFi perhaps). If everything is done right, you should now see toggle right next to
VoLTE Enabled by Config
text is now flipped. - Restart your Pixel phone a couple of times until you can see VoLTE is working.
- Bug report and feature request: Issues
- Anything else (including general questions): Discussions
AYOR. Tested and checked working only with LG U+.
Flipped System Utilizing VoLTE
toggle should be considered as success.
For more information, you can make use of Pixel's internal application. To open it:
- Open vanilla Dialer app from your Pixel phone.
- Dial
*#*#4636#*#*
. - Tap "Phone information" menu.
- Tap triple-dot icon at the upper right screen then select "IMS Service Status" menu.
- You should see
IMS Registration: Registered
if everything's done well.
No.
Not sure.
There is a checker method, ImsManager.isVolteEnabledByPlatform(Context)
, which determines if VoLTE is possible for your device-carrier combination(ref: googlesource.com). The abstract logic of that method is:
- Check if
persist.dbg.volte_avail_ovr
System Property is true- If yes, return true
- This is how voenabler works
- Else continue
- If yes, return true
- Check if device supports VoLTE
- If not, return false
- Else continue
- Check if your carrier supports VoLTE
- If not, return false
- Else continue
- Check if your carrier requires BGA-capable SIM for VoLTE
- If not, return true
- Else continue
- Check if GBA bit is active at EF IST
- If yes, return true
- If not, return false
This patch alters the bolded logic, by force injecting config values as true regardless of carrier configuration.