How To Guide Screen refresh rate twinkering - Google Pixel 6 Pro

Screen refresh rate is controlled by several variables, 3 which I found are:
Code:
# getprop ro.surface_flinger.use_content_detection_for_refresh_rate
This instructs the screen compositor (surface flinger) to look at screen content to control screen refresh rate. 'true' by default; you will need root and Magisk's resetprop to override it, e.g.
Code:
# resetprop ro.surface_flinger.use_content_detection_for_refresh_rate false
But note that that does not stick after reboot, you will need a magisk module to force that upon boot. Add the property to system.prop file in the magisk module top directory.
Then:
Code:
# settings get system min_refresh_rate
0 by default; you can set e.g. to '60'
Code:
# settings put system min_refresh_rate 60
And the peak refresh:
Code:
# settings get system peak_refresh_rate
60 or 120 depending on toggle 'Smooth display' in Settings.
When you use 'Force peak refresh rate' in developer options then:
Code:
# settings list system | grep refresh
min_refresh_rate=120.00001
Weird number by the way. Anyway that forces the driver into 120Hz continuously.
I have personally set min=60, peak=120 and the surface flinger content detection to 'false' ... just to see how this goes for a couple of days.
And finally some other properties related to surface_flinger:
Code:
# indicates whether SurfaceFlinger should use refresh rate switching on the device, e.g. between 60 and 120 Hz (default: true)
ro.surface_flinger.refresh_rate_switching
# value used by the Scheduler to trigger display power inactivity callbacks (default: 1000)
ro.surface_flinger.set_display_power_timer_ms
# used by the Scheduler to trigger touch inactivity callbacks that will switch display to a lower refresh rate (default: 200)
ro.surface_flinger.set_touch_timer_ms

Interesting ...

It's possible to set minimum to 10Hz?

foobar66 said:
I have personally set min=60, peak=120 and the surface flinger content detection to 'false' ... just to see how this goes for a couple of days.
Click to expand...
Click to collapse
How did it go?

PuffDaddy_d said:
How did it go?
Click to expand...
Click to collapse
So far no issues ... all working fine. I have now set the minimum as well to 120 Hz ... just to see how that might affect things ...

foobar66 said:
So far no issues ... all working fine. I have now set the minimum as well to 120 Hz ... just to see how that might affect things ...
Click to expand...
Click to collapse
LOL ... as expected ... significantly more battery drain keeping the screen to 120 Hz all the time.
But scrolling ... oh so smooth ...
Looking for a middle with increased ground with ro.surface_flinger.set_touch_timer_ms to avoid switching too soon to lower rate (and ro.surface_flinger.use_content_detection_for_refresh_rate=false to avoid switching to lower rate based on content).

foobar66 said:
LOL ... as expected ... significantly more battery drain keeping the screen to 120 Hz all the time.
But scrolling ... oh so smooth ...
Looking for a middle with increased ground with ro.surface_flinger.set_touch_timer_ms to avoid switching too soon to lower rate (and ro.surface_flinger.use_content_detection_for_refresh_rate=false to avoid switching to lower rate based on content).
Click to expand...
Click to collapse
Can min=90? Or will it only run between 60-120?

kevinireland11 said:
Can min=90? Or will it only run between 60-120?
Click to expand...
Click to collapse
Not sure ... I guess it can ... I have not yet found if there is a kernel flag which can be checked to obtain the current (actual) frequency of the display.

Actually, you can see the refresh rate of the screen.
Go to developer settings. There is a toggle there called 'Show refresh rate' ;-)
Tried setting min rate to 90 ... but does not work via this mechanism.
Code:
settings put system min_refresh_rate 90
It switches the minimum rate to 120.
So looks like only 60 and 120 are accepted.
If you set system peak_refresh_rate to 60, then the screen will always be in 60 Hz. That is very clearly visible when scrolling.
When you touch the screen, it seems to immediately switch into 120 HZ as there is of course a possibility that you will start scrolling ... so makes sense. As soon as you lift your finger and the screen content is not moving the frequency is lowered to 60.

