Linux Gaming Repair Center

A USB controller is missing from Steam

Follow the controller from USB enumeration to kernel input, user-session access, Steam Input and game mapping.

On this page
  1. A USB device is not yet a gamepad
  2. Check access without broad permission changes
  3. Test Steam Input before blaming Proton
  4. Gather evidence
  5. A controlled test
  6. Related diagnostics
  7. Sources & limitations

A USB device is not yet a gamepad

A controller visible in lsusb has enumerated on the bus. That does not prove that the kernel created an input device, that the logged-in user can access it, or that Steam mapped it for the game. Some controllers expose several interfaces or switch between input modes. Keep the numeric USB ID with the transport, cable and firmware mode. A USB disconnect or repeated enumeration belongs to the transport branch; an event device that works in Steam’s test but fails in one game belongs farther up the stack.

Check access without broad permission changes

Inspect the gamepad’s input properties and session access rather than granting every user write access to all input devices. Valve maintains device-specific rules for distribution integration. Use the distribution’s maintained Steam device package or declarative hardware support when a missing rule is established. Running Steam as root is not a useful comparison and exposes unrelated state. A Bluetooth controller adds pairing, radio and HID transport questions; a successful USB test does not validate its wireless path.

Test Steam Input before blaming Proton

Use Steam Settings → Controller → Test Controller Inputs where available. If input works there, record the per-game Steam Input override and layout. Games with native controller support can react differently when Steam supplies a translated controller. Compare one override at a time and restore the saved layout afterward. Double input can result from two active mapping layers, whereas no event in Steam’s own test calls for earlier device or access evidence. Check controller firmware guidance for the actual model rather than treating a firmware update as a universal repair.

Gather evidence before changing the system

Run one command at a time in the relevant host or game environment. Read its requirements and interpretation first. The website displays commands and never runs them.

Read-only observation

lsusb

Requirements: usbutils and the connected USB transport.

Record the controller or receiver’s numeric vendor/product pair. A receiver entry alone does not prove a connected wireless controller.

Read-only observation

cat /proc/bus/input/devices

Requirements: Linux input subsystem; redact unrelated device details before sharing.

Find the matching name and event handler. Similar names or several interfaces require correlation with the USB identity; the file can also list keyboards.

Read-only observation

udevadm info --query=property --name=/dev/input/eventX

Requirements: systemd-udev/udevadm and the confirmed gamepad node; this reads properties only.

Replace eventX with the gamepad’s actual event node. Check whether properties identify a joystick and the device path matches the controller.

A controlled test with a way back

Save the per-game layout and Steam Input override. If Steam’s input test works, compare one enabled/disabled per-game override while keeping the same controller connection and game scene.

Rollback: Restore the saved per-game override and layout. Close the game before reconnecting or changing a controller’s hardware mode.

What this test cannot establish: The event handler and USB class do not prove a game’s mapping compatibility. Firmware, transport, permissions and Steam Input can fail independently.

Sources and scope

This editorial review uses primary project and distribution references. It does not establish that a fix has been reproduced on your hardware. Installed versions, the game runtime and the selected graphics API can change the result.