G
YouTube TikTok Games
Skip to content

[Controller] Steam Controller 2015 - USB wire (Virtual) #1

Open

Description

@HighPriest

Controller model: Steam Controller (2015)

Connection: USB Cable

Controller mode: X-input (Virtual Steam Input)

Device picker entry:

InputLab version and Windows version: IL 1.3.0 - Windows 10 IoT LTSC Build 19041

Stick Motion result

  • Score: --
  • Report rate (f_nom): 16hz
  • Report mode: Streaming

Other tests (optional)

Exported report

inputlab_run_20261027_174519.md

What happened / what did you expect? (for problems)

InputLab is reporting (no matter what) that the controller is only sending 16Hz of state change information. On the Live preview, you can actually see how sharp are the lines connecting the position points. When rotating the input fast enough, you can almost draw a square.
I've mentioned the result on steam forums: https://steamcommunity.com/app/353370/discussions/0/523897653313164078/

Activity

  1. moneks1106-code commented on Oct 27, 2026

    @moneks1106-code
    Owner

    Thanks for the report and the export, that helps a lot.

    What InputLab measured is real, but it is probably not your Steam Controller itself:

    • The run used "All controllers" over Raw Input HID, not your pad. 65 reports/s arrived, but 75 % changed nothing; the state changed about 16 times per second.
    • The reports come in tight bundles every 63.9 ms. 62.5 ms is exactly 4 ticks of Windows' default 15.6 ms timer: the fingerprint of a program that feeds a virtual controller with a ~50 ms sleep. With Steam, ViGEmBus and HidHide installed, that is most likely Steam Input's virtual pad (InputLab isn't a Steam game, so Steam may treat it as desktop) or another tool feeding a virtual device; HidHide may also hide the physical controller from InputLab.
    • The run itself was flagged invalid (too few samples, 125 Hz target vs ~16 Hz measured, sticks covered too little of their range).

    Could you try:

    1. Pick your controller in the device picker instead of "All controllers" and paste its line here.
    2. Run once with the XInput backend, and once with InputLab added to Steam as a non-Steam game and started from Steam.
    3. Check HidHide's settings and whether another tool (DS4Windows etc.) feeds ViGEm.

    If the controller still shows ~16 Hz with Steam's game configuration active, that would point at Steam Input's virtual pad itself.

  2. HighPriest commented on Oct 28, 2026

    @HighPriest
    Author

    HidHide is installed, but device hiding is disabled on my machine. The service does not start with OS, so it does not affect InputLab.

    I don't know what you mean "Run with XInput backend". The only way I know how to make the Steam controller work with a game, is to use their controller API and for it to work, InputLab has to be added to Steam as a non-Steam game.

    I've not noticed that in "Live" view, the Raw / XInput / WGI are buttons. But... changing them only shows different values in the Live view, does not change what the Basic/Advanced reports read

    In the advanced test I've ticked "Cross-check with X-Input", but there is no immediate change.

    inputlab_run_20261028_162313.md

    .

  3. moneks1106-code commented on Oct 28, 2026

    @moneks1106-code
    Owner

    Thanks for the second run, that one answers it.

    What you picked is Steam's virtual pad, and that is the only controller InputLab can see on your PC. "Valve Steam
    Virtual Gamepad" (28DE:11FF) is the Xbox 360 pad Steam Input creates. The Steam Controller itself never appears as a
    gamepad to Windows: it shows up as a keyboard, a mouse and a vendor-specific HID interface that only Steam reads. So my
    "pick the physical controller" was not possible for you, sorry. "Run with the XInput backend" was wrong wording too:
    the measurement always runs on Raw Input HID; the Raw / XInput / WGI chips only switch the live view, exactly as you saw.
    The "Cross-check with XInput" box you ticked is the XInput measurement, and it is the interesting part of your export.

    Two paths, two very different rates, same run:

    • HID path of the virtual pad (what the score reads): 666 reports in 10 s, arriving in bundles of 4–5 every 64.0 ms
      (very regular: p99 64.03 ms, max 64.05 ms). About one report per bundle carries a change: 15.7 changes/s. That is
      the 16 Hz.
    • XInput path of the same virtual pad (the cross-check): 1,205 state changes in the same run, about 125 per second.
      That is the Steam Controller's rate, and it is what an XInput game gets from Steam Input.

    InputLab did notice ("HID compatibility collection cadence differs from XInput … ratio 0.02 … does not deliver every
    state the XInput driver sees") but kept the HID number as the headline. So: your controller and Steam Input run at
    about 125 Hz. The 16 Hz is how Steam's virtual pad behaves on its HID/DirectInput side on your PC: a 64 ms timer in
    that path, not your controller. Whether DirectInput games actually see it at 16 Hz I can't tell from here.

    My first reply was partly wrong: 63.9 ms is not four Windows timer ticks (that would be 62.5 ms), and nothing feeds
    the pad slowly: XInput shows it fed at full rate. The "sticks covered too little of their range" line was wrong as
    well: you covered 62 and 64 of 72 angle bins; that gate failed on the share of changed reports, again the 16 Hz path.

    Something you can check in ten seconds: on the Live page, click the "XInput" chip above the pad. The stick trace
    should turn from the square into a circle.

    What changes in InputLab: 1.4.0 refuses to measure a virtual pad and says so, instead of showing a misleading
    16 Hz. The honest downside: for a Steam Controller that means no delivery measurement at all, because there is no
    physical gamepad for InputLab to read. Measuring the XInput side of a virtual pad, the number that matters for Steam
    Input users, is the next thing I'm looking at. I'll leave this issue open until then.

    If you post in the Steam thread again, feel free to quote this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions