Skip to content

Steam Controller 2026: identify + parse via WebHID without Steam Input #8

@petegordon

Description

@petegordon

Tracking the technical hurdle for getting the 2026 Steam Controller working in the lab. Valve's official integration path is Steam Input, but we want raw WebHID access so the controller works in the overlay without requiring Steam to be running.

What we know

  • Valve USB vendor ID: 0x28de
  • 2026 Steam Controller product ID: TBD — needs capture from a real device. Original 2015 Steam Controller was 0x1102 (USB) / 0x1142 (wireless dongle); Steam Deck's embedded controller is 0x1205. The 2026 device is likely a new pid.
  • CAD already in hand: gitlab.steamos.cloud/SteamHardware/SteamController (CC BY-NC-SA 4.0). GLB conversion + visualizer profile shipped in PR Steam Controller 2026 visualizer (Valve CAD → optimized GLB) #6 (steam-controller.glb, body-only).
  • Driver stub already in repo: packages/core/src/drivers/steam-controller-driver.js — currently identity-only, no protocol parsing.
  • Pending DEVICES entry: PENDING_DEVICES['Steam Controller 2026'] in devices.js waits for the captured pid to be promoted to DEVICES.

What we don't know

  • Whether the controller is exposed to WebHID at all when Steam is running (Steam Input typically grabs exclusive HID access).
  • Whether the new device speaks Valve's Steam Input HID protocol (custom binary, well-documented for the 2015 Steam Controller) or something else.
  • Whether the Gamepad API sees it natively in any mode (without Steam Input, Chromium probably doesn't have a built-in mapping for the Valve layout).
  • The product-id under each operating mode (the controller may have multiple modes — Steam Input mode, BLE mode, dongle, etc.).

Approach options

  1. Field a Test Report capture (current ask): open the overlay with the controller plugged in, run the Test Report wizard if it triggers, or capture the raw HID input reports via a one-off DevTools console probe. Goal: learn the vid:pid + report shape.
  2. Reuse the 2015 Steam Controller HID protocol as a starting point if the 2026 device shares the layout. Linux kernel has hid-steam.c as a reference; community documentation at https://gitlab.com/open-source-devices/steam-controller.
  3. Steam-running compatibility: document whether the user needs to kill Steam / disable Steam Input gamepad detection for the lab to see the device. May not be solvable from our side.
  4. BLE mode: 2026 device supports Bluetooth — BLE-GATT exposure may differ from USB HID; needs separate investigation.

Acceptance criteria

  • Captured a Test Report (or raw HID dump) for the Steam Controller in a real plug-in scenario
  • vid:pid documented in PENDING_DEVICES comment + promoted to DEVICES once verified
  • SteamControllerDriver stub extended with at least button/stick parsing from the 2015-style protocol (if applicable) or a documented "identity-only, Gamepad-API for everything" decision
  • Docs note in ADDING-A-CONTROLLER.md covering the Steam Input coexistence story

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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