Adaptive screen refresh rate not working correctly?


Achimlk9

Members
May 2, 2020
50
30
You can check the current refresh rate when you activate the function in the developer Options. The Mi 11 Ultra is capable of dynamically switching between 30, 60, 90, and 120Hz, depending on what's being displayed and how you're interacting with the phone. However in most cases the screen refresh rate remains at 120 Hz. Even on the Always On Display the refresh rate stays at 120Hz. This might explain some battery drain. I guess this is a Xiaomi Software problem but maybe the Xiaomi.eu developers can help to improve the settings?
 

Attachments

  • AOD screen with 120 Hz.jpg
    AOD screen with 120 Hz.jpg
    258.5 KB · Views: 2,178
The funny thing is, it's always 60 for me, except on AOD or lockscreen, so it might be a Bug?

Or super wallpaper needs 120 to work properly?

You can play a little with that:

74c4e3c2be9ac84d4fcb7adb496519f0.jpg


Sent from my Mi 11 Ultra.
 
Last edited:
  • Like
Reactions: add_pl and 4fun20
The funny thing is, it's always 60 for me, except on AOD or lockscreen, so it might be a Bug?

Or super wallpaper needs 120 to work properly?

You can play a little with that:

74c4e3c2be9ac84d4fcb7adb496519f0.jpg


Sent from my Mi 11 Ultra.

I have the same problems on Mi 11.
I've read some Android docs regarding that and I believe the Xiaomi implementation is
br0ken cra** =). Since you have root you can try playing with the prop values, have a look
there about what is what and what you can set or change:


I believe all Xiaomi do is this: set *static* values on some apps & task manager, then have,
ro.surface_flinger.set_touch_timer_ms set to 200 ( which is a joke ) and ro.surface_flinger.use_content_detection_for_refresh_rate
set to true. We see AOD and other parts forced to 120Hz bc there is nothing about
set_display_power_timer_ms & set_idle_power_timer_ms in surface_flinger.

Another strange thing, is how they seem to match apps .. not based on the video API but from the log? (WTF ?),
IOW, turning of logs will switch the apps like youtube and others from statically 60 to user_refresh_rate... Very strange.

Now a disclaimer, I'm not an Android developer but I develop for Linux, and my research on Xiaomi's internals is limited.
I may find some time one day and look closer, but for now, I don't have any time to dig deeper into Android & Xiaomi ;)

Maybe some of the Xiaomi.eu devels can have a look?

Here is what I did to have a mix of 120/90/60 HZ at least which is basically just 90HZ user mode,
and AOD, animations, biometric lock screens etc 120Hz.

enable 120Hz in settings, then set:

user_refresh_rate to 90
min_refresh_rate to 60
peak_refresh_rate to 120

For people annoyed with apps having 60Hz for no reason, goto developer settings and set:

Logger buf size & log level to off.

This is all a HACK btw and not the correct way of implementing AdaptiveSync, and as much I love the 120Hz mode
on this nice display, it is completely unoptimized and eats battery like crazy.
 
The funny thing is, it's always 60 for me, except on AOD or lockscreen, so it might be a Bug?

Or super wallpaper needs 120 to work properly?

You can play a little with that:

74c4e3c2be9ac84d4fcb7adb496519f0.jpg


Sent from my Mi 11 Ultra.
In my case, weekly rom on K40, I really don't see any difference. Marketing gimmick!
 
I can find peak and user refresh rate but not min refresh rate

If is missing, just add it.

For some devices even user_refresh_rate is missing, that may be a bug on top of the
buggy implementation =).
 
Stock Chinese rom runs everything smooth besides Google Maps when little window sitting on top.
Meanwhile on a pixel in same situation is smooth
 
min_refresh_rate to

also not working

Well is working, but it depends on other phone settings.

Since set_touch_timer_ms is forced 200ms, the switch 120Hz/60Hz,
or 90Hz/60Hz is very quick. If you set display timeout to 15secs you'll probably,
never see that at all, also if you disable log buffer in developer options you won't see
a switch.
 
  • Like
Reactions: goodguyavi
Stock Chinese rom runs everything smooth besides Google Maps when little window sitting on top.
Meanwhile on a pixel in same situation is smooth

Google apps have problems even on EEA/GLOBAL, you can try to enable
Disable HW overlays in Developer settings and see if that makes a difference.

