Troubleshooting
By design, Meta Quest headsets are based on Android systems. Therefore, the headsets mimic the behavior of a typical Android smartphone, and most of the issues you encounter may stem from this.
Headsets Keep Disconnecting from Wi-Fi
By default, headsets probe new networks they connect to by sending a ping and trying to detect a captive portal if there is one.
In the SIMPLE project, we're using dedicated private Wi-Fi that is disconnected from the internet, which causes the probing system to fail and prevents auto-connection of the headsets to these networks.
Luckily for us, it's possible to disable this behavior with the following commands:
All in one command
You can use the following command in your terminal to apply all the settings simultaneously:
adb shell "settings put global captive_portal_detection_enabled 0" && adb shell "settings put global captive_portal_server localhost" && adb shell "settings put global captive_portal_https_url https://localhost" && adb shell "settings put global captive_portal_http_url http://localhost" && adb shell "settings put global captive_portal_mode 0" && adb shell "settings put global wifi_watchdog_on 0" && adb shell "settings put global wifi_watchdog_poor_network_test_enabled 0" && adb shell "settings put global network_recommendations_enabled 0" && adb shell "settings put global network_avoid_bad_wifi 0" && adb shell "settings put global wifi_passpoint_enabled 0" && adb shell "settings put global wifi_sleep_policy 2" && adb shell "settings put global stay_on_while_plugged_in 3" && adb shell "settings put global wifi_enhance_network_while_sleeping 0" && adb shell "settings put global ota_disable_automatic_update 1"
Probing
Disable captive portal probing
adb shell "settings put global captive_portal_detection_enabled 0"
Set the probing URL to localhost to always get a positive response (in case it gets re-activated)
adb shell "settings put global captive_portal_server localhost"
adb shell "settings put global captive_portal_https_url https://localhost"
adb shell "settings put global captive_portal_http_url http://localhost"
you can use this command to apply all of these at once:
adb shell "settings get global captive_portal_server" && adb shell "settings get global captive_portal_https_url" && adb shell "settings get global captive_portal_http_url"
Disable captive portal mode
adb shell "settings put global captive_portal_mode 0"
Choosing WiFi
Increase WiFi RSSI polling interval (less aggressive)
adb shell "settings put global wifi_watchdog_on 0"
Disables the WiFi watchdog that monitors poor network quality
adb shell "settings put global wifi_watchdog_poor_network_test_enabled 0"
Disable network recommendations
adb shell "settings put global network_recommendations_enabled 0"
Disable automatic network switching
adb shell "settings put global network_avoid_bad_wifi 0"
Disable hotspot 2.0 (Passpoint)
Disables automatic connection to Passpoint networks (carrier WiFi networks)
adb shell "settings put global wifi_passpoint_enabled 0"
Staying connected
Prevent WiFi from disconnecting when the screen is turned off
adb shell "settings put global wifi_sleep_policy 2"
Keep the screen on while charging
adb shell "settings put global stay_on_while_plugged_in 3"
Disable background data restriction enforcement
adb shell "settings put global wifi_enhance_network_while_sleeping 0"
Verification of the settings
To check if the settings are correctly applied to the headset, use the following command:
adb shell "settings get global captive_portal_detection_enabled" && adb shell "settings get global captive_portal_server " && adb shell "settings get global captive_portal_https_url" && adb shell "settings get global captive_portal_http_url" && adb shell "settings get global captive_portal_mode" && adb shell "settings get global wifi_watchdog_on" && adb shell "settings get global wifi_watchdog_poor_network_test_enabled" && adb shell "settings get global network_recommendations_enabled" && adb shell "settings get global network_avoid_bad_wifi" && adb shell "settings get global wifi_passpoint_enabled" && adb shell "settings get global wifi_sleep_policy" && adb shell "settings get global stay_on_while_plugged_in" && adb shell "settings get global wifi_enhance_network_while_sleeping" && adb shell "settings get global ota_disable_automatic_update"
The output of this command must be:
0
localhost
https://localhost
http://localhost
0
0
0
0
0
0
2
3
0
1
Misc
Disable automatic system updates
adb shell "settings put global ota_disable_automatic_update 1"
Restart headset (recommended)
adb reboot