Reading Time: 4 Minutes
WiFi calling has become a popular feature on Smartphones these days as they can offer an increase in call quality, especially when your signal is rather poor. Consider the fact that most cellular voice calls are sent using aging technologies which is why most standard phone calls don’t Sound as crisp and clear as VoIP clients like Skype. VoLTE technology has largely closed the call quality gap, but not all phones support VoLTE and not everyone has access to a plan or network with it.
Thanks to WiFi calling, we can take advantage of a strong WiFi network connection to place calls instead of relying on a poor cellular radio which can’t penetrate to the inside of your office building or home. If your phone supports WiFi calling, such as the Google Pixel and Pixel XL, you might have found in option tucked away in the Dialer settings to set calling to prefer using WiFi whenever possible. However, Verizon Wireless has disabled this toggle on the Pixel phones they sell to customers so you cannot enable it in the usual way.
Thankfully though, there is a way around it and we don’t even need root access – all you have to do is send a simple ADB command.
Enabling WiFi Preferred for Wifi Calling
- Install the USB drivers for your device (Google has a list of some universal USB drivers here). This may not be necessary depending on your OS.
- Download the ADB binary for your particular OS (Windows, Mac, Linux). These links will download the latest version, so no need to scour the web!
- Extract the zip file into a folder that you can quickly access such as in the Downloads folder.
- On your phone, enter Settings and tap on “About Phone”. Scroll down and find the Build Number then tap on it 7 times to enable Developer Options.
- Enter Developer Options and find USB Debugging, then enable it.
- Plug your phone into the Computer and change it from the “charge only” mode to “file transfer (MTP)” mode. This is not always necessary but most phones don’t allow you to use ADB in charge only mode.
- On your Computer, browse to the directory where you extracted the ADB binary, such as in Downloads.
- Open a Command Prompt in the ADB folder. For Windows users, this can be easily done by holding Shift and Right-clicking and then selecting the “open command prompt here” option.
- Once you’ve opened the command prompt or terminal, enter the following command:
- If this is your first time running ADB, you will then see a prompt on your phone asking you to authorize a connection with the Computer. Go ahead and grant it.
- Now try re-running the adb devices command and the terminal will print the serial number of your device. If it does, then you’re ready to move on.
- Next enter the following command:
- Then finally execute the following command at the ADB shell prompt:
settings put global wfc_ims_mode 2
- There will NOT be a success message, but it should have taken effect. Read the following steps to verify this.
- Toggle Airplane Mode both on and then back off.
- Open the Settings application and go to the WiFi section.
- Look in the “More” section and you should see that WiFi Preferred is active. The change persists through reboots and through Airplane Mode toggles!
As mentioned here, this is something that is included in the Android software for the Pixel and the Pixel XL, but the toggle has been disabled by Verizon Wireless. Wireless carriers get the final say as to what software features go on their Smartphones (which is why so many are filled with bloatware). So like other wireless carriers (and even some OEM), they will choose to hide various software features that are included in the base software for that model.
But in some cases, it is still technically possible to enable this feature. In this, all we had to do is send an ADB command from Step 13 of the guide above. By default this option is set to 1 which means disabled, and we’re unable to toggle it on because it’s grayed out. If we could toggle it on though, it would change this option to 2 (which again is what we manually did with that ADB shell command). So XDA Senior Member was able to find this option by executing a “settings list global” ADB command.
This and many other tutorials like this are based off of finding hidden settings commands that one can send through an ADB shell.