That fixed for me the chrome 'smoothness' bugs in EEA/GLOBAL.
I don't really use chrome but a friend was hit with this and I played a bit around to
find some sort of workaround.

Heh, Pixel.. will be a shame if not :)
 
  • Like
Reactions: goodguyavi
I noticed that Stock Chinese rom running everywhere super smooth. The only thing is maps.
EU, Global have a problems with 120hz refresh rates. And yes we can fix that but still comes back after restart or other part of the phone became laggy.
I almost get ride of this phone.... until came back to stock Chinese
 
  • Like
Reactions: osnix
I noticed that Stock Chinese rom running everywhere super smooth. The only thing is maps.
EU, Global have a problems with 120hz refresh rates. And yes we can fix that but still comes back after restart or other part of the phone became laggy.
I almost get ride of this phone.... until came back to stock Chinese

Yes, the CH ROM is 100% much, much better. I noticed that too and the reason I use one now also.

TBH, the 12.5 EEA is a big joke...

My phone is not rooted right now, so I cannot play with props. I'm not sure why some things are missing regarding
Adaptive screen, it may be because is not really implemented in MIUI right now or is such buggy and disabled.
 
  • Like
Reactions: goodguyavi
Yes, the CH ROM is 100% much, much better. I noticed that too and the reason I use one now also.

TBH, the 12.5 EEA is a big joke...

My phone is not rooted right now, so I cannot play with props. I'm not sure why some things are missing regarding
Adaptive screen, it may be because is not really implemented in MIUI right now or is such buggy and disabled.
Oh root and install Adaway...after that is become even more smoother...
Yes, the CH ROM is 100% much, much better. I noticed that too and the reason I use one now also.

TBH, the 12.5 EEA is a big joke...

My phone is not rooted right now, so I cannot play with props. I'm not sure why some things are missing regarding
Adaptive screen, it may be because is not really implemented in MIUI right now or is such buggy and disabled.
100% stock Chinese is a beautiful rom compare to all others
 
Hi @osnix!
I would like to kindly ask you if you discovered anything which could be responsible for controlling the refresh rate of aod in xiaomi phones (or in general in android phones).
I own mi11 ultra, currently I use miui 13 china, android 12. I am in touch with two users who also owns this phone and for them aod works in 30hz. One of this users is using xiaomi.eu miui 13 android 12.

My phone, as well as many other users is stuck in 120 hz during aod...
In one post in xda I saw info from xiaomi.eu dev that they do not touch the settings of the refresh rates of the phone so I believe there is no difference between my chinese firware and this user xiaomi.eu.

I got from those two users who does not experience this issue info from here:
adb shell settings list secure
adb shell settings list global
adb shell settings list system
adb shell dumpsys display

I compared those lists and info about the display to my setup and I did not spot any extra missing commands which could be responsible for aod working in 30hz. Another funny part is that the screen of mi11 ultra can work in 120, 90 and 60 hz but there is nothing about 30hz in dumpsys display. Somehow aod can force such a low refresh rate...

I got in touch with the developer of the app called GalaxyMaxHz, you can find the info about this app in google (I can not post a link because forum doesn't let me, sorry).

After installing this app there was no info about 30hz. I asked the developer to add it to his app, now I can see this option in the app but even when I try to limit the refresh rate of the entire system to 30hz it does not do anything. The app works because I can set it up to switch the refresh rate from 120hz to 60hz after 2 seconds of inactivity, but limiting to 30hz does not work, everything is stuck in 120hz.

Looking forward for any suggestions!
Thank you in advance :)
 
I got my Mi 11 Pro and started playing around to shed some light on this refresh-rate issue
I'm still on original Chinese ROM 12.5.20 (I'm afraid of issues with bank apps if I unlock it and switch to xiaomi.eu and so far I didn't really have had much troubles with the original chinese rom)

Original setting of the display only allow 60Hz or 120Hz fixed
I installed SetEdit and by setting peak_refresh_rate and user_refresh_rate I can get 90Hz fixed, seems all the times including AoD (using android overlay counter). I also noticed that when I enable Battery Saver mode it is automatically tuned down to 60Hz

Trying now some battery tests to understand how much is the real impact on the battery life, honestly I don't see too much of a difference/improvement going above 60Hz, perhaps I will just keep it to 60Hz if I measure a significant impact on the battery life

