A game controller isn’t Linux compatible by itself. A kernel driver has to claim its USB or Bluetooth ID, and then Steam needs a udev rule before it can open the raw device for gyro, touchpads and back buttons. So the best controller for Linux is the one whose ID your kernel already knows, and the gap between two distros can be bigger than you’d expect: the Steam rules Ubuntu 26.04 ships do not list the DualSense Edge, any 8BitDo pad or the Switch 2 Pro Controller at all.
We ranked seven gamepads by which driver handles them (xpad, hid-playstation, hid-nintendo, hid-steam or an out-of-tree module), which connection mode works on Linux, and what Steam Input needs on top. Every driver table and udev rule below was read on Ubuntu 26.04 and Fedora 45 lab VMs in October 2026. No controller was plugged in, so the specs come from each maker’s page and prices and stock were checked the same week.
Best controller for Linux: the quick picks
For most people we’d buy the 8BitDo Ultimate 2 Wireless. Its 2.4G dongle shows up as an Xbox 360 class pad that the in-kernel xpad driver claims through its 8BitDo vendor match, it has Hall effect triggers and TMR sticks, and it costs less than a DualSense. Each pick below wins on something you can check, with price bands because controller prices move every week before Black Friday:
- Best overall: 8BitDo Ultimate 2 Wireless, about $60 to $70. Mainline xpad over the dongle, a charging dock, four extra buttons.
- Best for gyro and Steam Input: Sony DualSense, about $65 to $80. hid-playstation exposes the touchpad and motion sensors over USB and Bluetooth.
- Best plug-in default: Xbox Wireless Controller, about $45 to $65. Every game expects its layout, and xpad drives it over USB-C.
- Best budget: 8BitDo Ultimate 2C Wireless, about $25 to $35. Hall sticks and triggers on the same xpad path.
- Best premium: Sony DualSense Edge, about $190 to $200. Back buttons and on-pad profiles, in hid-playstation since 6.1.
- Best for Steam Deck owners: Valve Steam Controller (2026), $99 from Valve only. Trackpads and Steam Input everywhere, but the kernel driver needs 7.3.
- Wait on it: Nintendo Switch 2 Pro Controller, about $80 to $90. Its driver is merged for the next kernel and covers USB only.
If you do not want to touch udev or DKMS at all, stay with the first four and use them wired or on their own dongle. The Edge and the 8BitDo pads also need a newer Steam rules file on Ubuntu before Steam can read their extra hardware, which takes one command and is covered further down.
Five drivers cover every pick
The driver column matters more than the button count. An in-kernel driver ships signed inside your distro’s kernel package, so it survives updates and Secure Boot without any work from you. The kernel column says when mainline first named or bound each ID. For the xpad pads that column is a label, not a requirement, because xpad has matched every 8BitDo USB device of the Xbox 360 class since 6.3, and both 8BitDo names were backported to the 6.6 and 6.12 LTS kernels:
| Controller | USB ID | Linux driver | Named or bound in mainline | Connection that works | Ubuntu 26.04 Steam rule |
|---|---|---|---|---|---|
| 8BitDo Ultimate 2 Wireless | 2dc8:310b | xpad | 6.15 (vendor match since 6.3) | 2.4G dongle, USB | Missing |
| Sony DualSense | 054c:0ce6 | hid-playstation | 5.12 | USB, Bluetooth | Present |
| Xbox Wireless Controller | 045e:0b12 | xpad (USB), hid-microsoft or xpadneo (Bluetooth), xone (Xbox dongle) | USB ID long in xpad | USB, Bluetooth | Not needed for USB |
| 8BitDo Ultimate 2C Wireless | 2dc8:310a | xpad | 6.12 (vendor match since 6.3) | 2.4G dongle, USB | Missing |
| Sony DualSense Edge | 054c:0df2 | hid-playstation | 6.1 | USB, Bluetooth | Missing |
| Steam Controller (2026) | 28de:1302 to 1305 | hid-steam | 7.3 | USB, Puck receiver | Present (all Valve IDs) |
| Switch 2 Pro Controller | 057e:2069 | hid-nintendo with hid-nintendo-switch2-usb | 7.4 merge window | USB only | Missing |
Two rows need a second look. The Xbox pad uses three different drivers depending on how you connect it, and only the USB path is plain mainline. The Steam Controller is in the table with a 7.3 requirement, yet Steam itself drives it on older kernels, because Valve’s rules give your login raw access to every 28de device. Neither of the lab kernels had its IDs: Ubuntu 26.04 runs 7.0, and Fedora 45 had updated to 7.2.11.
The lab work covered three things, and left one out:
- Read the device names compiled into
xpad.koand themodinfoaliases of hid-playstation, hid-nintendo and hid-steam on both kernels. - Compared the
60-steam-input.rulesfile that each distro’s steam-devices package installs, then installed Valve’s own Steam .deb on Ubuntu to see what it replaces. - Matched mainline landing versions against the kernel source at each release tag, and specs against each manufacturer’s page.
We did not have the controllers in hand, so there are no latency, feel or battery measurements of our own, and we link a hands-on review where one covers the pick.
1. 8BitDo Ultimate 2 Wireless wins overall
This is the controller we would hand anyone who games on a Linux desktop and doesn’t want to think about drivers:

Plug in the USB-C dongle and the pad reports itself as 2dc8:310b, an Xbox 360 class device. The kernel’s xpad driver has matched the whole 8BitDo vendor ID by interface class since 6.3, so any current distro kernel binds it with no extra package; the model name was added in 6.15 and backported to the 6.6 and 6.12 LTS lines. We found the name compiled into the module on both lab kernels. 8BitDo lists Bluetooth for Android and Apple only, which is why we would keep the dongle on a Linux PC and save Bluetooth for a phone.
The hardware is the reason it beats cheaper pads. It has TMR sticks, Hall effect triggers with a switch for linear or tactile pulls, L4 and R4 bumpers plus two rear paddles, and 1000 Hz polling on the dongle and on USB. The 6-axis gyro only works in 2.4G mode, and xpad doesn’t expose it, so motion depends on Steam reading the raw HID device. GamingOnLinux called it a top premium feeling controller after using it on Linux.
- Who it’s for: anyone who wants one pad for Steam, Lutris and emulators on a current kernel.
- Skip it if: you need Bluetooth on the PC, or you want to remap the paddles from Linux, since profiles live on the pad and 8BitDo’s Ultimate Software is the tool that edits them.
- Ubuntu note: Steam needs the newer rules file to open the 8BitDo hidraw node (see the Ubuntu section below).
All three colours sat around $60 when we checked, so expect about $60 to $70; the white version linked here was in stock, so check the live price before you buy.
2. Sony DualSense leads on gyro and Steam Input
The DualSense has the deepest kernel driver of any pad here, and it is the one to buy if you play with gyro aiming:

hid-playstation has handled it since kernel 5.12, and the aliases we read on both lab kernels cover 054c:0ce6 over USB (bus 0003) and Bluetooth (bus 0005). The driver creates separate input devices for the gamepad, the touchpad and the motion sensors, and it drives the lightbar, the player LEDs and rumble. What it does not do is adaptive triggers: there’s no trigger-effect code in the mainline driver, so those come from Steam or the game talking to the raw device. Sony itself notes that haptics and adaptive triggers on PC may need a USB cable.
Steam Input is where this pad pays off. Both steam-devices versions we read, including Ubuntu’s older one, grant your login access to the DualSense hidraw node, so Steam can map gyro to mouse, use the touchpad as a trackpad and pass it through to games that support it natively.
- Who it is for: gyro players, emulator users and anyone who wants Bluetooth that works with stock BlueZ pairing.
- Skip it if: you prefer swappable AA batteries, or a game only understands the Xbox layout and you don’t run it through Steam.
- Watch out for: adaptive triggers and full haptics, which need USB and game support.
The white DualSense was about $65 to $80 when we checked, sold by Amazon itself. Check the live price.
3. Xbox Wireless Controller just plugs in
Over a USB-C cable this is the least surprising controller you can buy for Linux:

Which driver runs it depends on the link, and that’s the part most guides skip. Each path has a different owner:
- USB cable: mainline xpad, which lists 045e:0b12 as the Xbox Series S|X controller and maps the Share button.
- Bluetooth: mainline hid-microsoft, which already drives rumble. The out-of-tree xpadneo driver adds trigger rumble, battery level and the Share button on that path.
- Microsoft’s Xbox Wireless Adapter: xone, a DKMS driver kept alive in the dlundqvist/xone fork, which also replaces xpad when installed.
Our advice is to stay on the first path unless you need wireless. A DKMS driver gets rebuilt after every kernel update, and with Secure Boot on it will not load until you enroll a signing key. The pad runs on two AA batteries for up to 40 hours per Microsoft, which some people prefer to a sealed cell that wears out.
- Who it’s for: people who play wired at a desk, or anyone whose games show Xbox button prompts.
- Skip it if: you want wireless with no extra drivers, or gyro, which this pad does not have.
Carbon Black was discounted to about $45 to $65 when we checked. Check the live price, because Xbox pads swing with every sale.
4. 8BitDo Ultimate 2C Wireless wins on budget
The 2C is the cheapest pad here with Hall effect sticks and triggers, and the kernel has known it longer than its pricier sibling:

Its ID, 2dc8:310a, got a name in xpad in kernel 6.12 and in the 6.6 LTS line by backport, and xpad’s 8BitDo vendor match binds it on any kernel from 6.3 anyway. You get the same 1000 Hz polling on the dongle and USB as the Ultimate 2, a 480 mAh battery rated for 19 hours on 2.4G, and L4 and R4 bumpers. You do not get rear paddles, gyro or software remapping, and 8BitDo lists its Bluetooth for Android only.
- Who it’s for: a second pad for couch co-op, or a first pad for someone testing whether they like controller gaming.
- Skip it if: you want gyro or the paddles, which cost about $30 more on the Ultimate 2.
The Transparent Black Edition was about $25 to $35 when we checked. Check the live price.
5. Sony DualSense Edge is the premium pick
The Edge is a DualSense with back buttons, stick cap options and profiles stored on the pad:

hid-playstation added 054c:0df2 in kernel 6.1, so the gamepad, touchpad and motion devices work exactly like the standard DualSense. The catch is on the Steam side. Ubuntu 26.04’s steam-devices package has no hidraw rule for the Edge, so on a stock install Steam can’t open the device it uses for gyro and the extra buttons. Fedora’s package and Valve’s own .deb both include the rule. On PC, the Fn buttons swap between profiles already stored on the pad, and Sony’s profile editor is the PlayStation Accessories app for Windows, so plan to set the profiles up there once.
- Who it is for: DualSense fans who want back buttons without a third-party pad.
- Skip it if: you have no Windows machine for profile editing, or you’d rather buy three Ultimate 2 pads for the same money.
The white Edge was about $190 to $200 when we checked, and the Midnight Black version sold at the same price. Check the live price.
6. Valve Steam Controller 2026 suits Steam Deck owners
Valve’s new controller is built around Steam Input, and on Linux that matters more than which kernel you run:

It launched on May 4, 2026 at $99, with magnetic TMR sticks, two trackpads, four grip buttons, a 6-axis IMU and a Puck receiver that doubles as a magnetic charger. In the kernel, hid-steam only learned its IDs (28de:1302 wired, 1303 Bluetooth, 1304 Puck) in 7.3. Our Ubuntu 26.04 and Fedora 45 kernels only listed the 2015 controller and the Steam Deck. That does not stop Steam, because both steam-devices versions we read grant your login raw access to all 28de devices and the client drives the pad itself. What you lose on an older kernel is the pad working outside Steam, in a desktop or a non-Steam launcher.
- Who it is for: Steam Deck players who want the same trackpads at the desk, and anyone who launches everything through Steam.
- Skip it if: you play through Lutris or Heroic without Steam running, unless your kernel is 7.3 or newer.
- Availability: Valve sells it direct through a reservation queue, and it isn’t on Amazon.
Windows Central’s review notes that buyers needed a Steam account and a spot in the reservation queue after launch stock sold out, which is still how the Steam store page sold it when we checked. The price is $99 from Valve.
7. Nintendo Switch 2 Pro Controller can wait
We list this pad because people search for it, not because we’d buy it for Linux today:

The original Switch Pro Controller has worked with hid-nintendo since kernel 5.16. The Switch 2 model is a new device, 057e:2069, and its support was committed to the HID tree on October 16, 2026, too late for 7.3, so it lands with the 7.4 merge window. The controller logic lives in hid-nintendo, with a new hid-nintendo-switch2-usb transport module, and the Kconfig says Switch 2 controllers currently work over USB only. Neither lab kernel had the module, and Ubuntu’s steam-devices has no rule for it either. Nintendo also sells it as a Switch 2 accessory only, so PC use is unofficial.
- Who it’s for: Switch 2 owners who already have one and want to try it wired in Steam.
- Skip it if: you’re buying a pad mainly for Linux, because the DualSense covers the same gyro use today.
It was about $80 to $90 when we checked. Check the live price if you are buying it for the console anyway.
The kernel table decides support
Before you buy any controller, you can check whether your running kernel already knows it. xpad matches some vendors wholesale by USB interface class (8BitDo, GameSir, Flydigi and Microsoft among them), so a missing name doesn’t mean a missing driver, but a name compiled into the module confirms someone added that exact model. On Ubuntu the module is zstd compressed, and strings comes from binutils, which a desktop install may not have:
zstdcat $(modinfo -n xpad) | strings | grep -i 'ultimate 2'
Ubuntu 26.04’s 7.0 kernel carries both of our 8BitDo picks:
8BitDo Ultimate 2C Wireless Controller
8BitDo Ultimate 2 Wireless Controller
Fedora compresses modules with xz, so swap zstdcat for xzcat there, and install binutils on either distro if strings is missing. The full list on Fedora’s 7.2.11 kernel had two names Ubuntu’s 7.0 lacked, the GameSir Nova 2 Lite (added in 7.1) and the 8BitDo Pro 2 Wired Controller for Xbox (backported into the 7.2 stable series). Both vendors are covered by xpad’s vendor match on Ubuntu too, so the pads still work there (the Pro 2 Wired loses its Share button mapping without the named entry); the names show how far each kernel has tracked upstream.
HID drivers list their IDs as module aliases instead, which makes the check shorter. Here’s hid-steam on Ubuntu 26.04:
modinfo -F alias hid-steam
Only three Valve products show up, the 2015 Steam Controller (1102 wired, 1142 wireless) and the Steam Deck (1205):
hid:b0003g*v000028DEp00001205
hid:b0003g*v000028DEp00001142
hid:b0003g*v000028DEp00001102
No 1302, 1303 or 1304, which is why the 2026 Steam Controller depends on the Steam client on this kernel. Run the same command against hid-playstation or hid-nintendo and look for your controller’s product ID: 0CE6 and 0DF2 for the DualSense and Edge, 2009 for the original Switch Pro Controller. The bus field tells you the transport, b0003 for USB and b0005 for Bluetooth.
Ubuntu’s Steam rules lag behind
For the controllers it fully supports, Steam Input skips the evdev gamepad the kernel creates and opens the raw hidraw node instead, and on a desktop that node belongs to root unless a udev rule tags it uaccess for the logged-in user. The rules come from Valve’s steam-devices project, and how current your copy is depends on where you got Steam:
- Ubuntu 26.04 archive: steam-devices
1.0.0.85, 142 lines, pulled in as a recommendation by the archive’s Steam packages. - Fedora 45: steam-devices
1.0.0.101from a June 2026 snapshot, 248 lines. - Valve’s own
steam_latest.deb: package steam-launcher1.0.0.87, which ships the newer rules itself.
A quick count shows what the old file misses. This grep looks for the DualSense Edge, the Switch 2 Pro Controller, 8BitDo and Flydigi IDs:
grep -ciE "0df2|2069|2dc8|37d7" /usr/lib/udev/rules.d/60-steam-input.rules
Ubuntu 26.04 prints 0, while Fedora 45 prints 6. So on a stock Ubuntu install with the archive’s Steam, the Edge, both 8BitDo pads and a Flydigi Apex 5 still work as plain gamepads through their kernel drivers, but Steam cannot reach their gyro, paddles or extra buttons.
Is there a clean fix? Yes, and it’s the one we tested: install Steam from Valve’s .deb instead of the archive package. Its control file declares that it replaces steam-devices:
curl -fsSLO https://repo.steampowered.com/steam/archive/stable/steam_latest.deb
dpkg-deb -f steam_latest.deb Package Conflicts Replaces Provides
The fields confirm that apt will swap the old rules out, so you never end up with two copies of the same file:
Package: steam-launcher
Conflicts: steam-devices, steam-installer
Replaces: steam, steam-devices, steam-installer, steam64
Provides: steam, steam-devices, steam-installer
Install it with apt so the dependencies resolve. Your existing Steam library and settings live in your home directory, so the swap does not touch them:
sudo apt install ./steam_latest.deb
On our Ubuntu 26.04 VM, apt removed steam-devices 1.0.0.85 and the same grep against /lib/udev/rules.d/60-steam-input.rules then returned 6. Our VM had only steam-devices from the archive; if you also installed the archive’s steam-installer, apt removes that too, because Valve’s package conflicts with it and takes its place. If you’d rather keep the archive packages, or you run the Steam Flatpak (which relies on the host’s rules), you can add the missing lines for the Edge, 8BitDo and Switch 2 pads yourself (Flydigi owners are better served by Valve’s .deb, which carries that rule too). The file name has to sort before 73 so the uaccess tag is applied in time:
sudo vim /etc/udev/rules.d/61-steam-input-extra.rules
Paste these lines, copied verbatim from Valve’s current rules file:
# Sony DualSense Edge Wireless-Controller over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*054C:0DF2*", MODE="0660", TAG+="uaccess"
# Sony DualSense Edge Wireless-Controller over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0df2", MODE="0660", TAG+="uaccess"
# 8bitdo 2.4 GHz / Wired
KERNEL=="hidraw*", ATTRS{idVendor}=="2dc8", MODE="0660", TAG+="uaccess"
# 8bitdo Bluetooth
KERNEL=="hidraw*", KERNELS=="*2DC8:*", MODE="0660", TAG+="uaccess"
# Nintendo Switch 2 Pro Controller over USB
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2069", MODE="0660", TAG+="uaccess"
Check the syntax and reload udev, then unplug and replug the controller:
sudo udevadm verify /etc/udev/rules.d/61-steam-input-extra.rules
sudo udevadm control --reload
A clean file reports one success and no failures:
1 udev rules files have been checked.
Success: 1
Fail: 0
Fedora users do not need any of this, since the distro’s package already carries these rules. If you came to Linux gaming through Fedora, our guide to setting up Steam and Proton on Fedora 45 covers the rest of the stack, and the Fedora 45 vs Ubuntu 26.04 comparison explains why the two distros drift on packages like this one.
Connection modes change the driver
The same controller can land on a different driver when you flip its mode switch or change the cable, and that explains most “it worked yesterday” reports. When you compare pads, check these in order:
- The USB ID in each mode. 8BitDo’s dongle mode is an Xbox 360 class USB device that xpad claims, while its Bluetooth link goes through the HID stack, which is why Valve’s rules carry a separate 8BitDo Bluetooth line.
- The transport the kernel driver supports. hid-playstation covers USB and Bluetooth, the new Switch 2 driver covers USB only, and xpad never handles Bluetooth.
- Whether the extras need Steam. Gyro on the 8BitDo, paddles on the Edge and trackpads on the Steam Controller all go through hidraw.
- Whether wireless needs DKMS. Xbox Bluetooth trigger rumble and battery need xpadneo, and Microsoft’s dongle needs xone.
Mode switching matters for older 8BitDo pads too. The Pro 2 uses a physical switch with S for Switch, X for Windows and D for Android or Apple, and on a Linux PC the Windows position is the one to pair with the cable or dongle. If a pad works in Steam but not in a native game, the game is probably reading the kernel device and the pad is in the wrong mode. Is a dongle always better than Bluetooth? Not on a Steam Deck or a laptop with good BlueZ, but on a desktop it removes pairing problems and, for 8BitDo, gives you the 1000 Hz polling rate.
If you run games outside Steam, the input side is the same, but Steam Input isn’t there to remap anything. Our Lutris, Heroic and GE-Proton guide covers those launchers, and if you’re still picking a gaming distro, our Fedora vs Bazzite comparison weighs the two Fedora-based options. Readers on Arch-based distros who want the newest controller IDs early can follow our CachyOS kernel guide to move to a newer kernel.
Sysfs shows which driver won
Once the controller is in your hands, you can prove from the outside which driver claimed it, before you blame a game or Proton. Plug it in and list the USB device first:
lsusb | grep -iE '2dc8|054c|045e|057e|28de'
The line shows the vendor and product ID pair from the table above. A pad paired over Bluetooth won’t appear in lsusb at all, so run this check on the cable or dongle. Then ask the kernel which driver bound the joystick device it created:
basename $(readlink -f /sys/class/input/js0/device/device/driver)
On an Xbox pad or an 8BitDo dongle this prints xpad. HID drivers print their registered name, not the module name, so a DualSense shows playstation, a Switch Pro Controller shows nintendo and a Valve pad shows hid-steam. With xone installed, a wired Xbox pad reports xone instead, and a Steam Controller may have no js node at all while the Steam client runs, because hid-steam hands the device to Steam, so close Steam before this check. If you see hid-generic, your kernel does not know the ID yet and the pad is running as a plain HID device. Use js1 or higher if another input device took js0, and install evtest to watch every button and axis report live. When a controller passes both checks but Steam still ignores its gyro or paddles, the missing piece is the udev rule from the Ubuntu section, not the driver.
For a desk that switches one controller between a Linux box and a work machine, a USB switch keeps the dongle on whichever PC is active, and our guide to KVM switches for Linux covers moving USB peripherals between machines.