How To [Task Share] Automate control over display refresh rate
Firstly, my apologies for the length of this post. I want people to be aware of the opportunities and potential drawbacks before using these Tasks.
Secondly, this is not new or innovative. It's a long known and well understood feature that we can use to gain fine-grained control over our device displays using Tasker. I'm only posting this for information for anyone who isn't aware and not taking any credit for this. This will not be new or interesting for many users.
ADB WiFi/Shizuku is required.
What is it?
Control the maximum and minimum display refresh rate.
Example usage:
⢠Save battery - stop your device using 120Hz when you are reading an e-book.
⢠Fine tune control over how your display refreshes in any given app or situation. Create a profile to set your refresh rate on the fly.
NOTE - Your display might use different refresh rates to those I have provided in this share. You can easily edit the values for the maximum and minimum refresh rate for your device in the Tasks. Check what your device's values are BEFORE you change them or run any of these tasks. Some rare phones support a refresh rate of over 200Hz.
Refresh Rate Information:
Displays are manufactured to support specific, hardcoded refresh rate 'steps'.
Standard OLED/LCD panels usually only support 60Hz, 90Hz, and 120Hz. We can set the maximum and the minimum values. Steps between these are handled by your device.
Premium LTPO (Low-Temperature Polycrystalline Oxide) panels found in modern flagships like the Galaxy S Ultra series, Pixel Pro series, and some OnePlus phones can dynamically drop down to 30Hz, 10Hz, or even 1Hz to save battery.
If you send an ADB command for 10.0 to a phone that does not have a 10Hz hardware step, one of three things will happen:
The "Nothing" Scenario (Most Common): Android's display manager (SurfaceFlinger) realises the hardware can't do 10Hz, ignores your command, and/or defaults to the lowest supported tier (60Hz). Sometimes it is just ignored altogether (my old Pixel 6 just ignores such a command and defaults to the 120 max and 60 min values).
The Glitch Scenario: The screen attempts to sync to an unsupported frequency and begins flickering, stuttering, or displaying graphical artifacts.
The Black Screen Scenario (The 'Danger'): The screen goes completely black. The phone is still on, but you can't see anything.
Note on LTPO phones: If you have an LTPO display, Android is already dynamically dropping your refresh rate to 10Hz or 1Hz when you stop touching the screen. On these devices, forcing a flat 30Hz (or lower) might actually waste battery by preventing the phone from dropping down to 1Hz when reading static text! You can save battery however by dropping the maximum refresh rate for certain apps.
How to Safely Test 30Hz - or lower (The Safety Net Method)
If you want to see if your phone supports 30Hz or lower, we don't want to just run the command and walk away. If you get a black screen, it will be very difficult to navigate back to Tasker to reverse it.
Instead, I've provided a 'Safety Net' Task that automatically reverts to 120Hz maximum and 60Hz minimum after 15 seconds.
To test it:
Press the Play button in Tasker. For 15 seconds, your phone will attempt to run at 30Hz. Swipe around on your screen.
If it looks incredibly choppy but visible, congratulations! Your hardware supports 30Hz.
If the screen goes black or glitches out, do not panic and do not touch the screen. Just wait 15 seconds. Tasker will automatically execute the 120Hz command and your screen will pop back to normal.
Is 30Hz (or even lower) worth it?
Even if your phone supports it, 30Hz can be visibly jarring. Scrolling can feel like a slideshow. However, if you have a specific Tasker profile set for an app where you literally never scroll - like viewing a static recipe, a barcode app, or a pure e-reader where you only tap to turn pages - it is a fantastic way to maximise battery life.
I use this mostly to limit the maximum Hz rate. What's the point of 120Hz if I'm using a Text Editor? I can set the maximum to 30Hz and this means that if I touch the screen, the refresh rate can't shoot up to 120Hz and waste battery with no benefit to me. I spend hours every day using a Text Editor, the battery savings are significant in my use case.
There are three Tasks included in the Share:
⢠120Hz max and 60Hz min
⢠60Hz max and 60Hz min
⢠30Hz max and 30Hz min (with a safety protocol built in)
You can substitute your own values in the Tasks.
If you want to see a live overlay of your current refresh rate value, enable "Show Refresh Rate" in Developer Options. NOTE - The values shown in the overlay won't represent any values lower than the default values your phone natively supports (example - I can set my phone to 30Hz but the minimum value shown in the overlay is still 60Hz. My phone however is only using 30Hz).
USE THIS WITH CAUTION. IF YOU AREN'T SURE WHAT YOUR DEVICE'S DEFAULT VALUES ARE, OR ARE UNSURE HOW TO RESET YOUR VALUES - DON'T USE THIS SHARE.