Surely it would be nice to have an effective dynamic refresh rate going really down during still or AoD to save battery
I heard that a lot of other android devices even more recent and expensive (Pixel 6 and Samsung 22) have different issues in changing actively the refresh rate, it seems to me that this LTPO technology is still under development and not yet really available/working well on android (perhaps on Iphone13 pros it is ok)
 
Last edited:
It seems that I found the answer for the issue related with the AOD working in 120hz.

The answer is... the refresh rate counter in dev settings does not work properly.

Just to let you know, I am using miui 13 android 12 chinese stable, no root, locked bootloader.

In a shortcut, the "show refresh rate" in developer settings for some reason does not show in my phone the proper values once the phone goes to aod. The phone with GalaxyMaxHz app active switches to 30hz in aod.
I have no idea why this option does work properly for some users, but for other users (me including) does not work. GalaxyMaxHz also shows wrong values, as far as I was informed the dev of this app is working on a possible solution.

Below I wrote some explaination how I discovered that aod works properly in 30hz.

I connected the phone to pc and in adb terminal I wrote:
adb shell dumpsys display

This command gives a lottt of information, but we are interested just in one line more less on the end of the result. When my screen is in use (I am touching it) and I write this command then I see this result:

"PRIORITY_USER_SETTING_PEAK_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=120.0"

When I stop touching it for longer than 3 seconds and I write this command in adb again, I see this:

"PRIORITY_USER_SETTING_PEAK_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=60.0"
(so you can see that the GalaxyMaxHz app is doing its job. It switched the refresh rate to 60hz because I did not touch my screen for longer than 3 seconds as I configured it. If you want to know my config check the attachment to this post)

Then the screen tured off and aod got active. Here is the result:

"PRIORITY_USER_SETTING_PEAK_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=30.0"

So it works in 30hz! Be sure that the option "Forze lowest hz" is on.

Without the app active I am getting "PRIORITY_USER_SETTING_PEAK_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=120.0" during AOD. I can also see that the battery drain is significant without this app.

In my opinion, worth to use it, I am earning at least 1h more of sot per day.
 

Attachments

  • galaxy max hz config.jpg
    galaxy max hz config.jpg
    1.1 MB · Views: 1,072
  • Like
Reactions: Motox and JiaiJ
I'm on 22.2.17
I did a factory reset and not restored my old settings.
My battery is so much better now.

On my aod is the screen on 30hz now, it show's me the original refresh counter in developer settings
 
wow that's a lot of information but also a lot of confusion on this adaptive-refresh-rate,
seems too much of a trouble now for me, I've also tried another App called SmartHertz but it seems unable to control the refresh rate at least in AoD mode...

in any case if even the android counter shown is not reliable then it's really too much trouble,
I think I'll stick on balanced (with AoD) or battery saver (AoD disabled) for my daily use according to my situation
 
  • Like
Reactions: Mark F
Just wanted to post my findings here after a lot of playing around and research. I have found the 30hz displays as 120hz with the show refresh rate option checked, I confirmed that it is indeed running at 30hz when it says 120 after the setting is set in galaxy max Hz, just as @Misiek735 mentioned, thanks for that tip! (Using the method described above)

Also, regarding any colour shift, I have found that 90hz is not really supported very well, whenever it is enabled there is a huge shift if colours when switching from 90hz to any other refresh rate, so I've eventually decided to use 120hz with a minimum of 30hz and the colour shift is very small, and can be reduced more by the minimum brightness option in galaxy max hz.

My device is a Xiaomi mi11 pro, running miui 13 (13.0.9 by xiaomi.eu)
 
  • Like
Reactions: Misiek735
Thanks for doing the research, I am happy to hear that it works for you as well :)

Also I would like to add a few words about my latest post:

Just to let you know, I am using miui 13 android 12 chinese stable, no root, locked bootloader.
Not true anymore. Currently I have miui 13 android 12 xiaomi.eu stable, no root, unlocked bootloader.

In a shortcut, the "show refresh rate" in developer settings for some reason does not show in my phone the proper values once the phone goes to aod
Still true. I installed xiaomi.eu, I did full wipe (factory reset in settings), and before copying my files back to the phone and installing any app from the play store, immediately after the 1st boot of xiaomi.eu, the "show refresh rate" still showed 120hz in aod. So still I do not understand why to very few people this option works but to some others not.
 
Mix 4, rooted, haven't changed much... Stuck at 60fps on this rom

Had it side by side by my Mi 10 Ultra and the difference is stark