https://github.com/kyujin-cho/pixel-volte-patch
Pixel IMS: Rootless replacement for Tensor Pixel VoLTE patch
https://github.com/kyujin-cho/pixel-volte-patch
Last synced: 17 days ago
JSON representation
Pixel IMS: Rootless replacement for Tensor Pixel VoLTE patch
- Host: GitHub
- URL: https://github.com/kyujin-cho/pixel-volte-patch
- Owner: kyujin-cho
- License: gpl-3.0
- Created: 2023-02-05T19:02:28.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-31T17:05:56.000Z (9 months ago)
- Last Synced: 2025-04-07T16:07:13.584Z (25 days ago)
- Language: Kotlin
- Homepage:
- Size: 2.29 MB
- Stars: 1,630
- Watchers: 37
- Forks: 111
- Open Issues: 68
-
Metadata Files:
- Readme: README.en.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Pixel IMS: Enable VoLTE on Tensor Pixel devices
## Troubleshooting
Refer [here](https://github.com/kyujin-cho/pixel-volte-patch/blob/main/docs/troubleshooting.en.md).
## 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](https://github.com/cigarzh/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](https://github.com/kyujin-cho/pixel-volte-patch/blob/main/docs/compatibility-chart.en.md) 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](https://developer.android.com/studio/command-line/adb) installed
- USB-A to USB-C or USB-C to USB-C cable to connect Pixel to the PC### Installing Shizuku
[Shizuku](https://shizuku.rikka.app/) makes possible to call internal Android API without root permission by creating a proxy service with ADB user.
1. Install [Shizuku](https://play.google.com/store/apps/details?id=moe.shizuku.privileged.api) at the Pixel device you're trying to patch.

2. Open installed applciation.
### Starting Shizuku without PC (Wi-Fi connection required)
1. Follow the [official guide to start Shizuku using Wifi debugging](https://shizuku.rikka.app/guide/setup/#start-via-wireless-debugging) without needing any external PC, after that you should see something like "Shizuku is running" at your Pixel phone.

2. Now continue to next section.### Starting Shizuku with PC
1. Connect your Pixel phone with PC by following [this description](https://shizuku.rikka.app/guide/setup/#start-by-connecting-to-a-computer).
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.


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.
- Via [Play Store](https://play.google.com/store/apps/details?id=dev.bluehouse.enablevolte)
- From [Github Releases](https://github.com/kyujin-cho/pixel-volte-patch/releases/download/1.2.8/dev.bluehouse.enablevolte.apk), by downloading APK file
2. Start installed application.
3. Tap "Allow all the time" when seeing prompt asking for Shizuku permission.

4. Toggle "Enable VoLTE" to enable VoLTE.

5. Restart your Pixel phone a couple of times until you can see VoLTE is working.### Build application from source
Download [patched android.jar](https://github.com/Reginer/aosp-android-jar/raw/main/android-34/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](https://github.com/kyujin-cho/pixel-volte-patch)
- Anything else (including general questions): [Discussions](https://github.com/kyujin-cho/pixel-volte-patch/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.
For more information, you can make use of Pixel's internal application. To open it:
1. Open vanilla Dialer app from your Pixel phone.

2. Dial `*#*#4636#*#*`.

3. Tap "Phone information" menu.

4. Tap triple-dot icon at the upper right screen then select "IMS Service Status" menu.

5. You should see `IMS Registration: Registered` if everything's done well.
### Do I have to do this every time I reboot the phone?
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](https://android.googlesource.com/platform/frameworks/opt/net/ims/+/002b204/src/java/com/android/ims/ImsManager.java)). 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 falseThis patch alters the bolded logic, by force injecting config values as true regardless of carrier configuration.