OpenPuck Config

nRF52840 Steam Controller 2 puck reimplementation — WebUSB. Chrome/Edge only.

disconnected

If nothing appears in the device picker, OpenPuck may be busy, already claimed by another app, or needs a replug. This page also works when published through GitHub Pages because WebUSB only requires a secure context.

USB mode

Switching reboots OpenPuck and re-enumerates USB (~2 s). The RF link reconnects automatically.

Off (default): every restart / fresh reconnect boots into Steam mode. On: remembers the last mode you selected.

Link status

RF link
Slot
—
Delivered
—
New reports
—

RF poll rate

Microseconds between RF polls (×100). Lower = poll harder = more fresh reports/s (peaks ~60/s near 700 µs). Too aggressive can collapse the reply rate during heavy trackpad use — watch the “New reports” stat and trackpad feel as you tune.

Steam-mode report dedupe

Only send report 0x45 to Steam when the data actually changed (like the real puck).

We were sending ~400 stale-repeat reports/s on top of ~100 real ones — Steam's trackpad smoothing stair-steps on the duplicates. ON = dedupe (puck-like). Toggle OFF to compare the old jittery behavior.

QoS adaptive channel hopping

When the RF link degrades (crcfail/no-reply spikes during trackpad), hop to a clean channel — like the real puck.

Candidates {18,46,76,22,68}. Conservative (hops at most every ~2s) to avoid blip-storms; each hop has a brief ~0.5–1s re-sync blip. A/B it during heavy trackpad — watch crcfail and the feel.

Xbox-mode trackpad mouse

Sensitivity is a divisor — lower = faster pointer. Glide = how long the cursor coasts after a flick.

Steam-mode trackpad smoothing

Interpolation alpha. 100 = off (raw 46 Hz capsense), lower = smoother but slightly laggier.

Button mapping

Nintendo layout (affects Xbox & Switch modes)

Back-paddle → button, applied in Xbox mode.