[Guide] [Magisk] Disable Dynamic refresh rate for Poco X3 NFC

Slim K

Senior Member
May 16, 2015
95
13
28
A lot of people have complained about stuttering in between App switching and gaming. This guide helps you disable Dynamic refresh rate through MagiskHide Prop Config, which is easier than setting it manually and safer to disable if it doesn't work.

Disclaimer: Disabling Dfps (Dynamic refresh rate) will degrade battery life with prolonged use. According to my personal testing, battery life (SOT) decreased by 10-18% on average. Only use for short periods of time.
Requirements:
- Unlocked and rooted with Magisk v21.0.
- busybox-ndk.
- MagiskHide Prop Config installed (used often to pass safetynet CTS but can be used to set custom Props).

Instructions:
1- Run SU in your terminal of choosing.
2- Run props.
3- choose option 5 "Add/edit custom props".
4- choose n "New custom prop".
5- type in:
Code:
 ro.vendor.dfps.enable
6- Default value should be true, type in false to disable.
7- choose 2 "post-fs-data".
8- choose n, don't reboot yet.
9- choose n again to set another prop.
10- type in:
Code:
 ro.vendor.smart_dfps.enable
11- Default value should be true, type in false to disable.
12- choose 2 "post-fs-data".
13- Reboot.

Only tested on stock MIUI. Try at your own risk!
 
Last edited:

Slim K

Senior Member
May 16, 2015
95
13
28
Doesn't this mess with L1 ? Damn , I need to back up my persist img
NOPE. It doesn't mess with L1 certification or any for that matter. This is a systemless "vendor" modification not "persist", and as such very easily uninstallable. See attached screenshots.
Also the payoff/difference is huge if you're a power user. Try consistent 120Hz vs. stuttering 120Hz (sometimes drops to 30Hz) and you will notice immediately.
 

Attachments

Joakin2k

Senior Member
Jul 5, 2016
233
69
28
Culiacán
NOPE. It doesn't mess with L1 certification or any for that matter. This is a systemless "vendor" modification not "persist", and as such very easily uninstallable. See attached screenshots.
Also the payoff/difference is huge if you're a power user. Try consistent 120Hz vs. stuttering 120Hz (sometimes drops to 30Hz) and you will notice immediately.
Excellent explanation ! , I don't care for battery (if is not something out of control) I charge my phone always twice a day, I read that even Xiaomi EU and MIUI MIX has this issue ...
Going back to stock or EU for performance, aosp based are very green in performance...

Any Rom recommendation ?
 

Slim K

Senior Member
May 16, 2015
95
13
28
Any Rom recommendation ?
I've tried all the custom ROMs available for our device and recommend stock for now. Since all of them are based on stock kernel anyway, they're all MIUI ROMs in my opinion, but you can't blame devs for choosing to patch Stock MIUI when we don't even have Device sources released. TWRP for the same reason, Dynamic partitions are scary. :eek:

Is there a way to set the refresh rate to 90hz and disable the dynamic refresh rate after that?
As far as i know, refresh rate is handeled by an Activity:
Code:
com.xiaomi.misettings/.display.RefreshRate.RefreshRateActivity
which handels Dfps. In turn Dfps handels the frequencies in between 30Hz-120Hz depending on the process(Activity) on the forground.
I can't use my pc for a week atleast (broken from tinkering too much) to find a workaround, but good news! Theoretically, this guide should also work in custom roms with 90Hz option in settings app. Try it on a custom ROM and share your experience with us. [at your own risk ofc]
 

Joakin2k

Senior Member
Jul 5, 2016
233
69
28
Culiacán
I'm having problems hiding magisk manager(no magisk hide), I already turn off dynamic hz thx to you , changed device fingerprint for pixel 4(want certification)... But when I want to hide magidk manager (a Bank app can see it -already marked in hide-) it says some error , I don't know if it's the Miui security app , this never happened on AOSP, I'm on stock poco X3 , root + props hide config + vanced ... Any tip ?
 

