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.
- Toggle "Enable VoLTE" to enable VoLTE.
- 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+.
Registered
IMS Status at Home page means VoLTE is activated.
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.
Yes.
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.