Tuesday, January 21, 2020

wi fi - What does the "Aggressive Wi-Fi to Cellular handover" option in Developer Settings do?


In Android Lollipop 5.0, I noticed that "Developer Options" features a checkbox for "Aggressive Wi-Fi to Cellular handover" that is unchecked by default. Does anybody know what this setting does and why it's disabled by default and hidden under developer options?




Answer



The code for shouldSwitchNetwork() best explains what it does. It just artificially reduces the WiFi RSSI (received signal strength indication) to encourage the WiFi state machine to decide to switch the connection from WiFi to cellular network. Around line 3559 of WifiStateMachine.java (line 4262 for Android 6.0.1_r10):


int rssi = mWifiInfo.getRssi() - 6 * mAggressiveHandover
+ (homeNetworkBoost ? WifiConfiguration.HOME_NETWORK_RSSI_BOOST : 0);

The variable mAggressiveHandover is an int that is set to 0 or 1 by the Developer Settings:


private void writeWifiAggressiveHandoverOptions() {
mWifiManager.enableAggressiveHandover(mWifiAggressiveHandover.isChecked() ? 1 : 0);
}


The rssi variable goes on to influence how the connection is classified: isBadRSSI, isLowRSSI, or isHighRSSI.


As to why it's hidden under the developer options, I'd say that is because it seems a little hackish, with a seemingly arbitrary scalar (6) that some dev came up with to nudge the behavior in the desired direction. Google is probably uncertain about the consequences of this setting and the optimal way to adjust rssi. If I'm wrong and this is somehow meaningful, I'm happy to admit it and explain here why.


Turning this setting off does NOT turn off cellular handover altogether. The WiFi connection still gets a score and is disabled if the score is too low. But hey, the initial score is set arbitrarily too.


No comments:

Post a Comment

samsung galaxy s 2 - Cannot restore Kies backup after firmware upgrade

I backed up my Samsung Galaxy S2 on Kies before updating to Ice Cream Sandwich. After the upgrade I tried to restore, but the restore fails ...