VoLTE on the Xperia 10 III (mark 3) - filling the gaps

@attah you have no outcome coming from getprop persist.vendor.somc.cust.modem0 ?

Same here - VoLTE has always worked for me in Australia on X10 III

Yes, as i said.  

Ok. In the /vendor/oem/modem-config/ there is many files with numbers (eg: S77.1, S11.3…) but also a folder ā€œanysimā€ with its own modem.conf file. Maybe your operator matches that ā€œanysimā€ config…

Okay i just did that. logged in ā€œBouyguesā€ operator. It got registered, calls on volte.

Back now to my operator ā€œFreeā€ simcard. Still no volte registration…

Chat GPT says You must send SMS to activate Volte or You have most budget plan without Volte. Third - Free have own config profiles for your phone. Recomendation: change SIM to other carrier.

PaulBouchara advised ā€œbind mount or symlink might do the trickā€.

Do you have a hint what shall i bind mount where, a guess of that?

I’m sorry, I’ve no idea. I don’t have a 10 iii, and the modem configuration on this model works differently than on the 10 ii…

@dcaliste , on your original 10II trick (just pasting it here again bellow for the record), what would you have done if you had to make it work via a bind mount or symlink, instead of the way you did it here?

devel-su

  1. cd /vendor/oem/modem-config/

  2. mkdir S8683.1

  3. cd S8683.1

  4. echo "mcfg_sw/generic/common/default/vl/global/mcfg_sw.mbn" > modem.conf

When asking AI, after trying to inject MBN files from NZ and failing, and wondering why the 10 II appears easier it mentioned:

The Xperia 10 II uses the same modem interface that Sailfish already supports through existing qmi and mcfg plugins. These plugins are part of Sailfish’s telephony stack, so on the 10 II ofono can talk to the modem and can load MBNs (what you’re referencing). It can therefore read and respect modem.conf files.

The 10 III uses the modem config directory as a runtime copy, not a live source - MBN loading is disabled and Modem ignores injected configs. Ultimately, the 10 III has stricter modem partitions and stricter signature checks. Also, Ofono plugins are supposedly missing.

This could be all wrong. It would be great if someone smarter than me can confirm this.

For reference, no Xperia 10 III vendor partitions have dedicated NZ MBN files. If you’re desperate, I can’t imagine it’ll hurt to play around with injecting the different modems to see if it helps.

Intersting… Well so far i have been told to test a solution that includes a mount bind…
I just dont know ā€˜ā€˜what’’ to mount bind ā€˜ā€˜where’’.

I’ve come to realise this only worked for me (in NZ) if I used the SEA modem, no other firmware modems (JP, HK, EEA) worked. Therefore I’ve moved the info into the NZ VoLTE. Here is a method to try that follows the same concept, but can be done from your phone. I take no responsibility if anything happens to your device as I’ve done this without an appreciation of what results from the commands, and therefore am unaware of any negative effects that may relate occur.

Figure out where your modem is stored (modem_a):
ls -all /dev/block/bootdevice/by-name

