Skip to content

Releases: bkaganovich-stack/pixel-volte-patch

v1.3.9

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 26 Sep 23:15
db91ecf

What's new in v1.3.9

📶 5G diagnostics now match how Russian 5G actually works

Version 1.3.8 was built on a wrong assumption: that 5G in Russia runs only in SA mode on band n79. The commercial networks launched on 11 September 2026 run as NSA. 5G is added on top of an LTE connection, on bands n1, n7 and n40, plus separate n79 zones. Because of that, 1.3.8 got two things wrong:

  • It reported carrier settings that allow only NSA as the thing blocking 5G. They are not: NSA is exactly the mode these networks need, and it is what Pixel already ships for most carriers. That check now passes when NSA is allowed. It fails only when NSA is off, and its button, now Enable 5G (NSA + SA), turns both modes on.
  • It could never show a 5G NSA connection. It read the wrong one of the two LTE registrations Android keeps, and that one always says "no 5G". It now reads the right one.

🗼 New check: does this cell offer 5G?

In NSA, 5G can only be added on LTE cells the operator has linked to a 5G cell. A new check, This cell offers 5G, reads what the network reports about the LTE cell the phone is on right now:

  • The cell can add 5G and the network allows it for this SIM. 5G should appear while data is flowing.
  • The operator has 5G, but not on this cell. Nothing on the phone can change that; you need to be in the operator's 5G coverage.
  • The cell offers 5G, but the network does not allow it for this SIM. This is set by the operator, usually through the tariff.

This check also tells a network problem apart from a phone problem. Suppose the cell offers 5G, the network allows it, a download is running, and 5G still never appears while other phones nearby get it. Then the Pixel's modem is not using 5G on this network. That is decided by a carrier profile inside the modem firmware. No carrier-config app can reach it, this one included; changing it needs root. The screen now says this plainly instead of blaming the network.

✏️ Wording

  • The verdict no longer says "there is no 5G cell here" when every setting passes. It points you to the network checks, which now show what is actually happening.

Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required. 5G diagnostics need Android 12 or newer.
Signed with the same key as previous releases, so it installs as an update.
Verified on Pixel 10 Pro XL, Android 17 (CP3A.260905.009).

v1.3.8 — 5G diagnostics

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 26 Sep 11:46
c3e8869

What's new in v1.3.8

Correction: an earlier version of these notes said 5G in Russia runs only in SA mode on band n79. That is wrong: the networks launched in September 2026 run as NSA on an LTE anchor. v1.3.9 fixes the diagnostics accordingly.

📶 5G diagnostics: find out why there is no 5G

New on every SIM screen: 5G diagnostics. It answers the question "I turned on 5G SA, so why am I still on LTE?"

The app checks, in order, everything that has to be right for 5G:

  1. The modem supports 5G.
  2. The carrier settings allow 5G SA.
  3. The SIM's preferred network type includes 5G.
  4. Neither the carrier nor battery saver has switched 5G off.
  5. This SIM is the one used for mobile data. On dual-SIM phones 5G is usually used only on the data SIM.
  6. What the phone is actually connected to right now: 5G SA, 5G NSA or LTE, with the band.
  7. Whether IMS (VoLTE / VoNR / Wi-Fi calling) is registered.

At the top you get a one-line verdict naming the check that blocks 5G. Where the app can fix it, there is a button right under the check: Enable 5G SA, Open network settings, Open SIM settings or Restart IMS registration.

If every check passes and you are still on LTE, the screen says so plainly: there is no 5G cell where you are, or the network does not let this SIM onto it. No setting on the phone can change that.

⚠️ Warning about other IMS apps

If you have other apps installed that change the same carrier settings (vvb2060 IMS, TensorIMS, Carrier IMS for Pixel, Pixel IMS 5G, PixelCarrierSettings and similar), the Home screen now lists them.

Android keeps only the value written last, so an app that re-applies its own settings every time Shizuku starts can quietly undo yours after a reboot. For each app the list says whether it does that on its own or only when you use it, and whether its settings are active on your SIM right now. Tap an entry to open its app info page, where you can uninstall it.

🛠 Fixes

  • Typing a User-Agent no longer writes it letter by letter. Before, every character you typed was applied to the carrier settings straight away, and Dismiss could not undo any of it. Now nothing changes until you tap Confirm.
  • Your saved settings can no longer be replaced by carrier defaults. Before, if you opened a SIM screen right after a reboot, before your settings had been restored, the app saved the carrier defaults it saw on screen as your settings. It now restores your settings first.
  • The Wi-Fi calling name picker no longer crashes if the carrier uses a format the app does not know.
  • Long switch labels no longer run into the switch. They wrap onto a second line, and you can tap anywhere on the row to toggle it, not just the switch itself.
  • Choice dialogs are easier to use. They show the setting's name as the title, options are spaced apart, and long lists scroll instead of pushing the buttons off the screen.
  • Boot Diagnostics is readable. The newest entries are at the top, and long lines wrap instead of scrolling sideways.

Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required. 5G diagnostics needs Android 12 or newer.
Signed with the same key as previous releases, so it installs as an update.
Verified on Pixel 10 Pro XL, Android 17 (CP3A.260905.009).

