While Bazzite handles most things through the HHD Overlay (accessible by double-tapping your side menu button), the underlying configuration ensures that your TDP limits ($P_{limit}$) and fan curves are locked for high-speed performance.
File Path
The configuration for the Handheld Daemon and gaming-specific overrides is typically found in the following directory:
~/.config/hhd/state.json (for modern HHD-based Bazzite) or /etc/bazzite/gaming.conf
Technical Note: In 2026, Bazzite is “Atomic,” meaning you should use the ujust command or the HHD desktop app to apply changes if you don’t want to manually edit JSON files. To edit the system-level config, use sudo nano.
Optimized “Performance Priority” Configuration (HHD/Gaming)
This configuration ensures the GPU gets priority during heavy loads and forces the controller into a “DualSense Edge” mode for the lowest possible latency and best gyro support.
| Parameter | Recommended Value | Technical Purpose |
controller_emulation | ds_edge | Enables back-paddles and the lowest input polling rate. |
tdp_limit | 30 | Sets the ceiling for “Turbo” mode on Z1/Z2 Extreme chips. |
gpu_performance_level | high | Forces the Vulkan driver to stay in a high-power state. |
smt | off | The Stutter Fix. Disabling SMT can boost 1% lows in many games. |
governor | performance | Prevents CPU frequency scaling delays ($T_{freq}$). |
{
"hhd": {
"controller": {
"mode": "ds_edge",
"gyro": true,
"back_buttons": "enabled"
},
"power": {
"tdp_balance": "performance",
"max_tdp": 30,
"min_tdp": 15
},
"display": {
"vrr_enabled": true
}
}
}
HowTo: Engineering Maximum Handheld Efficiency
Follow these GameEngineer.net technical steps to optimize your Bazzite experience:
- The “ujust” Mastery: Open a terminal and run
ujust setup-decky. This installs the SimpleDeckyTDP plugin. In 2026, this is the most reliable way to manage TDP on-the-fly without leaving Steam Gaming Mode. - GPU Frequency Locking: In the Bazzite/Steam overlay, set a Manual GPU Clock. For the ROG Ally X or Legion Go, locking the GPU to 1600MHz–2000MHz prevents the CPU from “stealing” too much power, which is the #1 cause of frame drops in AAA games.
- VRAM Management (BIOS): Ensure your BIOS is set to 6GB or 8GB of VRAM. Bazzite’s Mesa drivers perform best when they have a large, dedicated hardware buffer, especially in 2026 titles like Kingdom Come: Deliverance 2.
- SMT Toggling: For emulators (Switch/PS3) or older games, use the PowerControl plugin to turn SMT OFF. This gives each physical core more cache access ($L3_{cache}$), significantly increasing performance in CPU-bound scenarios.
- Fan Curve Engineering: Bazzite defaults can be loud. Use the HHD Desktop app to set a “Stealth” curve that stays at 20% until the APU hits $75^\circ\text{C}$, then ramps aggressively. This protects the hardware while maintaining a console-like noise profile.
Technical Explanation: TDP Balancing and the Power Envelope
Handhelds operate within a strict Power Envelope ($P_{total}$).
Mathematically: $P_{total} = P_{cpu} + P_{gpu} + P_{other}$.
When you set tdp_limit=30 in Bazzite, you are defining the $P_{total}$. The internal System Management Unit (SMU) must decide how to split that 30W. By setting the gpu_performance_level to high in your config, you tell the driver to shift the balance. If the GPU requires 20W to hit the 60 FPS target, the CPU is restricted to the remaining 10W. On the Ryzen Z1/Z2 architecture, this “GPU-heavy” bias is essential because the RDNA3/3.5 compute units are much hungrier than the Zen 4/5 CPU cores.