// OPENBOX DOCS
Handheld performance
Apply optional per-launch handheld performance profiles.
Performance profiles apply a TDP limit through ryzenadj before a game launches, and optionally restore a configured value when the session ends. They are per launch profile: either a platform profile or a per-game launch profile override.
Setup
In Emulators, after a profile exists (for example GameCube = dolphin-emu -b -e {path}), the Handheld performance section lists each profile with:
- Enable TDP checkbox
- Limit (W): the TDP applied at launch (0-60, step 0.5)
- Restore (W): the TDP applied when the session ends (0-60, step 0.5)
Limits are stored in watts and converted to milliwatts for ryzenadj -stapm-limit=<mW>. A profile with only a limit and no restore value applies the limit at launch and does nothing on close.
When limits apply
The Apply handheld performance limits setting (Settings) has three modes:
auto(default): applies only when OpenBoxGL detects a gamescope guest (Steam Deck / Bazzite game mode) or a battery-powered host (/sys/class/power_supply/BAT*present).always: applies on any host.off: never applies.
Because auto gates on battery or gamescope, a desktop session never applies or restores a limit. The same gating decides restore, so a session that never applied a limit does not try to restore one.
Failure behavior
Missing ryzenadj on PATH, a permission failure, a non-Ryzen CPU, or a malformed TDP value are logged as warnings and do not block the game launch. The apply and restore helpers never raise; the profile resolution falls back from a per-game launch_profile override to the game's platform when the override does not name an existing profile.
Safety
Hardware-specific permissions remain host configuration; OpenBoxGL stores no root credential. ryzenadj runs with a 10-second timeout and only ever receives -stapm-limit=<mW> arguments. If the limit should not persist, configure a restore value so the session end restores it; keep in mind the restore is skipped when the apply was skipped under auto.