[Xiaomi Mi 8 Guides, News, & Discussion] The War Profiteer:
Hello! So, this thread is a result of a promise that was given to [MENTION=7672955]tsongming[/MENTION] long ago, and I finally found some spare time to write about.

This guide is also the only one of its kind AFAIK, so you won't be able to find this anywhere, and also this method is applicable to ANY device, as I did this to some others, for testing purposes.

I am currently in Turkey, and it's not possible to use dipper for WiFi Calling or Vi-WiFi, but there are many phones that carry the exact same chip-set, which enables to add this feature to my own phone. So, if you are going to continue to read and apply on your phone, please open a new tab right now and find a phone that supports Vo-WiFi and/or Vi-WiFi in your area, with the same chip-set, and find its EDL ROM!

This process requires TWRP!

What does it do?

It basically changes the behavior of your phone towards the carrier, and allows you to connect to the networks that has 4G goodies.

Also, by following this guide and making changes on your phone, you accept that I am not responsible for any damage you may cause to your device, you are on your own.

In my case, the phone I used was GM9Pro. It has same SDM845 chip-set as dipper has, and since it's a Turkish brand, it's Vo-WiFi and Vi-WiFi support was unquestionable with no doubts.

The program you will need specifically for this job is: 7-Zip. You can download here: https://www.7-zip.org/ It's an open source software that supports many compression formats, but specifically focused on 7Z.

So, when you download and open the EDL ROM package, you will see that there are TONS of img files. The ones we need are modem images. In my case, there were 2 separated modem images that would work for me:

They seemingly carry the exact same files, but I preferred the modem_a.img file to continue.

Before continuing, I wanted to warn: if the phone you have the EDL files does not contain the files I'll mention below OR the file structure is nothing like it, you have two options:

Find another device.

Check the other image files to see if there are anything that would work.

Find a physically working device that you can access to its filesystem. You will need to search and extract the required files in order to continue.

At this point, in order to show the path I watched and help you to examine the file structure for the second option I provided above, I'll add screenshots here.

So, once we got our modem image out the zip or rar or tarball file, we will open it with 7-Zip. This should be the file structure:

Go into image folder:

These are pretty much how your modem.img file should look like.

When you browse to this folder, rest of the process is up to your localisation and carrier.

I browsed into my carrier's folder with this path you can see in the screenshot:

So, after that step, you will extract the mbn file of your carrier, and DO NOT CLOSE THIS WINDOW, we will need it one second later. At this step, I heavily recommend you to extract the carrier folder which includes "volte" and "nonvolt" folder, and replace them as I'll tell below.

The important part is, you should NOT modify the mbn file, because it is signed and you will break the signature by editing it.

When you got into dipper, REBOOT INTO TWRP. You can't do this without TWRP!

Once you got into TWRP, make sure "firmware" partition is mounted. We will modify it. "firmware" partition is basically the storage of modem files of your phone.

By going into "Advanced > File Manager", you will reach into your phone's root directory. Go into the firmware folder, and follow the path you did on 7-Zip. The folder names, et cetera HAVE TO be same, to make it work. If they are different, well, it just won't work. There's an another method to accomplish it, but I did not look into that.

You also will want to backup these mbn files you are going to modify, so, simply move them to your /sdcard in order to make them backed-up and deleted from that folder simultaneously.

Also, you can use "adb pull" to backup on your PC.

Sooo, at this point: We simply copy the path at the 7-Zip for our adb argument, and add "/firmware/" to it. You also need to convert back-slashes into slashes. It should look like this:

/firmware/image/modem_pr/mcfg/configs/mcfg_sw/generic/eu/vodafone/volte/turkey/

What now? I will hope that you know how to use ADB, you can modify this file manually. To proceed, you need to have ADB installed in your computer. How? See this: https://www.xda-developers.com/what-is-adb/

Now, thinking that I extracted my mbn files into the desktop, the command I will use will be this:

adb push "C:\Users\username\Desktop\mcfg_sw.mbn" "/firmware/image/modem_pr/mcfg/configs/mcfg_sw/generic/eu/vodafone/volte/turkey/"

After this process, just reboot your phone and make sure it works. As I suggested above, you might need to do this for all folders, for example "/firmware/image/modem_pr/mcfg/configs/mcfg_sw/generic/eu/vodafone/". I would try to copy both of the folders into my device, as it has "volte" and "nonvolt" folders inside.

On MIUI, you also might need to use QFIL to activate the configuration by hand, you can find more info about it on the Internet. Don't ask something you can find on Google here.

Lastly, this works on AOSP ROMs flawlessly, because it's implemented in a way that it should be, but MIUI is questionable, and I'm not sure if you will have issues on MIUI since I haven't used it for a long time.

Have fun lads, and #StayHome.