foobar66 said:
Screen refresh rate is controlled by several variables, 3 which I found are:
Code:
# getprop ro.surface_flinger.use_content_detection_for_refresh_rate
This instructs the screen compositor (surface flinger) to look at screen content to control screen refresh rate. 'true' by default; you will need root and Magisk's resetprop to override it, e.g.
Code:
# resetprop ro.surface_flinger.use_content_detection_for_refresh_rate false
But note that that does not stick after reboot, you will need a magisk module to force that upon boot. Add the property to system.prop file in the magisk module top directory.
Then:
Code:
# settings get system min_refresh_rate
0 by default; you can set e.g. to '60'
Code:
# settings put system min_refresh_rate 60
And the peak refresh:
Code:
# settings get system peak_refresh_rate
60 or 120 depending on toggle 'Smooth display' in Settings.
When you use 'Force peak refresh rate' in developer options then:
Code:
# settings list system | grep refresh
min_refresh_rate=120.00001
Weird number by the way. Anyway that forces the driver into 120Hz continuously.
I have personally set min=60, peak=120 and the surface flinger content detection to 'false' ... just to see how this goes for a couple of days.
And finally some other properties related to surface_flinger:
Code:
# indicates whether SurfaceFlinger should use refresh rate switching on the device, e.g. between 60 and 120 Hz (default: true)
ro.surface_flinger.refresh_rate_switching
# value used by the Scheduler to trigger display power inactivity callbacks (default: 1000)
ro.surface_flinger.set_display_power_timer_ms
# used by the Scheduler to trigger touch inactivity callbacks that will switch display to a lower refresh rate (default: 200)
ro.surface_flinger.set_touch_timer_ms
Click to expand...
Click to collapse
Hi, what's your experience with these changings now?
Can you send the exact settings for a script please?

For Samsung devices with high refresh rate displays there is Galaxy Max Hz, that has an adaptive mode (Pixel default from what i understand in the few hours ive been back on Pixel (6 Pro)) and also a screen off low rate, and also per app granular control. So far havent seen an equivalent for Pixel, but hopefully a matter of time

How to get magisk resteprop? I can't find anything about it

_Vortex95 said:
How to get magisk resteprop? I can't find anything about it
Click to expand...
Click to collapse
Its an applet of magisk, its functions are outlined here:
Magisk/tools.md at master · topjohnwu/Magisk
The Magic Mask for Android. Contribute to topjohnwu/Magisk development by creating an account on GitHub.
github.com
short version, you could call it via script (post-fs-data.sh OR service.sh - depending on at which point of the boot process you wanted to use it)
boot stages of magisk explained here:
Magisk/details.md at master · topjohnwu/Magisk
The Magic Mask for Android. Contribute to topjohnwu/Magisk development by creating an account on GitHub.
github.com
service.sh is preferred (see here for why: https://topjohnwu.github.io/Magisk/guides.html#boot-scripts )
but
as mentioned it would be easier to add it to a system.prop file it the root folder of a magisk module and try that first
and if you were looking to create a magisk module and fiddle, this template by @Zackptg5 is what id recommend and i use:
GitHub - Zackptg5/MMT-Extended: Magisk Module Template Extended
Magisk Module Template Extended. Contribute to Zackptg5/MMT-Extended development by creating an account on GitHub.
github.com
and his excellent wiki:
Home
Magisk Module Template Extended. Contribute to Zackptg5/MMT-Extended development by creating an account on GitHub.
github.com
A module might be as simple as (i could do it in about 5 minutes, (and it shouldnt take you much more as a 1st timer, as this is a simple module), but people should learn this themselves):
1) Download the MMT- Extended template linked above buy going to the github link, then click (towards top) green Code button, then Download Zip or click here: https://github.com/Zackptg5/MMT-Extended/archive/refs/heads/master.zip
2) Extract the zip somewhere, giving you a folder "MMT-Extended-master"
3) Rename "MMT-Extended-master" to the name of the module youre creating
4) Descend into this folder, delete what you dont need - in this case:
system folder
zygisk folder
changelog.md (unless you plane to update and maintain a changelog)
update.json (unless you plan to submit to a repo)
5) Edit module.prop to set values for the module name etc (remove the update updateJson line if you removed the update.json file)
6) Add a system.prop file in the folder
7) Open with a good text editor (notepad++ is reocmmended) and add the necessary line:
Code:
ro.surface_flinger.use_content_detection_for_refresh_rate false
8) Save the file
9) Select all the contents of the folder, and compress (preferably with anything but WinRAR (as it can create wonlky zip files))
10) Transfer to device, flash via Magisk Manager (NOT TWRP) and test
Only if this way fails would i bother with trying to add the resetprop method buy adding the
Code:
resetprop ro.surface_flinger.use_content_detection_for_refresh_rate false
line in service.sh (created in the folder), usually people would try this way with a delay (sleep <seconds>) to try and change it much later than the resetprop stage in system.prop...timing can sometimes be everything
Magisk modules dont need to be hard and thats a VERY simple one

