ValveSoftware / ValveSoftware/Proton

DirectInput hid_joystick_enum_device fails to enumerate gamepad, breaking XInput entirely — reproducible standalone with joy.cpl, no Steam involved

Open
#10,160 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
32.8k
Forks
1.6k
PR merge metrics
PR metrics pending

Description

System: CachyOS (Arch-based), kernel 7.2.6-1-cachyos, Hyprland (Wayland).
Controller: Generic gamepad presenting as 054c:05c5 (Sony DualShock 4 spoof) in one mode, 4131:3519 in another (force-bound to the xpad kernel driver, since it's not in xpad's default ID table).
Proton version: Proton 11.0-2, Proton - Experimental
Minimal reproduction - no Steam client, no specific game required:

  1. Quit Steam completely (verified via pgrep, zero Steam processes).
  2. Create a fresh Wine prefix using Proton's own bundled wine directly: WINEPREFIX=/path/to/fresh/prefix "/files/bin/wine" wineboot -i
  3. Launch Proton's own controller diagnostic tool: WINEDEBUG=+xinput,+dinput,+joystick WINEPREFIX=/path/to/fresh/prefix "/files/bin/wine" control joy.cpl
  4. Joysticks tab correctly lists the controller under "Connected (XInput devices)". "Enable SDL" is checked by default.
  5. XInput tab's live test panel shows: "No user detected on slot #1... make sure your gamepad is plugged in, and not overridden for DInput in the Joysticks tab."
  6. The WINEDEBUG log shows: warn:dinput:hid_joystick_enum_device index 0 not found, the trigger for the failed detection.

This reproduces with zero Steam involvement — no client running, no game, no Steamworks — ruling out Steam-side interference as the cause (see ValveSoftware/steam-for-linux#12231, closed by its author after concluding an identically-shaped symptom was actually this exact Proton-side bug).

Also reproduced in-game across three separate titles (Steamworks and non-Steamworks) and three different Proton builds (Proton - Experimental, Proton 11.0-2, GE-Proton11-7), so it isn't tied to one specific build either.

Intermittency note: oddly, the same setup can work correctly for weeks, then fail like this across every configuration for days, then recover with no changes — happy to provide more detail if useful for narrowing this down.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the failure with Proton's bundled wine and control joy.cpl, using WINEDEBUG=+xinput,+dinput,+joystick. Trace the hid_joystick_enum_device index 0 not found warning and compare the DirectInput and XInput enumeration paths. Done means the gamepad is detected by XInput and the live test panel recognizes it reliably.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.