ClusterTune

Project Url: AurelioB/ClusterTune
Introduction: ClusterTune is an Android utility for tuning CPU frequency limits on supported handheld devices. It lets you adjust CPU clusters, save performance profiles, and access quick controls from an Android Quick Settings tile.
More: Author   ReportBugs   
Tags:

ClusterTune

GitHub Downloads (all assets, all releases) GitHub Release

Buy Me a Coffee at ko-fi.com

ClusterTune is an Android utility for tuning CPU frequency limits on supported handheld devices. It lets you adjust CPU clusters, save performance profiles, and access quick controls from an Android Quick Settings tile.

The app has been tested with the AYN Odin 3, but should be compatible with other AYN and Retroid devices.

ClusterTune does not require Magisk or user-granted root access. It relies on the device's built-in PServer service, where available.

[!WARNING] ClusterTune changes CPU frequency limits. This may affect device stability, thermals, battery life, and performance, and I cannot guarantee that it is safe for your hardware or beneficial for your use case. Use it only if you understand what CPU frequency limits do and are comfortable accepting the risk.

ClusterTune underclocks by setting lower maximum CPU frequencies. It does not undervolt the CPU, and it is not an adaptive governor; it simply caps how fast each CPU cluster is allowed to run.

Lower CPU frequency caps can reduce power draw, which may help lower temperatures, quiet the fan, and extend battery life. In some games, reducing CPU power and heat may also leave more thermal or power headroom for the GPU, especially when the game is GPU-bound.

Screenshots

Main app Profile editor
ClusterTune main app view ClusterTune profile editor dialog
Quick Settings tile dialog Settings
ClusterTune Quick Settings tile dialog ClusterTune settings view

Features

  • Tune CPU clusters with per-cluster frequency sliders.
  • View the currently applied frequency cap for each cluster.
  • Save, edit, delete, reorder, import, and export profiles.
  • Use bundled profiles for supported devices.
  • Reapply the last profile on boot.
  • Quick Settings tile for fast access.
  • Customizable quick tile behavior

Requirements

  • Android 12+ (minSdk 31).
  • A compatible handheld with the PServer service, such as supported AYN and Retroid devices.

Build

./gradlew assembleDebug

Run unit tests:

./gradlew testDebugUnitTest

Run both:

./gradlew testDebugUnitTest assembleDebug

The debug APK is produced under:

app/build/outputs/apk/debug/

Project Structure

app/src/main/java/com/aure/clustertune/
  data/       detection, storage, bundled profiles, repository
  model/      app state and profile models
  root/       PServer access and command execution
  tile/       Quick Settings tile and add-tile prompt
  ui/         Compose screens, dialogs, settings, theme
  boot/       boot completed receiver

app/src/main/assets/bundled_profiles/
  <SoC model>.json

Bundled Profiles

Bundled profiles are stored as SoC-specific JSON files:

app/src/main/assets/bundled_profiles/CQ8725S.json

The filename should match the detected SoC model, such as ro.soc.model.

Example:

{
  "schemaVersion": 1,
  "socModel": "CQ8725S",
  "profiles": [
    {
      "id": "bundled_cq8725s_small",
      "name": "Small Underclock",
      "maxFrequencies": {
        "0": 2745600,
        "6": 3072000
      }
    }
  ]
}

Exported profiles follow the same schema.

Notes For Contributors

  • UI refers to cpufreq policies as CPU clusters, but internal code keeps policy naming because it matches Linux/sysfs terminology.
  • ClusterTune uses the device's PServer service to read and write protected CPU frequency controls. It does not ask the user for root access.

License and Attribution

ClusterTune is distributed under the terms of the GNU General Public License v2.0.

The RootExec / PServer command execution code in this project is based on code from O2P Tweaks by FeralAI, which is also licensed under the GNU General Public License v2.0.

ClusterTune was inspired by the Odin 3 underclocking scripts published in TheOldTaylor/Odin3-CPU-Underclock. The original underclocking idea was shared by Reddit users u/twoohfive205 and u/JoaozaoS in this r/OdinHandheld comment.

AI Assistance Disclosure

I used AI assistance while building this project. Software development is my day job, and I reviewed the code throughout the process. I understand how the app works and what it does.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest