ShizuStore

Pixel IMS

kyujin-cho

1.3.2 · GitHub

Download APK
Vendor-specific Android 9+ 7 months ago GPL-3.0
50 ShizuStore
663k GitHub
3.1k Stars
32 MB Size

More about this app

Enable VoLTE on Pixel 6 & 7 with LG U+

Pixel IMS: Enable VoLTE on Tensor Pixel devices

Notice: Changes may not persist across reboot on devices with Android 16 QPR2 Beta 3 or newer

Due to security measures applied on Android on behalf of Google, you may have to reapply the patch across every reboot. Check FAQ section at the very bottom for more.

Troubleshooting

Refer here.

Introduction

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.

Supported Carriers

First-grade support

Carriers which can test if patch works or not by developer immediately

  • LG U+ (Republic of Korea)

2차 지원

Carriers which aren't possible for testing by developer but reported as supported by community. Please refer the Link for complete list of carriers.

Applying Patch

Requirement

  • Pixel device with Google Tensor Chipset
    • Google Pixel 6
    • Google Pixel 6a
    • Google Pixel 6 Pro
    • Google Pixel 7
    • Google Pixel 7a
    • Google Pixel 7 Pro
    • Google Pixel 8
    • Google Pixel 8 Pro
    • Google Pixel Fold

Optional

only if installing Shizuku using ADB

  • 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

Installing Shizuku

Shizuku makes possible to call internal Android API without root permission by creating a proxy service with ADB user.

  1. Install Shizuku at the Pixel device you're trying to patch. image-1
  2. Open installed applciation. image-2

Starting Shizuku without PC (Wi-Fi connection required)

  1. Follow the official guide to start Shizuku using Wifi debugging without needing any external PC, after that you should see something like "Shizuku is running" at your Pixel phone. image-4
  2. Now continue to next section.

Starting Shizuku with PC

  1. Connect your Pixel phone with PC by following this description.
  2. Start shizuku service by executing adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/start.sh. You should see something like "Shizuku is running" at your Pixel phone. image-3 image-4
  3. Now continue to next section.

Install Pixel IMS application

  1. As for now, there are two ways to obtain the application. Choose you favourite way and install the application.
  2. Start installed application.
  3. Tap "Allow all the time" when seeing prompt asking for Shizuku permission. image-5
  4. Toggle "Enable VoLTE" to enable VoLTE. image-6
  5. Restart your Pixel phone a couple of times until you can see VoLTE is working.

Build application from source

Download patched android.jar, put it under $ANDROID_PATH/sdk/platforms/android-34 and start hacking as usual.

FAQ

I am looking for somewhere to post feedback.

  • Bug report and feature request: Issues
  • Anything else (including general questions): Discussions

Does it also work on any carriers other than LG U+?

AYOR. Tested and checked working only with LG U+.

How do I know if VoLTE is enabled or not?

Registered IMS Status at Home page means VoLTE is activated. image-7

For more information, you can make use of Pixel's internal application. To open it:

  1. Open vanilla Dialer app from your Pixel phone. image-8
  2. Dial *#*#4636#*#*. image-9
  3. Tap "Phone information" menu. image-10
  4. Tap triple-dot icon at the upper right screen then select "IMS Service Status" menu. image-11
  5. You should see IMS Registration: Registered if everything's done well. image-12

Do I have to do this every time I reboot the phone?

  • Devices running Android 16 QPR2 Beta 3 or newer: Yes.
  • Others: No.

Do I have to do this after updating my Pixel?

Yes.

How does it work?

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:

  1. Check if persist.dbg.volte_avail_ovr System Property is true
    • If yes, return true
      • This is how voenabler works
    • Else continue
  2. Check if device supports VoLTE
    • If not, return false
    • Else continue
  3. Check if your carrier supports VoLTE
    • If not, return false
    • Else continue
  4. Check if your carrier requires BGA-capable SIM for VoLTE
    • If not, return true
    • Else continue
  5. 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.

Close

How Shizuku is used

Can turn on VoLTE, VoNR and Wi-Fi calling per SIM and restart IMS via `carrier config override through Shizuku`.

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

This app uses Shizuku to read and patch carrier settings for each SIM and to check IMS calling status.

  • Enable VoLTE calling: turn VoLTE availability on or off for a SIM, applied as a carrier config override through Shizuku, with an IMS restart to apply it.
  • Enable VoNR and cross-SIM: turn next generation voice and cross SIM calling on or off for a SIM through the same carrier config override through Shizuku.
  • Manage Wi-Fi calling: turn Wi-Fi calling and roaming Wi-Fi calling on or off, set Wi-Fi only support and the carrier name format, applied through Shizuku.
  • Adjust calling extras: turn video calling, supplementary services over UT or CDMA, APN editing and the IMS user agent on or off or edit their values through Shizuku.
  • Customize status display: show or hide Wi-Fi calling settings, Wi-Fi calling and data icons, 4G for LTE, enhanced 4G and IMS status in SIM info through Shizuku.
  • Edit any carrier option: change any carrier config value in expert mode, reset all overrides to carrier defaults, and view the current values in a dump viewer, all read and written through Shizuku.
  • Check and restart IMS: view whether IMS is registered for each SIM and restart IMS registration to apply changes, including from Quick Settings tiles, through Shizuku.

Android APIs or commands used

  • ICarrierConfigLoader.overrideConfig
  • ICarrierConfigLoader.getConfigForSubIdWithFeature
  • ICarrierConfigLoader.getConfigForSubId
  • CarrierConfigManager.overrideConfig
  • ITelephony.resetIms
  • ITelephony.isImsRegistered
  • ITelephony.getSubscriptionCarrierName
  • ISub.getActiveSubscriptionInfoList
  • ISub.getActiveSubscriptionInfoForSimSlotIndex
  • ISub.getSlotIndex
  • ISub.getDefaultSubId
  • IActivityManager.startDelegateShellPermissionIdentity
  • IActivityManager.stopDelegateShellPermissionIdentity
  • IActivityManager.startInstrumentation
Close

Changelog

What's new for version 1.3.2

What's Changed

New Contributors

Full Changelog: https://github.com/kyujin-cho/pixel-volte-patch/compare/1.3.1...1.3.2

Close

Permissions

3 permissions requested

  • android.permission.INTERNET
  • dev.bluehouse.enablevolte.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close