v1.3.7 — VoLTE that survives a reboot

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 26 Sep 10:54
0ebe1cb

What's new in v1.3.7

📞 VoLTE now survives a reboot — no Shizuku needed

New per-SIM switch: Keep VoLTE on after reboot (right under Enable VoLTE).

Until now every setting this app made was temporary: Android forgets carrier overrides on every restart, and they only came back once Shizuku was running again. If you rebooted away from your home Wi-Fi, you had no VoLTE until you got back.

This switch uses a different mechanism. It turns on Android's own VoLTE opt-in for the SIM, which Android stores permanently and checks before the carrier settings. VoLTE is available the moment the phone boots — no Shizuku, no Wi-Fi, no need to open the app.

Tested: rebooted a Pixel 10 Pro XL on Android 17 with Wi-Fi off — VoLTE was up on the Russian MTS SIM with Shizuku not running.

Good to know:

  • It covers VoLTE only. VoNR (5G calling), Wi-Fi calling and 5G SA still come from carrier overrides and are restored when Shizuku starts, exactly as before.
  • It is undoable. Before changing anything the app remembers the SIM's original values. Reset all settings puts them back, and never touches a SIM the app did not change.
  • It stays on. If something clears it (another app, a new SIM in the same slot), auto-apply switches it back on the next time it runs. It is only ever turned off by you.

✅ Settings now confirm that they actually applied

Until now the app sent a setting to the system and assumed it worked. Now it checks:

  • Every change is read back from the system after it is written. If it did not take, you get a message saying so instead of a switch that looks on but is not.
  • IMS restarts after your change, not before. Previously a toggle could restart IMS registration while the old settings were still in place, so the network registered with the old configuration. Changes now happen strictly in order: write, confirm, then restart IMS.
  • Auto-apply retries on failure. If restoring your settings after a reboot fails, the app tries again later instead of reporting success. Boot Diagnostics now also shows whether IMS came back after the restart and how long it took.
  • Import tells the truth. Importing a settings file now waits for every SIM and tells you if some settings could not be applied.

Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required. Keep VoLTE on after reboot needs Android 12 or newer.
Settings files exported by older versions import as before.
Signed with the same key as previous releases, so it installs as an update.
Verified on Pixel 10 Pro XL, Android 17 (CP3A.260905.009).

v1.3.6 — auto-apply that actually survives a reboot

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 20 Sep 11:11
3e8ab65

What's new in v1.3.6

⚡ Auto-apply after reboot now actually works

This is the headline fix. Until now the app waited two minutes after boot for Shizuku and then gave up. On a phone without root Shizuku is almost never running that early — so in practice your settings were never restored, and you had to open the app and re-apply them by hand every time.

The app no longer works to a stopwatch. It waits for Shizuku as long as it takes, and applies your saved settings the moment it becomes available — two minutes after boot or two hours later, whenever you get around to starting it. You do not need to open the app.

🔁 Settings are now restored in more situations than just a reboot

  • After a system update. An OTA wipes carrier settings; the app notices and puts yours back.
  • After Pixel IMS updates itself.
  • When Android reloads carrier settings on its own — for example after airplane mode or a SIM reload.

📞 No more IMS hiccup on every boot

The app used to re-apply everything blindly, which restarted IMS registration each time — a short window right after boot where calls could not connect. It now checks what is already in place first and leaves things alone when your settings are correct. IMS is only restarted when something actually needs changing.

🔢 A note on the version number

1.3.5-fix sorted below 1.3.5 under standard version rules, so the built-in update check could not offer it to anyone. 1.3.6 sorts above both — if you are on 1.3.5, the app will start telling you about updates again.


What you need for auto-apply to work

  1. Turn on Auto-apply settings on reboot on the Home screen.
  2. Make sure Shizuku is running.

Point 2 is the one thing the app cannot do for you. Without root, nothing can start Shizuku by itself — that needs Wireless Debugging plus Shizuku's own start-on-boot option. Until Shizuku is up, your carrier settings stay as the network left them; the moment it starts, the app restores them on its own.


Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required.
Signed with the same key as previous releases, so it installs as an update.
Verified on Pixel 10 Pro XL, Android 17 (CP3A.260905.009).

v1.3.5-fix — update check follows this fork

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 16 Sep 08:23

What's new in v1.3.5-fix

🔗 Update check now follows this fork

getLatestAppVersion queried kyujin-cho/pixel-volte-patch, and the "newer version available" link pointed there as well — so releases published here were never offered, and the Home screen compared against a completely unrelated version line.

Both now derive from a single GITHUB_REPO constant, so the API call and the release link cannot drift apart again.

🐛 Guard against a crash the repo swap would have introduced

Upstream tags are bare (1.3.2); tags in this repository are prefixed (v1.3.5). SemVer.parse rejects a leading v with IllegalArgumentException, thrown from inside the network callback where nothing catches it — enough to take the app down on the Home screen.

parseReleaseTag strips the prefix and uses parseOrNull, so an unexpected or malformed tag degrades to "no update available" instead of crashing.


