Current VoLTE solutions for NZ (not perfect)
NOTE - I haven’t researched how different Android versions or blobs or regional versions react to these methods; so, if it doesn’t work, it could be due to mismatches of all three of those things. Method 2 works with simply what you already have on your phone, and therefore doesn’t require trying to find the right combination of files, so might the best method to try first.
0) My currently simplest solution so far (aside from first obtaining a SEA modem):
Flash a SEA modem, reboot. Delete all files in the /data/vendor/radio/ directory, and then reboot again.
1) One method that worked for me to get VoLTE to stick (limited to SIM 2) - a reflash of the firmware (losing all data):
- Flash a SEA firmware via newflasher (if you have
62.0.A.3.109SEA firmware you could try flash this and go straight to flashing Sailfish). - Go to Xperia Flash Tool and flash the
62.0.A.3.109(Android 11) firmware. - Flash Sailfish the normal way (Android 11 binary).
- Boot up Sailfish and flash Android 12 SEA modem image (Modem File 2).
devel-su
dd if=modem_X-FLASH-ALL-8A63_BT52.img of=/dev/block/bootdevice/by-name/modem_a
dd if=modem_X-FLASH-ALL-8A63_BT52.img of=/dev/block/bootdevice/by-name/modem_b
sync
- Place your SIM in slot 2. Reboot.
VoLTE registers for SIM 2 (SIM 1 VoLTE doesn’t register), but obviously this means not being able to use the SD Card slot as it’s shared with SIM 2.
_____________________________________________
2) A method that appears to work for both SIMs and doesn’t require a factory reset (I’m unsure if this method has unexpected negative effects):
Take a SEA modem partition, get an mbn from your network/carrier and dump it over an existing mbn in a random folder (replacing it), and then flash that adjusted modem. I’ve tried other firmware modem partitions (HK, JP, EEA) but they didn’t work, only SEA did. Note: you probably need to make sure the modem file is from the same Android version as what your device has installed - I think the below one is from Android 11.
Here is the modem img that I dumped NZ carriers mbn into: modem_NZ.img
You would copy this to your main home directory then run these commands:
devel-su
dd if=modem_NZ.img of=/dev/block/bootdevice/by-name/modem_a
dd if=modem_NZ.img of=/dev/block/bootdevice/by-name/modem_b
sync
Then reboot and cross your fingers (it took a moment for VoLTE to kick in for me after first reboot).
More detail (how i did it):
Get a modem img: this can be gotten from downloading SEA firmware with xperifirm for the X10iii, then taking the modem file that’s in a .sin format and using “unsin” to create a .img file.
Mount it in linux:
mkdir modem
sudo mount -o loop modem.img modem
Copy your mbn over an existing mbn file: I dumped my NZ (Spark) mbn into this folder, overwriting the existing one
...\image\modem_pr\mcfg\configs\mcfg_sw\generic\Russia\Beeline\Gen_3GPP\
Some mbn files:
Pixel-Redbull-Carrier-Patch (credit: swangjang)
Mi11 - Ultra (Snapdragon 888) MBN files (credit: JazonX)
Unmount:
sync
umount modem
Take the editted modem image, place it in your phone (in the main (home) directory) and run:
devel-su
dd if=modem.img of=/dev/block/bootdevice/by-name/modem_a
dd if=modem.img of=/dev/block/bootdevice/by-name/modem_b
sync
Reboot.
This worked for me. YMMV
Another way to do this if you want to try inject the mbn into your current modem and do everything from your phone: VoLTE on the Xperia 10 III (mark 3) - filling the gaps - #33 by tn71
Note 1: I skipped some typical steps above - I assume you can figure out what’s missing.
Note 2: if you’re flashing the same modem over top, the system won’t update it’s stored modem_configs, so you either need to flash a random one (maybe reboot) and then flash the modified one, or edit the ver_info.txt file to change the version to another value (e.g., at the bottom of the file, from "Version": "1.0" to "Version": "1.01" before unmounting.
Credits for this method go to sbjbs
_____________________________________________
3) A temporary solution which doesn’t require a reset of the phone:
Flash the modem partition within Sailfish with the following files (placed in the home directory) and the following commands.
Flash a different modem file each reboot (alternate between the two) to re-establish VoLTE (this is to completely reset any stored settings). Here are the two that I used (taken from xperifirm and using unsin to form the .img files):
Method:
If VoLTE isn’t registering, run (one line at a time):
devel-su
dd if=modem_X-FLASH-ALL-8A63_BT44.img of=/dev/block/bootdevice/by-name/modem_a
dd if=modem_X-FLASH-ALL-8A63_BT44.img of=/dev/block/bootdevice/by-name/modem_b
sync
Reboot - it should then register.
Next time, if the phone is restarted and VoLTE doesn’t register, flash the other modem file (one line at a time):
devel-su
dd if=modem_X-FLASH-ALL-8A63_BT52.img of=/dev/block/bootdevice/by-name/modem_a
dd if=modem_X-FLASH-ALL-8A63_BT52.img of=/dev/block/bootdevice/by-name/modem_b
sync
Reboot.
If you have a problem with the BT44 modem image then just to flash back to the BT52 image (which means after a reboot it goes –> Flash BT44, reboot, Flash BT52, reboot again, VoLTE works).
The reason for the flashing of different modems is that it triggers a refresh of stored files on the phone which also means removing any “VoLTE locks” that the phone may be introducing - flashing the same modem won’t refresh these files as the phone detects no change.
__________________________
Edits: fixing information to make the post a bit clearer
I’m hoping someone smarter than me can figure out a better solution…