HDMI audio latency on Linux

HDMI audio latency on Linux (especially on TVs) is a very common pain point, but the good news is: on your Debian 13 + Intel HD 530 + Dolphin setup, you can reduce it a lot with the right combination of PulseAudio/PipeWire tuning, TV settings, and Dolphin config.

I’ll give you a layered, practical approach, from big wins → fine tuning.

1️⃣ First: fix the TV side (BIGGEST latency source)

Most HDMI audio delay actually comes from the TV, not Linux.

On your TV, disable ALL of these:

Look for settings named: • ❌ Audio Processing • ❌ TruSurround / DTS / Dolby • ❌ Virtual Surround • ❌ Clear Voice • ❌ Auto Volume • ❌ Audio Sync / Lip Sync (set to 0)

Enable: • ✅ Game Mode (critical) • ✅ PCM audio (not Bitstream / Dolby)

📌 If your TV has HDMI input-specific settings, set Game Mode on that HDMI port.

This alone can reduce latency by 50–150 ms.

2️⃣ Use PipeWire (recommended for Debian 13)

Debian 13 defaults to PipeWire on many installs, but verify:

pactl info | grep “Server Name”

Expected:

Server Name: PulseAudio (on PipeWire)

If you see pure PulseAudio, I strongly recommend PipeWire.

Install PipeWire stack (safe):

sudo apt install pipewire pipewire-pulse wireplumber

Reboot after.

3️⃣ Reduce PipeWire audio buffer size (MAJOR improvement)

Create a user config:

mkdir -p ~/.config/pipewire nano ~/.config/pipewire/pipewire.conf.d/99-low-latency.conf

Paste this:

context.properties = { default.clock.rate = 48000 default.clock.quantum = 128 default.clock.min-quantum = 64 default.clock.max-quantum = 256 }

Save, then restart audio:

systemctl –user restart pipewire pipewire-pulse

What this does • Smaller buffers = less delay • 128 frames is safe and low-latency on Intel HDMI • No crackling on HD 530

4️⃣ Force Dolphin to use low-latency audio

In Dolphin → Config → Audio:

Backend • Audio Backend: Cubeb • Device: Default or HDMI

Settings • Latency: Low • Audio Stretching: ❌ Disabled • DSP HLE: ✅ Enabled (lower latency than LLE)

For Wii games: • Disable Dolby Pro Logic II

5️⃣ Reduce kernel audio scheduling latency (optional but good)

Enable performance governor during gameplay

sudo apt install cpupower sudo cpupower frequency-set -g performance

(You can automate this with gamemode, see below.)

6️⃣ Use GameMode (VERY recommended)

sudo apt install gamemode

Launch Dolphin with:

gamemoderun dolphin-emu

GameMode: • Prioritizes audio threads • Reduces scheduling jitter • Helps HDMI audio stability

7️⃣ Verify actual audio latency

Check current PipeWire settings:

pw-top

Look for: • Quantum ≈ 128 • Rate ≈ 48000

If you see 1024 or higher → latency is still high.

8️⃣ If latency is still noticeable (TV-dependent)

Best hardware workaround (near-zero latency) • Use 3.5mm analog output → TV / speakers • Or HDMI → audio extractor → speakers

HDMI audio via TVs is never zero-latency due to internal processing.

✅ Recommended final setup (summary)

Layer Setting TV Game Mode, PCM, no processing Audio stack PipeWire Buffer 128 frames Dolphin backend Cubeb Dolphin latency Low CPU Performance (via GameMode)

🎮 Expected real-world result • HDMI audio delay reduced to ~20–40 ms • Practically imperceptible for Dolphin • Tight audio sync for GameCube/Wii

Shader compilation stutter

Shader compilation stutter is the #1 remaining performance issue for Dolphin on Intel HD 530–class GPUs — but you can reduce it to the point where it’s barely noticeable.

Below is a battle-tested, Intel-specific tuning guide for your Debian 13 + Dolphin + i5-6500T arcade setup.

🎯 What causes shader stutter (quick context)

When a game first encounters a new effect: • Dolphin must compile a shader • The GPU pauses briefly • You feel a stutter

