A Shizuku-based carrier config modifier for Pixel devices, forked from kyujin-cho/pixel-volte-patch with Sri Lanka carrier extras (5G NR, SSRSRP thresholds, VoIMS provisioning opt-in) and auto-apply on reboot.
Notice: On Android 16 QPR2 Beta 3 or newer, carrier config overrides are session-only and are lost on reboot. This fork's auto-apply on reboot feature re-applies your saved configuration automatically. See Auto-apply on reboot for details.
| Feature | Description |
|---|---|
| Enable VoLTE | Force-enables VoLTE (IMS) regardless of carrier provisioning. |
| Enable VoNR | Force-enables VoNR (Voice over NR) and its Settings visibility. |
| Enable 5G NR (NSA+SA) | Writes KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY = [1, 2] to enable both NSA and SA 5G for carriers that don't enable it by default. |
| Enable Backup Calling | Enables Cross-SIM (Backup Calling) on opportunistic data. |
| Enable VoWiFi | Force-enables Wi-Fi Calling (WFC). |
| Enable VoWiFi while roaming | Allows VoWiFi while roaming. |
| Enable Video Calling (VT) | Force-enables Video Telephony. |
| Enable Supplementary Services over UT | Enables SS over UT (Android 10+). |
| Enable Supplementary Services over CDMA | Enables SS over CDMA. |
| Enable Enhanced 4G LTE (LTE+) | Enables the Enhanced 4G LTE mode and its Settings visibility. |
| Allow adding APNs | Allows adding new APNs. |
| Feature | Description |
|---|---|
| 5G NR (NSA+SA) | Enables 5G NR availability for carriers (e.g. Dialog Axiata) that don't provision it by default. |
| 5G NR SSRSRP thresholds | Writes the Dialog 5G signal-bar thresholds (5g_nr_ssrsrp_thresholds_int_array = [-128, -118, -108, -98]) so 5G signal bars render correctly. Applied automatically when the 5G NR toggle is enabled. |
| VoIMS provisioning opt-in | Flips the IMS provisioning flag (KEY_VOIMS_OPT_IN_STATUS = 68) via ITelephony.setImsProvisioningInt. Fixes carriers (Dialog, Mobitel) that block VoLTE at the provisioning layer even after the carrier config override. Invoked only when you enable VoLTE — never on cold start. |
| Feature | Description |
|---|---|
| Show VoWiFi preference in Settings | Shows the Wi-Fi Calling preference in Settings. |
| Show VoWiFi Roaming preference in Settings | Shows the Wi-Fi Calling roaming preference in Settings. |
| Wi-Fi Calling network name format | Selects the WFC SPN format shown for Wi-Fi Calling. |
| Show "WiFi only" mode for VoWiFi | Adds the "WiFi only" mode option for VoWiFi. |
| Show VoWiFi Icon | Shows the VoWiFi icon in the status bar. |
| Always Show Data RAT Icon | Always shows the data RAT icon. |
| Show 4G for LTE Data Icon | Displays "4G" instead of "LTE" for the data icon. |
| Hide Enhanced Data Icon | Hides the LTE+ data icon. |
| Show IMS Status in SIM Info | Shows IMS registration status in SIM status. |
| Feature | Description |
|---|---|
| IMS status tile | Adds a per-SIM IMS status display tile. |
| VoLTE config toggle tile | Adds a per-SIM VoLTE config toggle tile. |
| Feature | Description |
|---|---|
| Expert Mode | Raw carrier config key editor — view and edit any key by name. |
| Config dump | Dumps the current carrier config to the clipboard. |
| Restart IMS registration | Restarts IMS registration for the selected SIM. |
| Reset all settings | Clears all overrides and reverts to carrier defaults. |
| Auto-apply on reboot | Re-applies your saved toggles after every reboot (new in v1.4.0). |
The app uses Shizuku (no root required) to call Android's internal telephony.ICarrierConfigLoader.overrideConfig() API and force-enable carrier features that your carrier doesn't provision.
On devices with the October 2025 security patch (CVE-2025-48617), direct overrideConfig() calls are blocked. The app automatically detects the security patch level and switches to an Instrumentation broker (BrokerInstrumentation) that bypasses the restriction — the same proven mechanism as upstream kyujin-cho/pixel-volte-patch.
On Android 16 QPR2+, overrides are session-only (persistent=false fallback) and are lost on reboot. The auto-apply on reboot feature re-applies your saved configuration automatically.
- Pixel device (or any device with carrier config override support)
- Android 9+ (minSdk 28)
- Shizuku installed and running
- Root mode — required for fully automatic auto-apply on boot
- ADB mode — works for manual re-apply; auto-apply waits for Shizuku to start
- For auto-apply on reboot: the app must not be in a "background restricted" state (exempt it from battery optimization if needed)
- If upgrading from the old PixelIMS (
io.github.pixelims): uninstall it first, then reboot. - Install the APK.
- Start Shizuku (ADB or root mode).
- Open the app and grant Shizuku permission ("Allow all the time").
- Go to your SIM's Config tab and toggle the features you want.
Download the patched android.jar, place it under $ANDROID_PATH/sdk/platforms/android-34, and build as usual.
On Android 16 QPR2+, carrier config overrides are lost on reboot. This fork ships a BOOT_COMPLETED receiver plus a specialUse foreground service that re-applies your saved toggles automatically.
- Your toggle states are saved to SharedPreferences whenever you change them.
- After a reboot, the BOOT_COMPLETED receiver starts the foreground service.
- The service waits for Shizuku to become available, then re-applies the saved configuration.
- If settings are pending re-apply, an in-app "Re-apply" banner appears on the Home page.
Fully automatic. Shizuku auto-starts on boot, so the service re-applies your configuration without any interaction.
The service waits up to 120 seconds for Shizuku to start. If Shizuku doesn't start in time, a notification prompts you to start Shizuku and open the app. Once Shizuku is running, use the in-app Re-apply banner to apply your saved configuration.
On Android 13+, if the app is in a "background restricted" state, the BOOT_COMPLETED broadcast will not be delivered. To keep auto-apply working:
- Exempt the app from battery optimization (Settings → Apps → Pixel IMS → Battery → Unrestricted), or
- Use the in-app Re-apply banner after boot.
This fork adds three carrier extras targeting Sri Lankan networks (Dialog Axiata, Mobitel):
- 5G NR toggle — enables NSA+SA 5G availability for carriers that don't enable 5G by default. Upstream only read this key; this fork adds the write UI.
- SSRSRP thresholds — writes Dialog Axiata's 5G signal-bar thresholds so the 5G signal bars display correctly.
- VoIMS provisioning opt-in — flips the IMS provisioning flag (key 68) that Dialog and Mobitel block at the provisioning layer, which prevents VoLTE from registering even when the carrier config is set. This is invoked only when you enable VoLTE, and failures are non-fatal.
| Problem | Solution |
|---|---|
| "Shizuku not running" | Start Shizuku. ADB mode: tap Start in the Shizuku app. Root mode: ensure the Magisk module is installed. |
| "Permission not granted" | Open the app and grant Shizuku permission ("Allow all the time"). |
| Settings lost after reboot | Auto-apply is automatic. If it fails, use the in-app Re-apply banner. |
| App doesn't auto-apply on reboot | Check that the app is not battery-optimized/restricted. Check that Shizuku auto-starts (root mode, or wireless debugging auto-start). |
| 5G NR not showing | Enable the 5G NR toggle in Config, then restart IMS registration or toggle airplane mode. |
- kyujin-cho — the base app and the proven Android 17 broker mechanism
- vvb2060/TurboIMS — the original Instrumentation bypass
- VinujaHerath/PixelIMS — the Sri Lanka extras source (5G NR, SSRSRP thresholds, VoIMS opt-in)
- Reginer/aosp-android-jar — the patched android.jar for hidden API compilation
GPL-3.0 — same as upstream. See LICENSE.
This app modifies carrier configuration via Shizuku. It does not require root. On-device runtime is verified by the user on Android 17 (CP2A.260705.006). No warranty — use at your own risk.