*This would not be possible without j4nn & his amazing temp root https://forum.xda-developers.com/xperia-xz1-compact/development/devonly-exploits-temp-root-to-backup-t3795510 please thank & donate 2 him!*
This is not really a "how 2 guide" because I am not good at explaining things like this. But I will try & explain how I did it. Because I have seen a lot of other people also searching for working Volte without unlocking their bootloader.
First I used j4nn's temp root guide & flashed old firmware & ran his magic program. Then I backed up my DRM keys (incase I want to unlock my bootloader someday). Then I stopped. And instead of unlocking my bootloader & while still in temp root.. I thought, maybe I can write to the OEM folder? So I typed
'mount -o rw,remount /oem' and that worked!
So.. I used another command window without closing the first one and pushed a new OEM folder to /data/local/temp
(I got the new OEM folder from US XZ1c firmware. you can also get that folder by searching for TMo-VoLTE-fix-v3.zip & unziping it)
Then, I went back to the original temp root command window & used the 'cp' command to copy that new OEM file from data/local/temp over to my /OEM folder. I re-set the owner & file permissions rebooted.
After testing it, I was able 2 flash the latest (non US for working fp) Oreo by flashing like normal with Newflasher except I deleted the OEM.sin file, so it wouldn't write over my new one! Finally I disabled auto update.
Now my XZp is still bootloader locked, running 47.1.A.16.20 with Fingerprint, Volte & wifi calling all working on tmobile in the US.
I can actually receive calls at home now!!
Before this, most of my calls went 2 vm, after a long pause.
I did also try it with pie & it didn't work for me. But, ymmv. I am sure it's possible tho. I was not impressed with pie anyways & I really hate that new volume popup window that covered my home & back keys in landscape mode.
One other note is because I have the dual sim XZp I changed my modem name in the modem.conf file from "tmobile_us_ims" to "dsds_tmobile_us_ims". I am not sure this is actually necessary tho because I have since looked in other ds Volte firmwares like Taiwan. And they don't use "dsds" in their modem.conf file
This is not really a "how 2 guide" because I am not good at explaining things like this. But I will try & explain how I did it. Because I have seen a lot of other people also searching for working Volte without unlocking their bootloader.
First I used j4nn's temp root guide & flashed old firmware & ran his magic program. Then I backed up my DRM keys (incase I want to unlock my bootloader someday). Then I stopped. And instead of unlocking my bootloader & while still in temp root.. I thought, maybe I can write to the OEM folder? So I typed
'mount -o rw,remount /oem' and that worked!
So.. I used another command window without closing the first one and pushed a new OEM folder to /data/local/temp
(I got the new OEM folder from US XZ1c firmware. you can also get that folder by searching for TMo-VoLTE-fix-v3.zip & unziping it)
Then, I went back to the original temp root command window & used the 'cp' command to copy that new OEM file from data/local/temp over to my /OEM folder. I re-set the owner & file permissions rebooted.
After testing it, I was able 2 flash the latest (non US for working fp) Oreo by flashing like normal with Newflasher except I deleted the OEM.sin file, so it wouldn't write over my new one! Finally I disabled auto update.
Now my XZp is still bootloader locked, running 47.1.A.16.20 with Fingerprint, Volte & wifi calling all working on tmobile in the US.
I can actually receive calls at home now!!
I did also try it with pie & it didn't work for me. But, ymmv. I am sure it's possible tho. I was not impressed with pie anyways & I really hate that new volume popup window that covered my home & back keys in landscape mode.
One other note is because I have the dual sim XZp I changed my modem name in the modem.conf file from "tmobile_us_ims" to "dsds_tmobile_us_ims". I am not sure this is actually necessary tho because I have since looked in other ds Volte firmwares like Taiwan. And they don't use "dsds" in their modem.conf file