Came across this in my travels today(not tested by me), just linking for interested parties
GitHub - yc9559/dfps: Dynamic screen refresh rate controller for Android 10+
Dynamic screen refresh rate controller for Android 10+ - GitHub - yc9559/dfps: Dynamic screen refresh rate controller for Android 10+
github.com

I have a Pixel 6a, might it be possible to reduce the Refresh Rate to 30Hz with this method?
Btw: Thank you for sharing your knowledge/findings guys!

You don't want it forced high all of the time. It's supposed to get low when you're on for example, always on display. You don't need root to edit this, all you need is the settings database editor app, and granting it the write secure settings permission through adb. You'll see the areas for minimum refresh rate, maximum refresh rate and user set refresh rate. You can also use the LADB app and set up wireless debugging and type in CMD display, and from there you can change the display size, HDR formats and refresh rate

Related

Tweaking the screen refresh

In /sys/class/graphics/fb0/, there are some interesting options :
epd_percent (default: 85) "EPD Flushing Update percentage for AUTO Mode" is the percentage of the screen that has to change to trigger a full refresh of the screen
epd_delay (default 100) "EPD Flush elimination window (ms) for AUTO Mode" is the time before a full refresh apply.
pgflip_refresh (default 0) If you set it to 1, it disables the full refresh when reading a book (with the stock app)
There are other options in this directory but I don't know what they do.
Disclaimer : I'm not responsible if anything happen when editing these files. (It is possible that some values are dangerous for your nook, I don't know)
Increasing the value of epd_percent can be useful to have less flashes or to increase the speed of page scrolling in the web browser. (but you may have more ghosting)
Decreasing the value of epd_delay allow faster full refresh (but if you decrease it too much when you scroll a page, you will have several full refresh instead of only one)
epd_percent and epd_delay have no effect in the stock reading app
How to modify these options ?
Method 1: with adb
Example :
Code:
adb shell
# cd /sys/class/graphics/fb0/
# echo -n 90 > epd_percent
# echo -n 60 > epd_delay
(With this method, these values will be reset at each boot)
Method 2: adding the previous commands at the end of /system/bin/clrbootcount.sh (this file is executed when the boot is completed)
Code:
adb pull /system/bin/clrbootcount.sh
//Now you can edit this file and add at the end a command (like echo -n 95 > /sys/class/graphics/fb0/epd_percent for instance)
//Then
adb shell mount -o remount,rw /dev/block/mmcblk0p5 /system
adb push clrbootcount.sh /system/bin/clrbootcount.sh
adb shell chmod 755 /system/bin/clrbootcount.sh
Method 3
Modifying the init.rc in the uRamdisk (untested)
Code:
# Set EPD Flushing Update percentage for AUTO Mode.
write /sys/class/graphics/fb0/epd_percent 85
# Set EPD Flush elimination window (ms) for AUTO Mode.
write /sys/class/graphics/fb0/epd_delay 100
- More information here
Are your sample values the ones you recommend?
What are some "limits" you've found (upper/lower; at XX value, you get multiple refreshes...,etc)
Sorry for the late answer.
I have not found any limit (I even tried 0 in epd_delay and it works).
My sample values are values that I found rather good but it really depends on your preferences and on how you use your device.
So I would advise to test some values with adb before.
I noticed that I had a double refresh in some app when epd_delay < 80.
And with the 1.1 update, I find it less useful to modify them as the screen refresh is rather good with the stock values..
I never saw this post before and didn't know about these settings. They're pretty good.
I decided to just set epd_percent to 0, which I think may turn off the percent-based screen refresh (seems basically the same as setting it to 100). I do get a little artifacting in some apps, but usually not. It really makes using things like ES File Explorer a lot smoother.
pgflip_refresh is the really interesting setting, though. OP's description is not complete. While setting pgflip_refresh to 1 does disable full screen refreshes in the default epub reader, its more interesting effect is that the screen updates more often (or allows small partial updates maybe?). This is in all apps. It's especially nice in something like a text editor or terminal. With pgflip_refresh set to 0 (default) deleting with backspace or moving the cursor doesn't update on screen until you let off the key, so you have to try to guess how far you've gone. With pgflip_refresh 1, it updates just like on a non-eink screen, though with considerable blurring. I'd consider it a whole separate screen mode, similar to NoRefresh, but with the full greyscale graphics. In fact, if you use an app that's already 1-bit color, like e-Paper, pgflip mode and NoRefresh look identical.
Anyway, I advise playing with these settings if you've never done it before, you can make some more subtle changes compared to NoRefresh and FastMode. Note that when pgflip_refresh is on (set to 1), NoRefresh and FastMode will not work, so it has to be disabled first if you want to use them.
SweaterFish said:
I decided to just set epd_percent to 0, which I think may turn off the percent-based screen refresh (seems basically the same as setting it to 100). I do get a little artifacting in some apps, but usually not. It really makes using things like ES File Explorer a lot smoother.
pgflip_refresh is the really interesting setting, though. OP's description is not complete. While setting pgflip_refresh to 1 does disable full screen refreshes in the default epub reader, its more interesting effect is that the screen updates more often (or allows small partial updates maybe?).
Click to expand...
Click to collapse
Interesting. Setting epd_percent to 0 gives a flicker-free scroll, after a fashion, but it's really just a smear of lines going by without a flicker. Certainly in that respect, NoRefresh is a better deal.
I can sort of see what you mean about things like ES File Explorer although I confess I must have just gotten used to the typical screen behavior over the years so it doesn't seem like that big a deal to me. Using the text editor in ESFE I never see any flickering or other annoyances, so there's no gain there for me. There seems to be a visual improvement in simple navigation among folders with maybe less flashing, but that's at the expense of the scrolling behavior already described.
pgflip_refresh also seemed to make subtle changes. Page changes in the Kindle app (sloppy at best) were much improved with this change and the change in epd_percent. But, using NoRefresh (which is what I generally do with the Kindle app) gives a better result, IMO. Ditto with something like EBookDroid.
But the settings are interesting to look at and try out. Perhaps there's a "sweet spot" in there somewhere!
Edit: I should add that I tried these out using the text editor of ESFE and the changes appeared to be immediate. That means that a special combination would be easy to invoke/revoke by a simple Tasker app if it proved really useful. It would revert upon boot, of course, but even that could be addressed with the hypothetical app.
I see now that the behavior varies in different kernels. For kernels with FastMode support, setting epd_percent to 0 has less of an effect than in standard kernels. It's very subtle, but just fewer screen refreshes overall. With non-FastMode kernels, setting epd_percent to 0 and setting pgflip_refresh to 1 appear to do more or less the same thing, except that refreshes in the stock reader are also disabled, like OP said.
Another one to try is setting the permissions of epd_disable to 444 (read-only). This seems to disable refreshes when changing activities. Or maybe the refresh still happens, but since epd doesn't get disabled for the usual 100-300ms, you don't notice it. The screen just sort of dissolves between the two activities. I rather like it.
For me, these changes aren't so much about improving scrolling (I guess I don't do much on my Nook that involves scrolling), but just less flashing, which I really appreciate.
SweaterFish said:
Another one to try is setting the permissions of epd_disable to 444 (read-only). This seems to disable refreshes when changing activities. Or maybe the refresh still happens, but since epd doesn't get disabled for the usual 100-300ms, you don't notice it. The screen just sort of dissolves between the two activities. I rather like it.
Click to expand...
Click to collapse
This seems to have little general effect on a non-FastMode kernel. There is improvement in the page turns for the Kindle app, but otherwise transitions are pretty much what I am used to. NoRefresh is compatible with this change.

[ROOT] Brightness mod for Treble 9.0 (version 2)

Hi everyone!
As you may know, the brightness on the phh-treble (the 9.0 version) is really bright even at the minimum value.
So I have created a small app that contains a quick settings tile, and with that you can set the brightness to a lower value.
Supported brightness values:
60, 100, 200 (system minimum is 345)
The program requires root access to run the commands on the sysfs, so when you put it on the quick settings place, a su window will appear, where you can grant (or deny ) access.
The program is provided AS IS, and please be aware that I am not responsible for any damage caused to you or to your device.
Changelog:
version 2
- 3 different brightness values, always starting from the maximum if the brightness is above 200
version 1
- Initial release
Thank you so much!
Brightness is an issue on treble roms, thanks for the fix bro
Version 2 released, see changelog in the first post!

Themes / Apps / Mods [App]Galaxy Max Hz (Refresh Rate Mods, Screen-off Mods, QS Tiles, Tasker Support and More)

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
About this ap:
Refresh Rate Mods
Change default refresh rates
-Easily change the overall refresh rate settings of devices supporting multiple refresh rates.
-Set supported mid refresh rates as the maximum refresh rate limit for battery savings (e.g. 96hz instead of 120Hz).
-Quick settings shortcut
-Tasker plugin support
Motion smoothness mode switcher(Normal, Adaptive or High)***
-Set you device motion smoothness mode to stationary refresh rates (high mode) for better smoothness if so desired on Samsung devices with native Adaptive motion smoothness with a little trade-off to the battery.
-Apply adaptive mod on device that don't natively support adaptive mode [premium]
-Tasker plugin support
Per-app refresh rate settings:
Set different refresh rate settings for every app either adaptive or fixed(stationary) [premium].
Motion smoothness on power saving mode
-GMH will apply a workaround to bypass 60Hz limitation on Power Saving Mode (PSM) on supported Samsung smartphones.
-Automatically apply workaround when PSM is enabled [premium]
Need extra steps starting OneUI5.* except when rooted with magisk and using lsposed(experimental). Test it first
Screen-off Mods:
Force to Lowest Hz
-Force the lowest refresh rate on screen-off or Always-On Display(AOD) to improve standby power consumption a bit.
-Select refresh rate to set for AOD/screen-off[premium]
-Tasker plugin support.
Auto apply power saving mode during screen-off ***
Auto disable Autosync***
Quick-doze mod
-Quickly enter doze mode during screen-off that can not be interrupted by motion [premium]***
-Tasker plugin support
Auto SENSORS OFF (experimental non-root workaround)
-Device sensors will automatically turn off while screen is off until the device is unlocked to help minimize battery-draining motion-triggered wakelocks while device is not being used [premium]
-Tasker plug-in support
- Supports up to OneUI4.* only
Others
Battery protection mod (Experimental)
-Option to set maximum charge to 86%-95%(for OneUI4+)[premium]
Customizable refresh rate monitor
-Use statusbar or overlay which you can place anywhere on screen.
-Tasker plugin support
Net speed statusbar indicator
OneUI inspired UI. Dynamic theme and Icon. Manual language selection
Note: The premium license is on a per device basis (not per user).
***these marked features require a one-time ADB procedure (this is not root)
Galaxy Max Hz background service is highly optimized. Background battery usage p is very negligible .
Info:
This app targets older android sdk in order to control refresh rates without ADB setup or root. Just tap OK the dialog that says "This app was built for an older version of Android...." when opened for the first time. If OK button is not visible, just tap the blank space on the lowest portion of the dialog.
If google play protect will prompt during install that the app is built for older version of android and doesn't include the latest privacy protections, you can ignore it and proceed to the installation. For privacy related concern, please refer to FAQ No. 3.
Download
v8.0.0
Changelogs
Github wiki
Localization/Translations ​Contributors
Italian: @Orlaf
German:devj3ns, drbeat
Russian: @a43
Swedish:Steffe2
Turkish: osmanakar312
Greek: Nick
Spanish: @Sebastiansm
Czech: @Chrono Leggionaire
Simplified Chinese: @xiaolu7233123
French: @Jaxom84
Polish: @Pichulec
If you want to contribute on translations, please send me a message
Great that you've brought support to fold 4! I have small issue, it is randomly setting me on standard instead of adaptive,before I do any changes in settings (apart from ash obviously). Any ideas? Thanks!
morley636 said:
Great that you've brought support to fold 4! I have small issue, it is randomly setting me on standard instead of adaptive,before I do any changes in settings (apart from ash obviously). Any ideas? Thanks!
Click to expand...
Click to collapse
Maybe triggered by power saving mode being turned on?
It looks totally different on my fold 4? It's like stuck on adaptive but seems to be letting me set per app rate.
Does the screen off 10 work with aod?
Smittyzz said:
It looks totally different on my fold 4? It's like stuck on adaptive but seems to be letting me set per app rate.
Does the screen off 10 work with aod?
Click to expand...
Click to collapse
We don't have the Z Fold4 to test yet but it should be since Z Fold4 is capable of 10Hz.
the problem with 10Hz is that all apps (instagram, reddit etc) that shows videos are stuttering, so I need to use 24-120hz on those apps.
tribalfs said:
We don't have the Z Fold4 to test yet but it should be since Z Fold4 is capable of 10Hz.
Click to expand...
Click to collapse
I more less was thinking if the aod holds the screen on 24/7 if the 10hz lock still happens?
Looking to save battery if I can loli need aod on due to media controls with the phone "off"
Either way thanks
[email protected] said:
the problem with 10Hz is that all apps (instagram, reddit etc) that shows videos are stuttering, so I need to use 24-120hz on those apps.
Click to expand...
Click to collapse
Yes, that's a known limitation of GMH when setting min hz to 10Hz (for these apps which are restored from backup or not installed directly from play store).
For device like ZFold4, It's recommended to keep default min refresh rate to 24Hz and just use the per app settings to adjust individual app refresh rate settings to your liking..
Hey, thank you very much for this amazing app!
Two Issues:
I can just choose between "standard" and "adaptive" mode. The "high" option is greyed out. Why is that, and how can I use high mode?
I can't use the Tasker plugin. I can just add the plugin, but the edit button doesn't show the configurations. Am I doing this wrong?
Questions:
Can you add a QS tile/toggle for "PSM when screen is off"?
the option to limit the refresh rate while tying is just 60Hz, why can't this be lower like 10-24Hz?
At the top of the app it shows the device and says the model, Android 12, but it says "OneUi4.5", but it's on "OneUi4.1.1."
Thank you very much for your help
Mr6P said:
Hey, thank you very much for this amazing app!
Two Issues:
I can just choose between "standard" and "adaptive" mode. The "high" option is greyed out. Why is that, and how can I use high mode?
I can't use the Tasker plugin. I can just add the plugin, but the edit button doesn't show the configurations. Am I doing this wrong?
Questions:
Can you add a QS tile/toggle for "PSM when screen is off"?
the option to limit the refresh rate while tying is just 60Hz, why can't this be lower like 10-24Hz?
At the top of the app it shows the device and says the model, Android 12, but it says "OneUi4.5", but it's on "OneUi4.1.1."
Thank you very much for your help
Click to expand...
Click to collapse
What version of the app you installed?
And what is the exact model number of your device?
Thank you.
That OneUI4.5 version is a bit strange. That value is actually read from a field in OneUI's Build class.
tribalfs said:
What version of the app you installed?
And what is the exact model number of your device?
Thank you.
That OneUI4.5 version is a bit strange. That value is actually read from a field in OneUI's Build class.
Click to expand...
Click to collapse
It says: Version 8.0.0, I set it to alpha update channel. It doesn't say "beta" like in your screenshot here
In settings app, it says: SM-F936B/DS
I don't understand the One UI version either
I bought premium, and it also says that it's activated
------------------------
EDIT: I cleared cache & data and installed the most recent version from GitHub. Now the "high" mode is available again.
I've set up Adaptive to 24-96Hz. Now I have a weird bug, that locks the front screen to 24-60Hz and on the main screen it's correct 24-96Hz. No PSW or anything.
I don't know how to use the Tasker plugin. When I open it, then it just shows a long block of text, (see attached screenshot). There's an edit button (pencil icon) at the top right, but pressing it does nothing. Is there any configurator or even an (G)UI? Or how am I supposed to use the plugin?
Thank you very much
Hi there. Despite changing the update channel to beta, I cannot get the beta version of the app. Tried clearing cache and data several times but still no success. Any idea? I also bought a license. Thought that was the issue but still no update to beta. Helps please? Really wan to use high refresh in PSM. THANKS.
"Keep Smoothness on PSM" is missing on OneUI 5 beta, G998B.
LeeXDA18 said:
"Keep Smoothness on PSM" is missing on OneUI 5 beta, G998B.
Click to expand...
Click to collapse
I'm on oneui 4.1.1
Just reporting that the per-app settings master toggle seems to be ignored. I set my device globally from 10 Hz to 120 Hz and found that YouTube would fall down to 10 Hz when playing videos rather than 24 Hz (which also shouldn't happen). I rectified that by setting YouTube alone to 24 Hz - 120 Hz, but forgot to activate the master toggle for per-app settings. When I switched to YouTube however, it was now working correctly. It wasn't until later that I discovered that I never changed that setting, and testing with it both enabled and disabled seem to have no impact on the behavior. Only completely resetting the individual setting for the YouTube app restored the original (buggy) behavior.
Mr6P said:
...
------------------------
EDIT: I cleared cache & data and installed the most recent version from GitHub. Now the "high" mode is available again.
...
Click to expand...
Click to collapse
Great!
Mr6P said:
..
I've set up Adaptive to 24-96Hz. Now I have a weird bug, that locks the front screen to 24-60Hz and on the main screen it's correct 24-96Hz. No PSW or anything.
..
Click to expand...
Click to collapse
Seems Samsung set higher brightness threshold for 96hz on the front screen which disables 96hz on low brightness condition. Unfortunately, this is beyond control of GMH or any third party app.
Mr6P said:
I don't know how to use the Tasker plugin. When I open it, then it just shows a long block of text, (see attached screenshot). There's an edit button (pencil icon) at the top right, but pressing it does nothing. Is there any configurator or even an (G)UI? Or how am I supposed to use the plugin?
Thank you very much
Click to expand...
Click to collapse
Please check #16 in FAQs.
Thank you.
jooniloh said:
Just reporting that the per-app settings master toggle seems to be ignored. I set my device globally from 10 Hz to 120 Hz and found that YouTube would fall down to 10 Hz when playing videos rather than 24 Hz (which also shouldn't happen). I rectified that by setting YouTube alone to 24 Hz - 120 Hz, but forgot to activate the master toggle for per-app settings. When I switched to YouTube however, it was now working correctly.
Click to expand...
Click to collapse
I believe that the installed youtube app was restored from backup and then subsequently updated from play store.
This is related to the limitation I mentioned here. Thank you.
tribalfs said:
Yes, that's a known limitation of GMH when setting min hz to 10Hz (for these apps which are restored from backup or not installed directly from play store).
For device like ZFold4, It's recommended to keep default min refresh rate to 24Hz and just use the per app settings to adjust individual app refresh rate settings to your liking..
Click to expand...
Click to collapse
tribalfs said:
I believe that the installed youtube app was restored from backup and then subsequently updated from play store.
This is related to the limitation I mentioned here. Thank you.
Click to expand...
Click to collapse
I understand that youtube not correctly applying 24 Hz falls under the limitation you mentioned, however shouldn't setting the per-app profile for youtube to 24 Hz minimum, but not having the master per-app toggle on not alter youtube's behavior at all from the global behavior set?
jooniloh said:
I understand that youtube not correctly applying 24 Hz falls under the limitation you mentioned, however shouldn't setting the per-app profile for youtube to 24 Hz minimum, but not having the master per-app toggle on not alter youtube's behavior at all from the global behavior set?
Click to expand...
Click to collapse
No, global behavior for apps detected as video player is 24hz min unless higher min hz is set as default.
tribalfs said:
No, global behavior for apps detected as video player is 24hz min unless higher min hz is set as default.
Click to expand...
Click to collapse
I get that, but with the GLOBAL setting set to 10-120, and the master per-app toggle OFF--meaning NO settings within per-app settings should affect behavior--YouTube falls down to 10 Hz during playback when the YouTube per-app setting is left cleared, but correctly plays back at 24 Hz when its per-app setting is set to a minimum of 24 Hz. Why is YouTube's per-app setting having an affect on refresh rate within the YouTube app when the master per-app toggle is set to off?

Themes / Apps / Mods [App]Galaxy Max Hz (Refresh Rate Mods, Screen-off Mods and More)

App Features
Refresh Rate Mods
Change default refresh rates
-Easily change the overall refresh rate settings of devices supporting multiple refresh rates.
-Set supported mid refresh rates as the maximum refresh rate limit for battery savings (e.g. 96hz instead of 120Hz).
-Quick settings shortcut
-tasker plugin support.
Motion smoothness mode switcher(Normal, Adaptive or High)***
-Apply adaptive mod on device that don't natively support adaptive mode [premium]
-Tasker plugin support.
Per-app refresh rate settings:
Set different refresh rate settings for every app either adaptive or fixed(stationary) [premium].
Motion smoothness on power saving mode (not working to all devices with OneUI4.**+, test first). ***
-GMH will apply a workaround to bypass 60Hz limitation on Power Saving Mode (PSM) on supported Samsung smartphones.
-Automatically apply workaround when PSM is enabled [premium]
Screen-off Mods:
Force to Lowest Hz: Force the lowest refresh rate on screen-off or Always-On Display(AOD). This overrides Samsung's strange stock behavior which sets the refresh rate to the highest on screen off (update: it is now at 60hz since OneUI3.0) to improve standby power consumption a bit.
-Tasker plugin support
Auto apply power saving mode during screen-off (after ~ 10 secs)***
Auto disable Autosync***
Quick-doze mod
-Quickly enter doze mode during screen-off that can not be interrupted by motion [premium].***
-Tasker plugin support
Auto SENSORS OFF (experimental non-root workaround)
-Device sensors will automatically turn off while screen is off until the device is unlocked to help minimize battery-draining motion-triggered wakelocks while device is not being used.
-Tasker plug-in support
- Supports up to android 12 only
Others
Battery protection mod
-Option to set maximum charge to 86%-95%(for OneUI4+)[premium]
Quick resolution switcher
-Easily switch to any supported resolutions using the included quick setting tile***
-Tasker plugin support
Customizable refresh rate monitor
-Use statusbar or overlay which you can place anywhere on screen.
-Tasker plugin support.
Net speed statusbar indicator
OneUI inspired UI. Dynamic theme and Icon. Manual language selection
Note: The premium license is on a per device basis (not per user).
***these marked features require a one-time ADB procedure (this is not root)
Galaxy Max Hz background service is highly optimized. Background battery usage p is very negligible .
Info: This app targets older android sdk in order to control refresh rates without ADB setup or root. Just tap OK the dialog that says "This app was built for an older version of Android...." when opened for the first time. If OK button is not visible, just tap the blank space on the lowest portion of the dialog.
Download
v8.0.0
Changelogs
Github wiki
Localization/Translations ​Contributors
Italian: @Orlaf
German:devj3ns, drbeat
Russian: @a43
Swedish:Steffe2
Turkish: osmanakar312
Greek: Nick
Spanish: @Sebastiansm
Czech: @Chrono Leggionaire
Simplified Chinese: @xiaolu7233123
French: @Jaxom84
Polish: @Pichulec
If you want to contribute on translations, please send me a message
If you want to get GMH Premium features and/or support GMH development but paypal is not available in your place, you can use Google Play Store.
Just download GMH Donation app from Google Play Store.
Note: The price might be slightly higher due to the relatively higher tax imposed on play store.
Been using it for a while now, it's great! Totally recommended.
I can't get adaptive hz on the phone it's greyed out

Themes / Apps / Mods [App]Galaxy Max Hz (Refresh Rate Mods, Screen-off Mods, QS Tiles, Tasker Support and More)

About this app:
Refresh Rate Mods
Change default refresh rates
- Easily change the overall refresh rate settings of devices supporting multiple refresh rates.
- Set separate refresh rates for power saving mode and for low battery state [1]
- Quick settings shortcut
- Tasker plugin support
Refresh rate (motion smoothness) mode switcher(Normal, Adaptive or High)[2]
- Set you device motion smoothness mode to static refresh rates (high mode) for better smoothness if so desired
- Tasker plugin support
Per-app refresh rate settings:
-Set different refresh rate settings for every app either adaptive or static [1]
Keep selected refresh rate mode on power saving mode[1]
- On devices with One4 or lower, GMH will automatically apply a workaround to bypass 60Hz limit on Power Saving Mode.
- Need extra steps on OneUI5.* except when using magisk and lsposed(experimental). Test it first.
Screen-off Mods:
Screen off/AOD refresh rate (Force to Lowest Hz)
- Force the lowest refresh rate on screen-off or Always-On Display(AOD)
- Tasker plugin support
- Select custom refresh rate for AOD/screen-off [1]
Auto apply power saving mode during screen-off [2]
Auto disable Autosync
Quick-doze mod
- Quickly enter doze mode (than usual) during screen-off that can not be interrupted by motion with customizable maintenance window interval [1][2]
- Tasker plugin support
Auto SENSORS OFF (non-root workaround)
- Device sensors will automatically turn off while screen is off until the device is unlocked to help minimize battery-draining motion-triggered wakelocks while device is not being used [premium]
- Tasker plug-in support
- Supports up to OneUI4.* only
Others
Battery protection mod
- Option to set maximum charge to 86%-95%(for OneUI4+)/40%-95% if rooted [1][2]
Quick resolution switcher
- Easily switch to any supported resolutions using the included quick setting tile[2]
- Tasker plugin support
Customizable refresh rate monitor
- Use statusbar or overlay which you can place anywhere on screen.
- Tasker plugin support
Animation mod
Net speed statusbar indicator
OneUI inspired UI.
[1] Enabled for premium users (with 2 days premium trial)
[2] These features require WRITE_SECURE_SETTINGS permission granted thru a one-time ADB procedure (this is not root)
Info:
This app targets older android sdk in order to control refresh rates without ADB setup or root. Just tap OK the dialog that says "This app was built for an older version of Android...." when opened for the first time. If OK button is not visible, just tap the blank space on the lowest portion of the dialog. If google play protect prompts during install that the app is built for older version of android and doesn't include the latest privacy protections, you can ignore it and proceed to the installation. For privacy related concern, please refer to FAQ No. 3.
Download and changelogs
Github wiki
--reserved--

Categories

Resources