DEV Community

Cover image for A fix for a bug in OnePlus OxygenOS (Android) 13 and 14: Quick settings tiles resetting after every reboot
Jose Martinez
Jose Martinez

Posted on

A fix for a bug in OnePlus OxygenOS (Android) 13 and 14: Quick settings tiles resetting after every reboot

The issue as I'm experiencing it

Every time I reboot (restart) my phone, the order of my quick settings (QS) tiles (as well as a whole bunch of other settings) reverts back to the state that I had at a particular point in time in like 2024 (and I'm writing this on 2026-10-13).

Other settings affected: the global setting of whether to allow app icon badges with numbers and/or dots for all apps, the keyboard that I've selected (e.g. Gboard vs SwiftKey), whether I've selected gesture or button navigation, etc.

Reports of the issue on the OnePlus Community forum

The phone that I have and its state

OnePlus Nord 2 5G (as far as I know, there is no 4G model, so you could say simply OnePlus Nord 2) running OxygenOS 13 (the final version for this phone), not rooted, and fully up to date as of 2026-10-13 (DN2103_11_F.59). The codename of OnePlus Nord 2 5G is Denniz.

The background information required to understand the immediate cause of the issue

All Android systems have this thing called the settings database, which has 3 tables - system, secure, and global. Each of these tables is effectively a list of key-value pair entries effectively saying «setting X is set to value Y» (X is called the key and Y is called the value).

How to inspect the immedaite cause of the issue

From the Play Store, download the app called SetEdit: Settings Editor (by NetVor). It's a viewer and editor of the Android settings database. For now, don't grant it any permissions (tap Next, Next, Get started, reject all cookies, and tap No thanks) - you can always grant them later from the app's settings or clear the app's cache and data to start over.

Under the secure table, search for the key sysui_qs_tiles - its value stores the content and order of your QS tiles. It's a comma-separated list of tile IDs such as airplane, nfc, rotation, and custom(com.shazam.android/com.shazam.popup.android.service.FloatingShazamTileService). The latter notation is for tiles that aren't built into the OS, i.e. they come from the installed apps. The key sysui_qs_tiles is present on all Android systems that have QS tiles, but other keys (e.g. op_sysui_qs_tiles_hide, with op presumably standing for OnePlus) are custom to the particular flavor of Android, e.g. OnePlus's OxygenOS.

Now search for the key op_sysui_qs_tiles_hide. Its value is a comma-separated list of tile IDs like sysui_qs_tiles, but, in this case, I presume that its intention is to be a list of tiles that your OxygenOS is supposed to hide from your QS.

Now, on my phone, this value was super long and consisting of only one tile ID - custom(com.android.phone/com.android.oplus.wificalling.OplusWifiCallingTile) - but repeated 860 times and, thus, resulting in the value being 66,219 characters long.

It turns out that the maximum length of these values is supposed to be 2^16 = 65,536 characters. 66,219 is more than 65,536 and its fine whilst the settings databse is sitting in your phone's RAM, but it prevents a whole part of the databse from being saved to your phone's SSD. This is why you can change your QS tile order whilst your phone is running, but the moment you reboot your phone, your changes are gone because they never got saved from the RAM to the SSD.

So the fix turned out to be to change op_sysui_qs_tiles_hide from 860 dupes of the same tile ID - to only one. So I did that, moved one QS tile to a different place, rebooted, and the change stuck. I then inspected op_sysui_qs_tiles_hide again and it turned out that my OxygenOS added another 9 dupe entries to it. I played with it a little bit and it turned out that new dupes get added only during booting - not during normal operation - and either 9 or 10 new entries each time.

Setting op_sysui_qs_tiles_hide to be blank also works, but, in this case, my phone begins to add 10 dupe entries after every boot as opposed to 9, both the first time and somehow also in subsequent times.

Judging by the name custom(com.android.phone/com.android.oplus.wificalling.OplusWifiCallingTile), it's responsible for a particular Wifi calling tile, which my phone probably doesn't support and, thus, it appears under the op_sysui_qs_tiles_hide key. If your phone does support this tile, then I suspect that your phone might be "trashing" (with dupes upon every reboot) another field instead of op_sysui_qs_tiles_hide - possibly even sysui_qs_tiles itself, so look around. I'd look at and try to play with: op_sysui_qs_tiles_hide, sysui_qs_tiles, qs_auto_tiles, sysui_qs_edited, custom_vowifi_tileservice_enable.

How to actually edit the value of op_sysui_qs_tiles_hide or any of these other keys

If any of this feels too involved, ask any AI to explain to you anything that you don't understand. Alternatively, take your phone to any phone repair shop, show this post to them, and they'll do it for you in under 5 minutes.

  1. Enable Developer options on your phone and, there, enable USB debugging and Disable permission monitoring.
  2. Conntect your phone to a computer with a USB cable (the one you use for charging should do).
  3. In the menu that will pop up, select the charging mode.
  4. In the menu that will pop up, tap to allow your phone to be debugged.
  5. Download Android SDK Platform Tools from Google (https://developer.android.com/tools/releases/platform-tools) for your platform (it's just a zip file and you can use them without actually installing them; direct link for Windows: https://dl.google.com/android/repository/platform-tools-latest-windows.zip).
  6. Run the command adb shell settings delete secure op_sysui_qs_tiles_hide or, to leave one instance there, run adb shell "settings put secure op_sysui_qs_tiles_hide 'custom(com.android.phone/com.android.oplus.wificalling.OplusWifiCallingTile)'".
    • If you're going to run the command from the Windows PowerShell, make sure to replace adb with ./adb.

adb also allows you to inspect the values of keys, e.g. adb shell settings get secure op_sysui_qs_tiles_hide.

Also, you can create a macro with something like MacroDroid (it's an app in the Play Store) to run every time your phone boots up and set op_sysui_qs_tiles_hide to what it should be. To grant your MacroDroid app permissions to edit the secure table of the settings databse of your phone, run adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS.

How to reproduce the issue

Write more than 2^16 = 65,536 characters into op_sysui_qs_tiles_hide via adb or restart your phone enough times for OxygenOS to do it for you, which is how all of the users who experienced this bug presumably did it.

Top comments (0)