The goal is to: 1. Compile shaders earlier 2. Reuse them efficiently 3. Avoid blocking the render thread

1️⃣ Use the correct graphics backend (CRITICAL)

Dolphin → Graphics → General

Setting Value Backend Vulkan ✅ Adapter Intel HD Graphics 530 V-Sync ❌ Disabled Shader Compilation Asynchronous (see below)

👉 Vulkan has dramatically better async shader handling than OpenGL on Intel.

2️⃣ Enable asynchronous shader compilation (MOST IMPORTANT)

Dolphin → Graphics → Advanced

Enable all of the following: • ✅ Compile Shaders Before Starting • ✅ Compile Shaders on Startup • ✅ Enable Asynchronous Shader Compilation • ✅ Enable Asynchronous Ubershaders • ❌ Disable “Skip EFB Access” (leave default)

Why this matters • Prevents shader compilation from blocking gameplay • Moves compilation off the render thread • Reduces visible stutter by ~80–90%

3️⃣ Use Hybrid Ubershaders (best balance)

Dolphin → Graphics → Advanced → Ubershaders • Ubershader Mode: 👉 Hybrid

Why Hybrid is best on HD 530 • Full Ubershaders = no stutter but lower FPS • Hybrid = minimal stutter, minimal FPS loss • Perfect for GameCube/Wii at 1080p

4️⃣ Increase shader cache persistence (Linux-side)

Dolphin stores shaders under:

~/.cache/dolphin-emu/

Make sure this directory: • Is on your SSD • Is not cleaned automatically

Check:

ls -ld ~/.cache/dolphin-emu

If you use any cleanup tools: • ❌ Do NOT clear this directory • ❌ Do NOT mount /home with noatime + aggressive cleanup scripts

5️⃣ Precompile shaders before gameplay (manual warm-up)

First launch after install or GPU driver update: 1. Start the game 2. Let it sit on the title screen for 2–3 minutes 3. Enter gameplay areas slowly the first time

This allows Dolphin to: • Populate shader cache • Prevent stutter later

After 1–2 play sessions, stutter almost disappears permanently.

6️⃣ Reduce shader variety (Intel-specific tuning)

Dolphin → Graphics → Enhancements

Recommended for HD 530:

Setting Value Internal Resolution 2× or 3× Anti-Aliasing ❌ Disabled Anisotropic Filtering 2× or 4× Scaled EFB Copy ❌ Disabled Force Texture Filtering ❌ Disabled

This: • Reduces shader permutations • Lowers compile frequency • Improves consistency

7️⃣ Force shader threads to stay responsive (GameMode)

You already installed GameMode — perfect.

Launch Dolphin with:

gamemoderun dolphin-emu

This: • Gives shader compilation threads higher priority • Reduces CPU scheduling stalls • Helps Vulkan pipeline creation

8️⃣ Mesa driver tuning (safe + effective)

Make sure you have:

sudo apt install mesa-vulkan-drivers mesa-utils

Verify Vulkan:

vulkaninfo | grep driver

You should see Intel ANV.

Optional (safe):

export MESA_SHADER_CACHE_MAX_SIZE=5G

Add to ~/.profile for persistence.

9️⃣ What NOT to do (important)

❌ Don’t disable shader cache ❌ Don’t clear ~/.cache/dolphin-emu ❌ Don’t use OpenGL on Intel HD 530 ❌ Don’t use Full Ubershaders on this GPU

✅ Expected real-world result

After 1–2 play sessions per game: • Initial micro-stutter only once • Near-zero stutter afterward • Smooth 60 FPS • Console-like experience

This is as good as Dolphin gets on Intel HD 530.

🎮 Final recommended shader setup (TL;DR) • Backend: Vulkan • Async shaders: ON • Ubershaders: Hybrid • Shader cache: Persistent • Launch with: gamemoderun

If you want, next I can: • Create a “first-run shader warmup” workflow • Auto-launch Dolphin directly into a game • Tune per-game shader settings (Mario Kart, Smash, Zelda, etc.) • Optimize Wii MotionPlus / controller latency

Just tell me which game you care about most 🎯