Slim K

Senior Member
May 16, 2015
95
13
28
Will this still work if i set the display to 60hz?
Yes. Setting 60Hz in the Settings app will set it to a constant 60Hz, conversely setting it to 120Hz will set it to a constant 120Hz as well.

I'm having problems hiding magisk manager(no magisk hide), I already turn off dynamic hz thx to you , changed device fingerprint for pixel 4(want certification)... But when I want to hide magidk manager (a Bank app can see it -already marked in hide-) it says some error , I don't know if it's the Miui security app , this never happened on AOSP, I'm on stock poco X3 , root + props hide config + vanced ... Any tip ?
This is a fairly famous problem with Magisk Manger hiding and SELinux enforcing, but easily solvable. Do the following:
1- Go to Play store and turnoff Play Protect scanning (interferes with magisk manager repackiging itself aka Hiding).
2- Force stop Manager.
3- Open Manager again and choose another name and apply.
4- Profit.
If this still doesn't work, try this:
5- Go back to step 2 and then open terminal.
6- Type SU.
7- then set SELinux to permissive by inputting:
Code:
setenforce 0
8- continue with step 3
9- then set SELinux back to enforcing by inputting in terminal:
Code:
setenforce 1
10- Done ;)
 
Last edited:

Joakin2k

Senior Member
Jul 5, 2016
233
69
28
Culiacán
Man... Worked Flawlessly... Never had that issue on AOSP roms.
Thanks ! no need to turn on/off selinux enforcement.

But , really, thanks for your attention and detail , I'm impressed Sr
 

Slim K

Senior Member
May 16, 2015
95
13
28
To make things easier and more risk free, i have attached a config file to automate this process. New steps are even easier! Do the following:
1- Install the aforementioned modules.
2- unzip the attached .zip file to the root of internal storage.
3- Reboot.
New settings should've been applied successfully after reboot and the config file will delete itself.
 

Attachments

Skeuomorphic

Senior Member
May 6, 2015
100
12
38
To make things easier and more risk free, i have attached a config file to automate this process. New steps are even easier! Do the following:
1- Install the aforementioned modules.
2- unzip the attached .zip file to the root of internal storage.
3- Reboot.
New settings should've been applied successfully after reboot and the config file will delete itself.
Does this mean that the manual method enables back the dynamic refresh rate after every reboot? Which this conf will solve by placing the conf file at the root of internal storage before rebooting the phone?
 

Slim K

Senior Member
May 16, 2015
95
13
28
Does this mean that the manual method enables back the dynamic refresh rate after every reboot? Which this conf will solve by placing the conf file at the root of internal storage before rebooting the phone?
The Manual method as well as this method both persist through reboots. Only difference is the complexity of the initial setup, but that's it.
 

CaPicote

Senior Member
Jan 10, 2019
97
37
18
Doesn't seem to work there, checked with the power monitor, and it still switch between 120/90/60/30/1 fps depending on the app/menu I'm in
 

Slim K

Senior Member
May 16, 2015
95
13
28
Doesn't seem to work there, checked with the power monitor, and it still switch between 120/90/60/30/1 fps depending on the app/menu I'm in
Can you provide me the following?:
1- MIUI vers. (i.e 12.0.3.0 QJGEUXM)
2- Go to terminal a run su and then:
Code:
getprop ro.vendor.smart_dfps.enable
-Output should be false, if it's true, then you didn't set it right.

I think a lot of people mix up framerate and refresh rate. Just an FYI, the thing that should be of interest is the refresh mode in power monitor. Check these screenshots, the circled value should stay at 120Hz consistently. Another screenshot I provided below without this mod shows 60Hz encircled when device not touched(which we don't want). The value on the right side of it (also in screenshots) is the framerate provided from the app (process) and indicates the actual frames displayed on the screen, if the screen isn't changing or moving, then there is nothing to display 120 frames about and will drop to 1 fps, which is completely normal.
 

Attachments

Last edited: