Skip to content

Steam Controller: phantom noise simultaneously triggers left stick + dpad down + A #23

@petegordon

Description

@petegordon

Observed

On the Steam Controller (2026, USB-C direct via PID 0x1302), three specific inputs report phantom activity at the same time, continually:

  • Left joystick — analog axis jitter
  • Dpad down — button-pressed events firing
  • A button — button-pressed events firing

The noise is intermittent and doesn't follow a consistent pattern — it's not a steady drip, it's not synchronized to any obvious external event. But when it does fire, all three light up together.

Why this is suspicious

The fact that these three specifically cluster — instead of random noise across every input — strongly suggests a parsing / decoding issue rather than electrical noise from the controller. Real hardware noise would be more uniform (e.g. just the stick drifting, or all buttons twitching). Three unrelated inputs firing together points to either:

  1. A shared decode path in `packages/core/src/drivers/steam-controller-driver.js` parseReport where one byte / bit is being read into multiple slots
  2. Misaligned byte offsets — e.g. the bytes the driver reads for the left stick happen to overlap something that toggles when A or dpad-down is actually pressed
  3. An init-time race where the report buffer hasn't fully populated, so we're reading stale bytes that look like "A + dpad-down pressed"

Worth verifying that the Steam Controller's STATE report byte layout for these three slots is genuinely independent and that the driver isn't aliasing them.

To reproduce

  • Plug in the 2026 Steam Controller via USB-C direct (not via Puck), confirm it enumerates as PID `0x1302`
  • Open the visualizer with the steam-controller profile selected, idle (don't touch any inputs)
  • Watch the HUD / 3D animation — phantom A presses, dpad-down presses, and left-stick movement fire intermittently with no input

Not reproducible on demand (no consistent trigger pattern), but happens continually during normal use.

Investigation ideas

  1. Raw HID dump while idle. Add a temporary `console.log(Array.from(data))` at the top of `SteamControllerDriver.parseReport` and capture ~30 seconds of idle frames. Diff the bytes between "phantom-fire" frames and "clean" frames to localize which byte(s) actually toggle.
  2. Cross-check the byte offsets for left-stick axes (currently bytes 9-12 IIRC), A button (`btn0` bit), and dpad-down (`btn1 & 0x04`) against the known Steam Controller STATE report layout. Look for accidental overlap.
  3. Test through a different USB cable / port. Rules out cable-level electrical noise as a confounder before chasing parsing bugs.
  4. Compare against the Puck path (`0x1300` / `0x1301`) if connectable — if the phantom inputs disappear there, it's the direct-USB parser; if they persist, it's something earlier in the chain.

Acceptance criteria

  • Root cause identified (driver parsing bug, USB-level noise, or controller hardware)
  • Idle controller stays at 0 inputs for at least 60s continuously in the visualizer
  • Fix verified against the same controller + cable that exhibits the noise

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions