FrameX
1.5.25 · GitHub
More about this app
Real-time performance overlay for Android
FrameX

Rootless Android performance overlay featuring live FPS metering, thermal diagnostics, and privileged gaming optimization via Shizuku.
Note
Gaming Performance Mode adapts dynamically based on your device hardware:
- Generic / Non-Vivo Devices: Applies standard AOSP optimizations (RAM cache purge, CPU process priority locks, network/doze bypass, and display/touch boosts).
- Vivo / iQOO (Hardware Optimizations ON): Activates the verified OriginOS/FuntouchOS hardware suite (1080p @ 120Hz Mode 4 lock, RMS display arbitration, touch boost, and OEM daemon whitelisting).
- Vivo / iQOO (Hardware Optimizations OFF): Safely executes only non-invasive baseline tweaks (RAM cache purge, background app suspension, and DND). Generic AOSP display/thermal overrides are deliberately bypassed to protect against 60Hz lockouts and RMS arbitration conflicts.
Important
Encountering "Parse Failed" or "Unsupported Hardware"?
If thermal monitoring displays "Parse Failed" or "Unsupported Hardware" on your device:
- Clone the repository and install the Debug APK (
./gradlew installDebug) or download FrameX-v1.5.16-debug.apk. (Release builds strip diagnostic logs via ProGuard). - Open the Thermal Diagnostics screen in FrameX.
- Run the following ADB commands to capture complete diagnostics:
(On Windows PowerShell for Step 1:# 1. Capture FrameX internal thermal logs adb logcat -d | grep -E "ThermalMonitor|CmdRunner" # 2. Capture raw system thermal HAL dump adb shell dumpsys thermalservice # 3. Capture sysfs thermal zones (if dumpsys is empty/HAL Ready: false) adb shell "for z in /sys/class/thermal/thermal_zone*; do echo \"\$(cat \$z/type 2>/dev/null):\$(cat \$z/temp 2>/dev/null)\"; done"adb logcat -d | Select-String -Pattern "ThermalMonitor|CmdRunner") - Open a GitHub Issue attaching the outputs above along with your device model, SoC, and Android/ROM version.
What it does
FrameX displays a fully customizable, low-overhead overlay on top of any application or full-screen title.
| Category | Telemetry & Features |
|---|---|
| Real-Time Telemetry | FPS · CPU Frequencies · Thermals (CPU/GPU/Skin/NPU/Battery) · RAM Usage · Network Speed · Ping |
| System Optimization | • Crash-Safe Snapshots: Automatic pre-game setting capture & auto-revert on exit • Process Management: Background app suspension & Doze CPU whitelisting • Emergency Safety: One-swipe reset slider to purge overrides back to stock OS defaults |
| OEM Hardware Locks | • Vivo OriginOS Engine: Forces hardware Mode 4 (\(1080 \times 2400\) @ 120Hz) lock • Triple Whitelisting: Automatic injection across 4 native OriginOS game-booster daemons |
Requirements
- Android 8.0 (API 26) or higher
- Shizuku installed and running
- Activate via Wireless Debugging (no PC needed on Android 11+) or ADB
- Works with the Sui module on rooted devices
Screenshots
![]() Onboarding 1 |
![]() Onboarding 2 |
![]() Dashboard (No Setup) |
![]() Dashboard (Running) |
![]() System Setup |
![]() Overlay Config |
![]() Appearance Settings |
![]() Performance Mode |
![]() Thermal Diagnostics |
![]() About & Legal |
How FPS is measured
FrameX measures frame rates directly at the Android OS compositor layer using privileged IPC calls to SurfaceFlinger --timestats. Because telemetry is gathered directly from the display pipeline, it adds zero overhead to game rendering threads or GPU pipelines.
Build
Standard Android Gradle project. Requires JDK 17 and Android SDK 34.
git clone https://github.com/MaheshSharan/FrameX-Android.git
cd FrameX-Android
./gradlew assembleDebug
Permissions
| Permission | Why |
|---|---|
| Draw over other apps | Display the overlay on top of games |
| Foreground service | Keep the overlay alive while the screen is on |
| Wake lock | Prevent CPU sleep during an active session |
| PACKAGE_USAGE_STATS | Identify which game is in the foreground |
| REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | Survive aggressive OEM background-kill policies |
| Receive boot completed | Auto-restart overlay after reboot if it was active |
| Internet | Ping measurement to 8.8.8.8 (Google Public DNS) only |
| Kill background processes | Used to purge cached background apps during Gaming Mode activation |
| Access notification policy | Required to toggle Do Not Disturb mode automatically |
| Modify system settings | Required to deploy per-game brightness, volume, and rotation overrides |
| Foreground service (Special Use) | Ensures Gaming Mode stays active on Android 14+ |
| Post Notifications (Android 13+) | Display session status & quick-control notification controls |
| QUERY_ALL_PACKAGES | Load installed games and apps for Game Launcher optimization |
| Shizuku Privileged API | High-precision FPS metering (SurfaceFlinger), multi-sensor thermal diagnostics (IThermalService), ART RAM heap compaction, and OriginOS Esports hardware engine |
Security & Privacy
- No data collection — nothing is sent anywhere
- No analytics — no Firebase, no Crashlytics, no tracking SDKs
- No accounts — FrameX has no sign-in or user identity
- No ads — ever
- All data stays on-device
Known Limitations
A small number of metrics depend on data some device vendors don't expose. See KNOWN_LIMITATIONS.md for confirmed cases and affected devices.
Credits
- Shizuku by RikkaW — the privileged API bridge that makes rootless system access possible. FrameX would not exist without it.
License
This project is licensed under the MIT License - see the LICENSE file for details.
How Shizuku is used
Can boost games, freeze background apps, free RAM and show live FPS, CPU, thermal and ping stats via Shizuku shell commands
This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.
How this app uses Shizuku
FrameX uses Shizuku to run privileged shell commands and system queries that power its gaming mode and live performance overlay.
- Show live frame rate: reads the on screen frame average and missed frames with
dumpsys SurfaceFlinger --timestatsthrough Shizuku for the FPS overlay. - Show CPU usage: reads total CPU time via the privileged
/proc/statpath through Shizuku and parses system wide usage, plus lists hot apps withdumpsys cpuinfothrough Shizuku. - Show temperatures: reads sensor data through the privileged service using the thermal service,
dumpsys thermalserviceand thermal sysfs plusgetprop sys.thermal.statusthrough Shizuku for CPU, GPU, skin and battery temps. - Show ping: runs
pingthrough Shizuku to measure latency to 8.8.8.8 for the overlay. - Freeze background apps: suspends and unsuspends selected background packages with
cmd package suspendandcmd package unsuspendthrough Shizuku when gaming mode starts and stops. - Apply gaming tweaks: tunes memory, thermals, CPU priority, network and power with
pm trim-caches,am compact,cmd thermalservice override-statusandreset,cmd activity set-bg-restriction-level,am set-standby-bucket,cmd netpolicy,cmd deviceidle,cmd power set-fixed-performance-mode-enabledandcmd pinnerthrough Shizuku. - Lock refresh rate and touch: saves current values with
settings getthen applies and restorespeak_refresh_rate,min_refresh_rate,touch_response_speedanduser_preferred_display_mode_idwithsettings putandsettings deletethrough Shizuku. - Tune Vivo and iQOO phones: writes Vivo power, display, gyro, touch, scheduler and game list settings with
content insert,content queryandcontent delete, pluscmd device_config,pidof,dumpsys packageandpm compilethrough Shizuku. - Free RAM on demand: clears caches with
pm trim-caches, stops non whitelisted user apps witham force-stopand purges background processes witham kill-allthrough Shizuku from the manual boost action.
Android APIs or commands used
dumpsys SurfaceFlinger --timestatscat /proc/stat/proc/statandroid.os.ServiceManager.getServiceandroid.os.IThermalServicedumpsys thermalservicegetprop sys.thermal.status/sys/class/thermal/thermal_zone*/sys/class/thermal/cooling_device*dumpsys cpuinfopingcmd package suspendcmd package unsuspendpm trim-cachesam compactcmd pinner repincmd thermalservice override-statuscmd thermalservice resetcmd activity set-bg-restriction-levelam set-standby-bucketcmd netpolicycmd deviceidle whitelistcmd deviceidle force-idlecmd deviceidle unforcecmd power set-fixed-performance-mode-enabledcmd game resetsettings getsettings putsettings deletecontent insertcontent querycontent deletecmd device_config putpidofdumpsys packagepm compileam force-stopam kill-all
Notable details
CPU, ping and thermal overlays keep working in limited form without Shizuku by reading local proc files directly, running a local ping or socket probe, or using the normal thermal status API. Manual RAM boost still runs garbage collection without Shizuku. App updates install without Shizuku via a PackageInstaller session plus the unknown app sources settings screen. The privileged app ops control helper is present but has no active callers, so no related capability is exposed.
Changelog
What's new for version 1.5.25
FrameX v1.5.25 (BETA)
⚠️ Beta build. If you hit any problem, please open an issue and include the Audit Console log (Performance screen).
What's new
- Thermal throttling override is now fully opt-in. A new "Execution Center" section (About screen) shows exactly what privileged overrides Gaming Mode will apply, with a clear on/off switch and safety notes before anything touches your device's thermal limits. (#85)
- Quick Settings tile: toggle the overlay on/off directly from your notification shade, no need to open the app. (#80)
- Overlay: battery %, clock, and session timer are now available as overlay modules, each with its own icon. (#82)
- Overlay: mute the "CPU hot" warning. You can now disable the high-temperature popup from settings if you don't want to be interrupted. (#82)
- Overlay layout rebuilt for multi-metric setups:
- Expanded mode no longer stretches across the screen with large gaps — width is now bounded and columns stay aligned. (#77)
- Minimal and Compact modes no longer balloon in height when 4+ metrics are enabled; overlay wraps cleanly into rows instead of overflowing or breaking layout. (#77)
- Fixed CPU Clusters label/value taking up excessive space in the overlay.
Improvements
- Accessibility improvements across Dashboard, Onboarding, Permissions, Appearance, Overlay Customization, and About screens (better screen-reader labels, touch targets).
- Smoother entrance animations on Onboarding and About/Splash screens.
- Fixed a bug where freed memory (MB) was reported incorrectly after RAM cleanup on the Performance screen
Permissions
19 permissions requested









