Search code examples
databasesqliteadbandroid-6.0-marshmallow

adb command - Marshmallow - change preferred network mode LTE/GSM


I am on the 6.0.1 Marshmallow OS and my previous commands to change the preferred network mode are no longer working.

Commands used in Kit Kat worked without issue:

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "SELECT * FROM global WHERE name='preferred_network_mode'"
adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global SET value=1 WHERE name='preferred_network_mode'"
adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value FROM secure WHERE name='preferred_network_mode'

Commands from above entered in this OS result in output:

Error: no such table: global

I pulled the database file, which was completely empty:

adb pull /data/data/com.android.providers.settings/databases/

Is there any ADB command that I can use to change the preferred_network_mode to LTE/GSM?


Solution

  • After a lot of research, this was the working solution I found for Marshmallow.

    The Preferred Network Mode numbers are found: https://android.googlesource.com/platform/hardware/ril/+/master/include/telephony/ril.h#228

    1 is GSM Only

    11 is LTE Only

    adb wait-for-devices
    adb root
    adb wait-for-devices
    adb shell settings list global | grep pref
    

    This returned to me both "preferred_network_mode" and "preferred_network_mode1"

    adb shell settings put global preferred_network_mode 1
    adb shell settings put global preferred_network_mode1 1
    adb shell stop ril-daemon
    adb shell start ril-daemon