⚠️ Note on this version number

Semver ranks 1.3.5-fix as a pre-release of 1.3.5, i.e. below it. Consequences:

  • devices already on 1.3.5 will not be offered this build by the in-app check — install it manually from the asset below
  • once running 1.3.5-fix, the check works normally again and any later 1.3.6 will be offered

Plain numeric versions (1.3.6) avoid this entirely and are recommended going forward.


Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required.
Signed with the same key as v1.3.4 / v1.3.5, so it installs as an update over those.
Verified on Pixel 10 Pro XL (mustang, SKU G45RY), Android 17 CP3A.260905.009.

v1.3.5 — Android 17 crash fix, 5G SA toggle

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 16 Sep 08:00
95fb1dc

What's new in v1.3.5

🐛 Fix crash on Android 17 (QPR)

Applying carrier config could crash the app on Android 17 (Pixel 10 series, CP3A.*, SDK 37). Android 17 changed the hidden IActivityManager.stopDelegateShellPermissionIdentity signature from () to (int uid). The app was compiled against the old signature, so the call raised NoSuchMethodError — an Error, not an Exception, so it bypassed the existing catch blocks and killed the process. Because it fired after the config write had already succeeded, the crash looked random while the settings still applied.

The call is now dispatched reflectively so both signatures work, releasing the shell delegation is best-effort, and the broker catches Throwable (it runs in the app's own process, so an escaping Error would otherwise take the whole app down).

📶 Enable 5G SA (standalone)

New per-SIM toggle for KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY. Pixel carrier configs frequently ship NSA-only ([1]), which keeps the modem off standalone 5G no matter what the network menu offers. Networks that run their mid-band 5G as SA (e.g. n79 at 4.6–5.0 GHz) need SA in the list to attach. The toggle writes [NSA, SA] when on and [NSA] when off, is persisted per SIM slot, re-applied on reboot by the auto-apply service, and included in export/import.

🧹 Cleanup

Broker control keys (moder_subId, moder_clear) are no longer written into the carrier config override.


Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required.
Signed with the same key as v1.3.4, so it installs as an update.
Verified on Pixel 10 Pro XL (mustang, SKU G45RY), Android 17 CP3A.260905.009.

v1.3.4 — Boot auto-apply, diagnostics, export/import

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 27 Mar 11:59

What's new in v1.3.4

🔄 Auto-apply settings on reboot

Settings configured in the app are now automatically re-applied every time the device boots, once Shizuku is ready. Enable the toggle on the Home screen. Works on Android 10–16 (Pixel, Shizuku via Wireless Debugging).

Technical note: Uses FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE — the correct FGS type for telephony/modem config, allowed from BOOT_COMPLETED on all Android versions including Android 15 and 16.

📋 In-app boot diagnostic log

The Home screen now shows a log of what happened during the last boot auto-apply attempt. Tap Copy to share it for troubleshooting.

📤 Export / Import on Home tab

Export and Import JSON have moved from the individual SIM tabs to the Home tab. This covers both SIMs at once and reads live config via Shizuku — SIM 2 export is no longer empty.

🐛 Bug fixes

  • Fixed crash on SIM config screen when Shizuku throws unexpected exceptions
  • Fixed crash-on-launch when loadFlags() raised non-IllegalStateException errors

Requirements: Shizuku ≥ 13 with Wireless Debugging enabled. No root required.
Tested on Pixel 10 Pro, Android 16 QPR3.

v1.3.3 Auto-Apply fix

Choose a tag to compare

@bkaganovich-stack bkaganovich-stack released this 25 Mar 05:21

What's new in this fork

Fork of tdrkDev/pixel-volte-patch (QPR2 Beta 3 fix). All original features preserved; three new features added:

✅ Settings persistence

Every toggle change is saved to SharedPreferences automatically.

✅ Auto-apply on reboot

Enable "Auto-apply settings on reboot" on the Home screen. After each reboot the app waits for Shizuku (up to 5 min) and re-applies your carrier config with no user interaction.

Requires Shizuku auto-start via Wireless ADB:

  1. Developer Options → Wireless Debugging — keep enabled (persists on Pixel, Android 11+)
  2. Shizuku → "Start via Wireless Debugging" → grant permission once
  3. Enable the toggle in this app

✅ Export / Import settings

SIM Config → Miscellaneous → Export / Import. JSON format, keyed by SIM slot index.


Bug fixes in this build

  • Fixed crash when opening/closing the file picker (export or import). moder.carrierName (a Shizuku IPC call) was re-executed on every Compose recomposition; wrapped in remember{} so it runs only once.
  • Fixed export producing empty JSON. saveCurrentSettings() is now called explicitly before reading from SharedPreferences for export.

Install

Download PixelIMS-1.3.3.apk. Enable "Install unknown apps" for your file manager, open the APK.

APK is signed with a local self-signed key. Uninstall the old version first if you had a different signing key.


Based on: tdrkDev/pixel-volte-patch @ qpr2
Original app: kyujin-cho/pixel-volte-patch
License: GPL-3.0