Why Your Gamepad Isn't Working on Linux Mint
Gaming on Linux Mint has improved dramatically, but controller support remains one of the most frustrating areas. Whether you're using an Xbox, PlayStation, or generic USB gamepad, you might find it completely undetected by Steam, emulators, or games — even though the system seems to recognise it. In 2026, with Linux Mint 21.3 and 22.x widely deployed, gamepad issues persist for a significant number of users due to driver conflicts, kernel module mismatches, missing udev rules, and Bluetooth stack problems.
This guide walks you through every fix, from the simplest checks to advanced driver replacements, so you can get your controller working for gaming on Linux Mint today.
Step 1: Confirm the System Detects Your Controller
Before changing any drivers, verify whether Linux itself sees your gamepad. Plug it in via USB (or pair it via Bluetooth) and run:
ls /dev/input/js*
If you see /dev/input/js0 or similar, the kernel is detecting the device. If nothing appears, the issue is at the driver layer. Next, test with:
sudo apt install jstest-gtk -y
jstest-gtk
This opens a GUI that lists every detected joystick and lets you test button inputs live. If your controller appears here but not in Steam or games, skip to the Steam-specific fix section. If it doesn't appear at all, continue from the next section.
Step 2: Check Which Kernel Module Is Loaded
Linux Mint uses the xpad kernel module for Xbox-compatible controllers by default. Sometimes this module loads incorrectly or conflicts with third-party drivers. Check what's loaded:
lsmod | grep -E "xpad|xone|uinput"
If you see xpad but your controller still isn't working, the module may be outdated or conflicting. If you see xone alongside xpad, there's a conflict. Run:
sudo rmmod xpad
sudo modprobe xone
If neither helps, try reloading the module entirely:
sudo modprobe -r xpad
sudo modprobe xpad
Reconnect the controller after each reload and re-check /dev/input/js*.
Step 3: Install xpadneo for Xbox Bluetooth Controllers
The default xpad module has known issues with Xbox One, Xbox Series X/S, and Xbox Elite 2 controllers over Bluetooth. The community-maintained xpadneo driver is the recommended replacement. Install it as follows:
- Install required dependencies:
sudo apt install dkms linux-headers-$(uname -r) git -y - Clone the xpadneo repository:
git clone https://github.com/atar-axis/xpadneo.git cd xpadneo - Run the installer:
sudo ./install.sh - Blacklist the old xpad module to prevent conflicts:
echo "blacklist xpad" | sudo tee /etc/modprobe.d/blacklist-xpad.conf sudo update-initramfs -u - Reboot your system:
sudo reboot
After rebooting, re-pair your Xbox controller via Bluetooth (Settings → Bluetooth) and test with jstest-gtk. Most Xbox Bluetooth issues are resolved by xpadneo.
Step 4: Install xone for Xbox Controllers via USB Dongle
If you use the official Xbox Wireless Adapter (USB dongle) rather than Bluetooth, you need the xone driver. The stock kernel doesn't support this dongle out of the box on Linux Mint 21/22. Install it:
- Install build dependencies:
sudo apt install dkms cabextract linux-headers-$(uname -r) -y - Clone and install xone:
git clone https://github.com/medusalix/xone.git cd xone sudo ./install.sh --release - Download the Xbox firmware (required for the dongle):
sudo xone-get-firmware.sh --skip-disclaimer - Reboot and plug in the USB dongle. Your controller should pair automatically.
Step 5: Fix udev Rules and User Permissions
Even when the kernel detects your controller, Steam and emulators may not have permission to read its input. This is a common cause of controllers appearing in jstest-gtk but not in games. Fix it with proper udev rules and group membership:
- Add yourself to the
plugdevandinputgroups:sudo usermod -aG plugdev,input "$USER" - Install the Steam udev rules package:
sudo apt install steam-devices -y - Reload udev rules without rebooting:
sudo udevadm control --reload-rules sudo udevadm trigger --action=add -s input - Log out and back in (or reboot) for group changes to take effect.
The steam-devices package installs comprehensive udev rules for hundreds of controllers including PlayStation, Xbox, Nintendo Switch Pro, and many third-party pads.
Step 6: Fix Gamepad Not Detected in Steam Specifically
If your controller works in jstest-gtk but Steam ignores it, the issue is Steam's internal controller configuration. Try these steps:
- Open Steam and go to Steam → Settings → Controller.
- Under General Controller Settings, enable the appropriate support: Xbox Configuration Support, PlayStation Configuration Support, or Generic Gamepad Configuration Support.
- If the controller still doesn't appear, open a terminal and launch Steam with verbose logging:
steam -console - Check for HID device errors in the console. If you see permission errors referencing
/dev/hidraw, create a custom udev rule:echo 'SUBSYSTEM=="hidraw", KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/99-hidraw-permissions.rules sudo udevadm control --reload-rules && sudo udevadm trigger
For persistent Steam Input issues, also disable Steam's udev rule management and let the system handle it: in ~/.steam/steam/steam_dev.cfg, set SDL_GAMECONTROLLERCONFIG to your controller's mapping if it's misidentified.
Step 7: Fix PlayStation and Generic USB Controllers
PlayStation 4 and PS5 controllers use the hid-sony kernel module, which is included in Linux Mint but sometimes needs a nudge. For PS4 DualShock controllers connected via USB:
sudo modprobe hid-sony
echo "options hid-sony ps4_rumble=1" | sudo tee /etc/modprobe.d/hid-sony.conf
For Bluetooth PS4/PS5 pairing problems, disable the ertm Bluetooth feature that causes connection drops:
echo 'options bluetooth disable_ertm=1' | sudo tee /etc/modprobe.d/bluetooth.conf
sudo modprobe -r bluetooth && sudo modprobe bluetooth
For generic third-party USB gamepads not detected as joysticks, install the joystick package which includes additional userspace drivers:
sudo apt install joystick -y
Then re-test with jstest /dev/input/js0. If the device now appears, map its buttons correctly using Antimicrox:
sudo apt install antimicrox -y
Need expert help with stubborn hardware issues? Get expert help from CloudHouse Technologies' certified Linux technicians.
Step 8: Update Your Kernel if All Else Fails
Many controller driver fixes are backported to newer Linux kernels. Linux Mint's Update Manager lets you install newer kernels without breaking your system:
- Open Update Manager → View → Linux Kernels.
- Install the latest recommended kernel (6.8 or above as of 2026).
- Reboot and select the new kernel from the GRUB boot menu.
- Test your controller again.
Kernel 6.5+ includes improved Xbox Series X/S controller support and better hidraw permissions handling. If the new kernel resolves your issue, you can set it as the default via sudo grub-set-default.
Frequently Asked Questions
Why does my controller work via USB but not Bluetooth on Linux Mint?
Bluetooth controller support on Linux Mint relies on the xpad or xpadneo kernel module plus a functioning BlueZ Bluetooth stack. USB bypasses Bluetooth entirely. Install xpadneo and ensure BlueZ is up to date (sudo apt upgrade bluez) to fix Bluetooth controller issues.
How do I check if Steam can see my controller?
Go to Steam → Settings → Controller → General Controller Settings. Your controller should appear in the Detected Controllers section. If it doesn't appear, ensure Generic Gamepad Configuration Support is enabled and check udev permissions with ls -l /dev/input/js*.
What is xpadneo and do I need it?
Xpadneo is an advanced Linux driver for Xbox controllers that replaces the built-in xpad module. It provides better Bluetooth stability, rumble support, and trigger feedback. You need it if you use an Xbox One, Xbox Series X/S, or Xbox Elite controller over Bluetooth on Linux Mint.
My gamepad shows up in jstest-gtk but games don't respond to it — why?
This is usually a permission issue. Games access controllers through /dev/input/js* and /dev/hidraw*. Install the steam-devices package, add your user to the plugdev and input groups, then reload udev rules with sudo udevadm control --reload-rules && sudo udevadm trigger.
Can I use a Nintendo Switch Pro Controller on Linux Mint?
Yes. The Nintendo Switch Pro Controller is supported via the hid-nintendo kernel module available in kernels 5.16+. Install the joycond daemon for full support including home button LED and rumble: sudo apt install joycond. Enable and start it with sudo systemctl enable --now joycond.
