[Samsung Galaxy S9+ Guides, News, & Discussion] gpz1100:
The method outlined below can probably be used on other variants.

My phone started out as an unlocked Tmo S9+ - SM-G965U

Flashing the latest tmo firmware (G965USQS7ETH2) would only yield volte, not wifi calling with cricket. The exact same firmware would give volte and wifi calling withi my free freeup sim (also att based). So the device and firmware is most certainly capable of it, but there's profiles in place restricting it.

As soon as the sim was swapped to the cricket one, phone would reboot, apply csc changes and no wifi calling. Flashing the AIO CSC didn't help either. They purposely block wifi calling!@#

So, solution is to prevent the CSC change from free up (CSC: ATT) to cricket (AIO) from taking place. But how on an unrooted device???? I decided to use the debloated factory unlocked U1 fw rather than U (less crap to disable later).

My final results is a concoction of fw pieces and some adb magic.

It is important that account/sim is already configured for volte/wifi calling. I did this over chat by providing them an iphone 8 (or 9?) IMEI and confirmed hd voice and wifi calling was enabled on the profile. Some social engineering may be needed.

I use frija to obtain all fw's.

a) Base firmware: SM-G965U1_2_20200709201504_m6wxoyd74w_fac.zip based on G965U1UEU7ETG1

CSC: TMB

Additional:

b) SM-G965U_2_20200811140304_5ohvmlyr5p_fac_G965USQS7ETH2_TMB based on latest G965USQS7ETH2 tmo firmware

CSC: TMB

1) Obtain and extract files from both of the above zips. Keep track of which is which.

2) In odin, specify everything from A except CSC. Use the CSC (home or non-home) from B. This is needed to get the advanced calling features to work. Flashing CSC from A resulted in no wifi calling (possibly no volte either, can't remember).

CSC home or non home version?

I haven't tried this with an already configured phone, will probably work too. In that case use the home version. Non home results in a factory reset.

3) You will need a sim that specifies the ATT CSC. In my case the freeup sim is identified as such in the phone info app. I imagine a deactivated or blank sim should do the trick. The goal here is to get the phone to flash the correct CSC parameters. Have this sim in the phone prior to the reboot from odin.

4) Depending on which csc used in #2, the phone may reboot to apply CSC changes, let it. We want to lock in this profile.

5) If all is right, you should see the wifi calling toggle in the quick tiles and have the options in the connections and phone settings.

6) Enable usb debugging and connect via adb shell

7) This one took forever to determine, but this is what makes it all work!

adb shell pm disable-user --user 0 com.samsung.android.cidmanager

8) Insert your cricket sim and allow to register. You will see it doesn't ask you to reboot to apply any csc changes. Under the 4636 menu it should show volte and wifi calling enabled. Make sure the wifi calling toggle is enabled

9) Reboot the phone for good measure and test again. Enable airplane mode and wifi. Try placing a call. It should go through.

Caveats: Unlike the att CSC, this one doesn't ask for an address. I'm not sure what address it's using - the one tied to the cricket account? The signal around here is good that wifi calling only kicks in in air plane mode.

Does this break something else? Possibly. Lets hope a proper fw update is released where these shenanigans are not necessary. With root, the proper CSC features can be correctly enabled for the control xml file. The battery in this phone is already at ~80% life remaining, so not willing to give up another 20%.

Good luck!