OpenPuck Config

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

disconnected

If nothing appears in the device picker, the copycat may be busy (quit any app holding it) or needs a replug. Serve this page over http://localhost (e.g. python3 -m http.server 8008) — WebUSB needs a secure context.

USB mode

Switching reboots the copycat and re-enumerates USB (~2 s). The RF link reconnects automatically. Desktop keyboard+mouse (lizard) is automatic in Steam mode whenever Steam is closed — no separate mode.

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.

Trackpad mouse (lizard + Xbox)

Right-pad cursor in Steam-mode lizard (Steam closed) and in Xbox mode. 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 & Switch modes.