Mine was sda37 (I’d assume all X10iii are the same). Dump the modem into an img file (this places it in the home directory:
devel-su dd if=/dev/block/sda37 of=/home/defaultuser/modem.img

Mount the .img file:
mkdir modem
enter root: devel-su
mount -o loop modem.img modem

Use a root file manager to go into the mounted modem and dump an mbn from your carrier over another one that already exists. e.g., I got a NZ (Spark) mbn and placed it here, overwriting the old one:
...\modem\image\modem_pr\mcfg\configs\mcfg_sw\generic\Russia\Beeline\Gen_3GPP\

mbn files that may work (not certain):
Pixel-Redbull-Carrier-Patch (credit: swangjang)
Mi11 - Ultra (Snapdragon 888) MBN files (credit: JazonX)

Now, using the same root file manager, edit the ver_info.txt file placed in \modem\verinfo\ folder to change the version to another value (e.g., at the bottom of the file, from "Version": "1.0" to "Version": "1.1") - this is done so the phone triggers a refresh of stored modem_config files.

Back in terminal, run:

sync
umount modem
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

Then reboot and cross your fingers (it took a moment for VoLTE to kick in for me after first reboot).

Reboot.

YMMV

For reference, I flashed the EEA firmware onto my phone to try see if I could get VoLTE to work without flashing a different regions modem, and it just didn’t want to. I did find out, however, that flashing a SEA modem, rebooting, deleting all files in the /data/vendor/radio/ directory, and then rebooting again allowed VoLTE to work. Again, YMMV.

Edits: tidy ups, further info/clarifications

4 Likes

Sorcery.

It looks like if the modem disregarded files out of its predefined scope - but you ā€˜fool’ it by swapping the content one of its files.
Nice if it works !

Thank you for your extensive reply!
I’ll test it when i’m back to a desktop after summer holidays.

But the thing is that the ā€˜generic’ files that are already in the modem ā€˜do’ usually work for Free Mobile (it does on the 10 II for exemple, with remapping the files).

So in a way the mbn correct files are already present… Just the modem doesnt look for the generic ones somehow when connected to Free.
So i wonder why putting a new mbn in a random file would work…cause the correct mbn is supposately already there…

Another exemple: Bouygues Telecom, still in france. The Bouygues folder is there, so when you put a Bouygues simcard, VoLTE connects, cool.
But if you use a card of a sub-operator that runs on the Bouygues network, then it doesnt work. Cause somehow the modem isnt able to link the operator name with the Bouygues mbn, even if the mbn is present already…

With Free Mobile or the sub-operator of Bouygues, the issue isnt a missing mbn, but how to tell to the modem ā€˜please, when on free mobile, use ā€˜ā€˜that’’ mbn’ and point it.

No worries, I’ve been trying to resolve it for some time, albeit by trial and error as I don’t have the technical ability.

I think, as mentioned is some of the previous comments, the difference is that the 10 II and 10 III have different modems, and therefore you can’t assume they should both work the same. I’ve tried a few ways to enable VoLTE and annoyingly, under one scenario, I could get VoLTE to register after a fresh restore of Android and install of Sailfish, but then lost it after a reboot. No idea why or how to stop it from being lost. AI says that on first boot it goes to a generic state and subsequent reboots move to a state that blocks VoLTE. The one thing about VoLTE (as a NZ example) is that a proper VoLTE setup should also have a method for emergency calls to connect over 4G (like a back door). The generic state may not have this, and therefore gets blocked. Perhaps the 10 II let’s you get past this by forcing an mbn to use (it’s not to say emergency calls will work though). I say this, but who knows.

Flashing the carrier specific mbn file with a SEA modem solved it for me, but I’m not certain it’s perfect.

To be clear, the 10 III doesn’t have a specific Free mbn (you’d have to rely of the generic one), but it does have a specific Bouygues mbn, hence why one works and not the other. It’s weird that VoLTE isn’t registering for sub-operators of Bouygues - a quick Google said some of those sub-operators don’t actually support VoLTE themselves, could this be why?

I completely get the frustration though, I’ve been struggling with it after NZ shut down 3G (2G was already shut down or got shut down at the same time).

Thanks for your detailed solution, but when I tried to take the Vinaphone mbn to a random folder mbn and unmount, type your command, that not fix my volte, it’s so bizarre.

At the beginning, I created a ā€œshortcutā€ Vinaphone dir in the SEA dir => failed

Modified the img => off course, failed

That put me in the situation, reinstall sailfishos, But I was too lazy to install again my whole world app.

PS: I also tried to put the Viettel sim to my phone (it was appeared in SEA region, and I worked fine unless Vinaphone)

Sorry it didn’t work. I’m starting to wonder if I simply got lucky with my setup, which sucks that it’s not working for others.

I tried that ā€œcreating a shortcut methodā€ too, but I don’t think the phone can see new folders, hence me suggesting using existing folders.

Viettel likely works as the phone already has a Viettel mbn in place (maybe you said this and I didn’t understand).

Can you try flash this modem and see if you have any luck? modem_Vinaphone.img
Place it in the home directory. Then run:

devel-su
dd if=modem_Vinaphone.img of=/dev/block/bootdevice/by-name/modem_a
dd if=modem_Vinaphone.img of=/dev/block/bootdevice/by-name/modem_b
sync
reboot # note, your phone will be rebooted so make sure to save anything you're working on first

Also, make sure you have both SIMs enabled (not two cards inserted, just enabled in the settings). I found that when I had the SIM in Slot 1, but Slot 2 was disabled in the settings, VoLTE didn’t work.

Will it be a temporary solution, I followed your file and your command, so it works, at least by now

If it is the same as mine, it should be permanent (at least as far as I can tell - I’ve rebooted multiple times and it still works by itself). Try reboot again - if VoLTE automatically registers after a second reboot without you having to do anything, I think you should be good to go. If not, then it means that this method didn’t work.

1 Like