protonscr

Compatibility of Microsoft Xbox Elite série 2 controller with Steam on Linux

steamclosed Distro Family: DebianGeneral controller / Steam Input
ValveSoftware/steam-for-linux#13044 · opened 2026-03-27 by Phil995511 · updated 2026-08-28 · 6 comments · github
1 matching comments, n / p to jump
PPhil995511 2026-03-27 github

Hello,

I'm using Debian 13. I'd like to use a Microsoft Xbox Elite Series 2 controller to play games on Steam.

The Microsoft Xbox Elite Series 2 controller has been successfully paired via Bluetooth, but it is not recognized by the Steam launcher.

I noticed that Steam OS is natively compatible with the Microsoft Xbox Elite Series 2 controller.

What is the problem? Am I missing any driver or software dependencies ?

Best regards.

Kkisak-valve maintainer 2026-03-27 github

Hello @Phil995511, what version of the steam-devices package is on your system? Specifically, is it new enough to include https://github.com/ValveSoftware/steam-devices/commit/bc998da43e20d4358d8e0a0081ede3678145cd0f?

PPhil995511 2026-03-28 github

Hello vanne kisak, and thank you for your reply,

In Debian 13, the default version of steam-devices is 1:1.0.0.83~ds-3: all

https://packages.debian.org/search?suite=default&section=all&arch=any&lang=fr&searchon=names&keywords=steam-devices

And the installed version of steam-launcher is 1:1.0.0.85.

I thought about installing steam-devices is 1:1.0.0.83~ds-3: all, but in order to install it, it requires that steam-launcher is 1:1.0.0.85 be uninstalled.

Is this because the version numbers are different ?

It's a shame that steam-launcher doesn't include steam-devices in the same package, that would make things easier...

Do I need to use the testing version of steam-devices 1:1.0.0.85~ds-2: all for this to work ? And if that's how it works, will I lose that hardware compatibility if I update the Steam launcher ?

The Xbox Wireless standard Controllers (1V8-00002) work perfectly on Linux. I thought the same would be true for an Xbox Elite série 2 controller... But I understand that the XPAD driver included in the Linux kernel doesn't support this controller ;-(

If only the Linux kernel developers would integrate game controllers directly into the kernel, it would make life easier for everyone, but sadly, they only do so to a very limited extent ;-( As a result, Linux isn't very user-friendly for gamers, who often prefer to use Windows...

Until now, I’ve been using an Xbox Elite Series 1 controller with the wireless USB adapter (model 1790) and the Xone driver to get it working. But Xone is buggy and nothing works anymore ;-( That’s why I bought an Xbox Elite Series 2 controller, which I can’t get to work on Debian.

Thank you for your support.

Best regards, and have a great weekend.

Kkisak-valve maintainer 2026-03-28 github

If the package versioning around steam-devices is fighting you, I'd just add the udev rule in the linked commit to /usr/lib/udev/rules.d/60-steam-input.rules and see if that helps.

PPhil995511 2026-03-28 github

Thank you for your prompt responses.

I went to :

/usr/lib/udev/rules.d/60-steam-input.rules

I added the rule :

# Xbox One Elite 2 Controller
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="*045E:0B22*", MODE="0660", TAG+="uaccess"

Source of rules :

https://github.com/ValveSoftware/steam-devices/blob/master/60-steam-input.rules

I wouldn't have thought it would be that easy. Everything is working perfectly now :)

You are the best. Thanks for your great advice :)

Best regards and have a great weekend.

Bbannan938 2026-08-22 github

I am experiencing this exact same issue on Ubuntu 26.04 running the new signed Linux Kernel 7.0.0-30-generic with a MediaTek MT7925 Bluetooth adapter.

The Xbox Elite controller pairs perfectly with the OS via Bluetooth, and all buttons/axes work flawlessly in system diagnostic tools like jstest-gtk (reading /dev/input/js0). However, Steam fails to detect the controller entirely over Bluetooth (while working fine over USB).

The root cause on modern kernels appears to be a permission lockdown on the /dev/hidraw* nodes, which Steam's internal SDL implementation relies on to probe modern Xbox controllers over Bluetooth. By default, the node (in my case /dev/hidraw13) was created with crw------- permissions owned by root:root, completely blocking Steam from accessing it.

I managed to fix this issue completely without any custom SDL_GAMECONTROLLERCONFIG environment variables or third-party DKMS drivers (which I cannot use due to Secure Boot) by creating a custom udev rule that opens up hidraw permissions for the input group:

Added /etc/udev/rules.d/99-xbox-bluetooth-hidraw.rules

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="045e", MODE="0660", GROUP="input"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:045E:*", MODE="0660", GROUP="input"

After reloading the udev rules and turning the controller off and on, the permissions correctly changed to crw-rw---- 1 root input for /dev/hidraw13. Steam then instantly detected the controller normally through the native desktop shortcut launcher.

sudo udevadm control --reload-rules && sudo udevadm trigger

Please consider updating the official steam-devices package rules to include proper Bluetooth hidraw permissions for modern Microsoft Xbox controllers on newer kernels so this works out-of-the-box.

PPhil995511 2026-08-28 github

@bannan938

This ticket was closed on 28.03.2026 !!

The 60-steam-input.rules file is up to date in Steam OS, not in Debian for the moment...

/usr/lib/udev/rules.d/60-steam-input.rules

You must therefore execute the command below as su - after installing a machine for your gaming controller to be supported :

echo '# Xbox One Elite 2 Controller KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="*045E:0B22*", MODE="0660", TAG+="uaccess"' > /etc/udev/rules.d/60-steam-input.rules && udevadm control --reload-rules && udevadm trigger --subsystem-match=hidraw

Regards.

Launch options