Controller not detected on Linux

Controller test 5 steps ~5 min fix

When Linux won't detect your Xbox, PlayStation or other gamepad, it's usually the cable/Bluetooth pairing, a driver, or the browser/game not reading it. Try these, then test every button live.

Test your controller right now — it takes one click. Run the controller test →

Step-by-step fix

  1. Use a known-good data USB cable (not charge-only), or re-pair over Bluetooth. Press the controller's pair/sync button.
  2. Run the CheckMyMic controller test and press a button — buttons and sticks should light up.
  3. On Linux, make sure the controller driver is installed (Xbox pads are plug-and-play; PlayStation pads may need Steam Input or DS4 tooling).
  4. Test the analog sticks for drift in the tester, and the triggers/bumpers.
  5. Restart Linux and reconnect.

Frequently asked questions

My controller charges but isn't detected on Linux.

Charge-only cables are common — swap to a data cable, or pair over Bluetooth. Then press a button and watch the controller test: once Linux really has the pad, it also appears in its Bluetooth/USB device list, which is the quickest way to tell a cable problem from a driver problem.

How do I check for stick drift on Linux?

Open the controller test on Linux and don't touch the sticks — if the on-screen sticks move on their own, you have drift. Mild drift can be masked with a bigger in-game deadzone; drift that keeps growing is the stick module wearing out.

Still not detected on Linux after every step — what's left?

Test the pad on another device: pair it to a phone or a second computer and open the CheckMyMic controller test there. Detected elsewhere means this machine's Bluetooth, USB port or driver; dead everywhere means the controller itself. Remember the tester only sees a pad after you press a button — that's how the Gamepad API works, not a fault.

Which drivers do controllers need on Linux?

Xbox pads use the in-kernel xpad driver (xpadneo adds better Bluetooth support for Xbox One/Series pads), and DualShock/DualSense use hid-playstation — all present on modern kernels. To watch raw input, use evtest or jstest-gtk; if events flow there but the browser sees nothing, press a button first, as the Gamepad API requires it.

Fixed it? Confirm with a quick test. Run the test →

Related guides

← All troubleshooting guides · Interview-ready check →