Blog

PIN pairing that can't be brute-forced: SPAKE2 for game streaming

A 4-digit PIN sounds weak — only 10,000 combinations. Here's how punktfunk pairs a new device with a PIN you can type from the couch while giving an attacker just one online guess and no offline dictionary attack, using a PAKE that binds both devices' certificates.

Low-latency game streaming when the game is maxing out your GPU

The hardest case for any streaming host is the one that matters most: a demanding game already pinning the GPU. Here's why the encoder ends up waiting — and the two levers that took our encode time from ~30 ms to ~4 ms.

Why we wrote our own virtual display driver for game streaming

Headless streaming needs a virtual display — and the off-the-shelf ones fight Secure Boot, skip HDR, and still need a separate capture step. So we wrote our own: a signed, all-Rust Windows display driver that renders at your client’s exact resolution, carries HDR, and feeds the encoder directly.

IDD-push: streaming game capture without Desktop Duplication or WGC

Most self-hosted streaming hosts capture your screen with Desktop Duplication (DDA) or Windows.Graphics.Capture (WGC) — and inherit their blind spots. punktfunk captures a different way: the virtual display driver pushes finished frames straight to the encoder.

Why HDR works in DirectX games but not Vulkan games on a virtual display

On a streaming virtual display, Windows HDR and DirectX 12 games look fine, but Vulkan games say “HDR not supported.” Here’s the reason — and a two-minute way to confirm it with vulkaninfo.

Fixing Vulkan HDR on virtual displays: a Vulkan layer that does what the GPU driver won’t

NVIDIA/AMD Vulkan drivers hide HDR on indirect (virtual) displays, so Vulkan games refuse HDR when streaming. We proved the driver still presents a forced HDR swapchain — and shipped a tiny Vulkan layer that injects the missing formats. The full engineering story.

Vulkan games say “HDR not supported” when streaming on a virtual display? Here’s the fix

Doom: The Dark Ages and other Vulkan games refuse HDR when game-streaming through a virtual display — even though Windows HDR is on. Here’s why, and how to actually fix it.

Crisp text and 4:4:4 chroma for desktop and game streaming

Small text and thin UI lines looking blurry or fringed when streamed? That's chroma subsampling. What 4:2:0 vs 4:4:4 means, when 4:4:4 is worth the bandwidth, and how punktfunk handles it.

Controllers, gyro, and haptics over the network

Controller not detected, no rumble, gyro and touchpad ignored? How punktfunk forwards gamepads — including DualSense gyro, touchpad, haptics, and adaptive triggers — across its native clients.

Fixing crackling, desynced, and missing surround audio

Crackling audio, no sound, A/V drift, or surround collapsed to stereo when streaming? The usual causes — routing, sample rates, clocks, downmix — and how punktfunk keeps audio clean and in sync.

Multi-monitor hosts: streaming the right screen, every time

Streaming from a multi-monitor PC and getting the wrong display, black bars, or a cursor that wanders off? Here's why, and how punktfunk gives the client one clean virtual display.

The best self-hosted game streaming setups in 2026

A fair roundup of self-hosted game streaming in 2026 — Sunshine/Moonlight, Apollo/Artemis, Parsec, Steam Link, and punktfunk — with the best pick for each use case.

Punktfunk vs Sunshine + Moonlight: an honest comparison

Sunshine + Moonlight is the beloved open-source self-hosted streaming stack. Where Punktfunk differs — virtual displays, HDR, native clients, a Rust transport — and where Sunshine still wins.

PC game streaming on the Steam Deck, native through Decky

Stop wrestling Moonlight into Game Mode as a non-Steam game. punktfunk's Decky plugin puts PC streaming right in the Deck's UI — controller-native, suspend/resume aware.

Streaming ultrawide and 32:9 without resolution roulette

Black bars, wrong aspect ratios, and missing modes plague ultrawide game streaming. How punktfunk streams arbitrary resolutions natively — up to 5120×1440 at 240 fps.

HDR game streaming that actually looks like HDR

Why streamed HDR over Sunshine/Moonlight comes out washed out — tone-mapping, broken 10-bit pipelines, capability negotiation — and how punktfunk keeps HDR intact end to end.

Virtual displays and headless game streaming on Linux — without the EDID hacks

Why Sunshine has no first-class virtual display on Linux, the EDID/modeline hacks people resort to, and how punktfunk spins one up on demand — sized to your client.