I purchased my unlocked Galaxy S20+ for use on the T-Mobile network in late July. While I do love the phone for the most part, as of late there has been an issue where the unlocked Galaxy S20 WiFi Calling Preferences are randomly changed by the system. I have used Android phones for almost a decade, but this is the first Android phone that I haven’t been able to root. I’m still getting used to not having access to some things.
At some point around mid-October, not having access to things via root became a major issue. T-Mobile (or Samsung) pushed a software update that caused major problems with WiFi Calling.
Stop Changing My Unlocked Galaxy S20 WiFi Calling preferences!
When using WiFi Calling, the software gives you the ability to choose which network you want to use more often. You can select WiFi Preferred, or Cellular Preferred. There is a third option (WiFi Only) that is hidden, and not recommended (because it will cause all calls to drop if you lose a WiFi connection).
Here in our home, T-Mobile cell service (while it exists) isn’t that strong. Therefore, we usually keep our Galaxy S20 WiFi Calling preferences set to WiFi Preferred to avoid dropping and missing calls while at home.
The October software update I referred to earlier for some reason causes the phone to keep changing that setting to Cellular Preferred. You might see a notification similar to the following come up on your phone:
It is even more annoying that it seems to do this completely randomly.
How Root Access Could Have Helped
For those of us who have a tech background, having root access can sometimes help to resolve issues like these. It gives you access to the core of the phone’s software. This may allow you to change settings like the WiFi Calling options programatically.
Without root access, it is often not possible to make these changes without direct user intervention. In other words, you have to toggle a software option yourself. This is a problem when there is no rhyme or reason as to when these changes are taking place.
Occasionally the phone manufacturer gives you the ability to make these changes automatically, without root. Often this is available via a custom settings option you can change via an automation app, such as Tasker. This is especially important on a phone that does not have root available.
No Settings Available to automatically change the Unlocked Galaxy S20 WiFi Calling preferences
On the Samsung Galaxy S20 series, until and including One UI 2.5 (Android 10), there was no setting available to make this modification. This meant that every time the phone changed itself to Cellular Preferred, you would have to manually change it back.
This was a huge issue, because it led to the potential for missed calls. What if you missed the notification that the settings had been updated? You could be disconnected from the network and not realize it, leaving you off the grid unintended.
That all changed with the Android 11 update. Now you have the ability to set the Galaxy S20 WiFi Calling preferences automatically via an automation app, such as Tasker.
Samsung to the Rescue: Android 11 / One UI 3.0
My Galaxy S20+ updated to Android 11 / One UI 3.0 late last week. The first thing I hoped for was that they had fixed this issue. Unfortunately, they had not. The phone still randomly changes itself to Cellular Preferred for WiFi Calling.
Fortunately though, they did the next best thing: there is now a setting that we can monitor and use to have automation software make the change automatically. We can now create a Tasker profile that will automatically change the setting for us, if needed.
Tasker Setup to auto-change Unlocked Galaxy S20 WiFi Calling preferences
The Tasker Custom Setting we are looking for is: wifi_call_preferred1.
That setting controls whether the Android system will use WiFi preferred for calls (set to 1), Cellular Preferred (set to 2), or WiFi only (set to 3, not recommended). In our case, we always want to be using WiFi Preferred.
So, the way we can accomplish this is by setting up a Tasker profile to automatically fix that preference any time the system changes it. From the Tasker Profiles screen, press the + button at the bottom of the screen:
Choose Event, and then search for Custom Setting.
Configure this Custom Setting profile to monitor for when wifi_call_preferred1 changes to 2 (which indicates Cellular Preferred). Use System for the Setting type.
Next, create a task for this profile. Give it a descriptive name, such as something like wifi calling: wifi preferred.
Search for the Custom Setting action.
We now want to configure this action to set the wifi_call_preferred1 System Setting we monitored earlier back to 1 (WiFi Preferred).
Once it has all been put together, you’ll end up with something that looks like this:
If desired, you can easily expand upon this to only perform this action when connected to a certain WiFi network (at home, perhaps). Or, to only fire under any number of other scenarios / conditions.
I’m Not Sure How to Do This – Is There An Easier Way?
Below is the XML code for the Tasker profile I have been using. It has worked beautifully for around a week now. If you are still unsure how to do this manually using the instructions above, you can just import this XML code into Tasker.
<TaskerData sr="" dvi="1" tv="5.10.1"> <Profile sr="prof89" ve="2"> <cdate>1609717748543</cdate> <edate>1610175966906</edate> <flags>8</flags> <id>89</id> <mid0>81</mid0> <nme>wifi calling changed to cellular preferred</nme> <Event sr="con0" ve="2"> <code>2075</code> <pri>0</pri> <Int sr="arg0" val="2"/> <Str sr="arg1" ve="3">wifi_call_preferred1</Str> <Str sr="arg2" ve="3">2</Str> </Event> </Profile> <Task sr="task81"> <cdate>1609653631377</cdate> <edate>1610175966906</edate> <id>81</id> <nme>wifi calling: wifi preferred</nme> <pri>6</pri> <Action sr="act0" ve="7"> <code>235</code> <Int sr="arg0" val="2"/> <Str sr="arg1" ve="3">wifi_call_preferred1</Str> <Str sr="arg2" ve="3">1</Str> <Int sr="arg3" val="0"/> <Str sr="arg4" ve="3"/> </Action> </Task> </TaskerData>
With this profile enabled, I can check the log and see this running occasionally. This indicates the system had changed the preference (and my task had successfully changed it back). I have not seen the dreaded WiFi Calling preferences update notification since setting this up. Every time I check it myself, it’s still set to WiFi Preferred.
You can import this Profile and Task easily on your phone by visiting TaskerNet from your phone, and following the instructions.
Finished Product
Once this is complete, your phone should now hold the WiFi Preferred preference. Even if the system tries to change it. Enjoy!
See more of our Home & Tech Project posts and Tech Product/Accessory reviews.
See all Reviews in our Product Review Portal.
UPDATE (1/16/2021): A few times since posting this article, I have seen the WiFi Calling Preferences Updated message come back up on my phone. However, the Tasker profile still does seem to work.
Something I have noticed is that if you go into the main Galaxy S20 WiFi Calling menu after the notification comes up, it’ll say Cellular Preferred. This isn’t accurate, however. If you check the setting value in Tasker, you’ll see that it has been set to 2 (WiFi Preferred), even though the menu says Cellular Preferred.
This means that the Tasker profile has already changed it back, but it seems that One UI doesn’t update that menu immediately after it has been changed. I haven’t yet figured out what the exact trigger is to update that menu.
[…] before but I have used this tasker schedule to keep my calling preference to WiFi preferred. https://www.grecobon.com/2021/01/unlocked-galaxy-s20-wifi-calling-issues/ My question is how do I set it to only run when I’m connected to my home wifi. If I’m […]
I have the same question. I have tried playing with the If part of the action using If “WiFi Status” “EQ” “My SSID” equation but must have made a mistake in the variable, operator or value part. I’m not a programmer so guidance would be appreciated.
first, let me apologize for taking so long to respond to this!
the first way I’d try to handle this is by adding a state condition to the profile, wifi connected. you can specify your SSID there, and it should only make the profile active while you’re on that particular network.
if that doesn’t help, I can try to figure out some other options for you. let me know if that works…
Hi, Matt. I have a Galaxy S21, with UI 3.1 and Android 11. First of all, thank you for this guide because it helped a lot, but it is not working for me even though I think it should. The steps I used to implement are as listed:
And I know I didn’t make a typo because I tried debugging on my own by using two separate profiles:
Both of them worked perfectly when I manually changed the wifi calling preferences the way I wanted them to.
But I don’t know why the actual task I want is not running the way I want. I left the other two debugging tasks as well, so if the wifi is connected, theoretically, it should change to wifi_call_preferred1 to 1 and then from the other task, a popup should appear saying “wifi calling enabled”, but that doesn’t work. Any clues?
I hope the steps I took to create the tasks and the debugging steps I took were clear. Thank you again though! This article has been very helpful!
Glad I could help out! I know how frustrating it was when this first started happening for me, so I’m happy to help save anyone else the annoyance and frustration if I can. Let’s try to get your issue sorted out…
I think what your issue might be here (if I’m reading your comment correctly) is that you are using a profile based on WiFi state, rather than on the custom setting itself. That profile’s entry task will only ever fire when you first connect to the WiFi network, and the setting change is (I believe based on my own experience) happening after that. I am 99% sure that the two do not happen at exactly the same time – WiFi connects first, and THEN the system changes the setting shortly thereafter.
Try changing your profile to trigger on the custom setting value changing, rather than on WiFi connecting. That’s what my profile does: it monitors the system and when it sees that the system has changed the setting (in my case to Cellular Preferred, you could set it up the other way if you wanted to), it just immediately changes it back to WiFi Preferred, which is where I want it to stay.
Let me know if that helps, if not I’ll see if I can figure out what else might be going wrong!
[…] Force Wifi preferred […]
Why can’t I find this on TaskerNet when I search? Also no clear instructions to actually import this XML. I tried to set this up manually but it seems to go back to cellular preferred regardless of Tasker. I confirm that tasker does set this in logs, but eventually it goes back to cellular regardless.
I’m not sure why it’s not on TaskerNet if you search, but using the link should work. As for not providing clear instructions for importing the XML, that’s my fault. I just assumed that anyone using Tasker would already know how to do that – I’ll update the post when I have a minute to include instructions on that.
As for it eventually going back to cellular preferred, this should still take care of that because it’s watching for that transition to reset it to WiFi preferred. I’m wondering if they’ve changed something in a recent update to prevent this from sticking like it did previously (although I’ve been away from solid wifi for a few weeks now so I haven’t noticed any difference). I’ll keep an eye on it over the next few days and see if I need to figure out a new solution.
edit: still haven’t noticed any difference now that we’re back in a spot where there’s solid wifi all the time. i’ll continue monitoring it and see if i need to make changes and update the post as needed…i’ll also do some messing around with it to test it more thoroughly if i have some time this upcoming weekend.
Galaxy Z Fold 4, Android 13, UI 5.1
Whenever this runs I get a message: “Can’t run custom setting with Tasker settings” I have tried for hours to find some problem with the Tasker installation without any luck. Is this broken on current phone software versions?
what version of one UI is your phone on? mine is on 5.1, may 2023 security patch level, and it still works fine. there was an update to tasker that made some changes to insecure profiles / tasks a while back, but that doesn’t seem to have affected this (at least it hasn’t on my phone).
UI 5.1 as well. This acts like a permissions problem but the log gives no help.
Have you found a solution? S22Ultra, Android 13, UI 5.1 having the same issue
I wonder if this is an issue with the newer Galaxy phones, because everything still works on my S20+. Both the S22 and Z Fold 4 are less than two years old, and significantly newer than the S20 series.
I have no idea why or what they would have changed to make things suddenly not work on the newer phones, but I’m guessing it has to do with the changes Tasker made that I mentioned earlier regarding insecure tasks. I did have issues with some of my other Tasker profiles, but this one is still working just fine. Unfortunately since it still works on my phone, that makes it much harder for me to help you all troubleshoot it.
It would be great if anyone with a S20 (or even S21) that is using this and having this issue could chime in – it could help us figure out what’s going on.