How to use Xbox One controllers over Bluetooth on Linux
Unlike other Bluetooth controllers, the Xbox One controller will not interact with Linux without modifications. The reason? The Bluetooth chip inside of it has a DRM feature enabled, which prevents it from pairing successfully.
In this guide, we’ll go over how to disable the DRM feature that makes it impossible to pair your Xbox One controller to Linux over Bluetooth. Additionally, we’ll walk you through the pairing process.
Note: for this guide to be successful, you must have Bluetooth enabled on your Linux PC.
Temporarily disable Ertm
If you do not plan to use the Xbox One controller via Bluetooth on your Linux PC a lot, the best course of action is to disable Ertm, rather than shutting it off forever temporarily. To disable Ertm temporarily, start by opening up a terminal window. To open up a terminal window, press Ctrl + Alt + T or Ctrl + Shift + T on the keyboard. Then, follow the step-by-step instructions below.
Step 1: Elevate the terminal session from your Linux PC’s user account to Root. Accessing Root is a must because it is not possible to shut off Ertm without doing this.
sudo -s
Step 2: After gaining Root access in your Linux terminal, use the bash command below to shut off the Ertm feature in Bluetooth temporarily.
echo 'Y' > /sys/module/bluetooth/parameters/disable_ertm
Once the command above is run, the Ertm feature will be temporarily disabled, and you will be able to connect the Xbox One controller to your system. However, keep in mind the command will only work after you reboot your system.
Permenantly disable Ertm
If you’re a heavy Linux gamer, the best course of action is to permanently disable the Ertm feature so that you no longer have to deal with it. There are many different ways to shut off Ertm. However, the best approach is by installing the Xpadneo kernel module. It automatically disabled Ertm and adds in some Xbox One controller enhancements as well. To get Xpadneo working so that Ertm is permanently disabled, follow the step-by-step instructions below.
Step 1: Open up a terminal window by pressing Ctrl + Alt + T or Ctrl + Shift + T on the keyboard. Then, using the installation commands outlined below, install the dependencies required to build Xpadneo.
Ubuntu/Debian
sudo apt install dkms git linux-headers-`uname -r`
Fedora
sudo dnf install dkms make bluez bluez-tools git kernel-devel-`uname -r` kernel-headers-`uname -r`
Arch Linux
sudo pacman -S dkms linux-headers bluez bluez-utils git
Step 2: Using the Git tool in the Linux command-line, download the latest release of Xpadneo to your PC.
git clone https://github.com/atar-axis/xpadneo.git
Step 3: Move the terminal window into the xpadneo
folder with the CD command and run the install.sh script to install the Xpadneo kernel module, effectively disabling Ertm forever on your Linux system.
cd xpadneo sudo ./install.sh
When the installation of Xpadneo is finished on your Linux PC, reboot it. Upon logging back in, Ertm will be shut off and your Xbox One controller will be ready to pair.
Pairing your Xbox One controller over Bluetooth
To pair your Xbox One controller over Bluetooth, start out by unplugging your Xbox One console if you own one. It may attempt to pair to the console while you connect to Bluetooth if not unplugged, which can disrupt the Bluetooth pairing process. It is also quite annoying having to deal with an Xbox One console that is turning on when unneeded.
After unplugging your Xbox One console, lift up the controller and hold down the Xbox button on the center of the controller for a second. If done correctly, the Xbox One controller will power on.
Once the Xbox One controller is powered on, it is time to put the device into Bluetooth scanning mode. To do that, look to the topside of the controller, in between the two bumpers and triggers, and hold down the sync button.
Hold down the Xbox One controller’s sync button until the Xbox One logo button in the center of the controller blinks rapidly. If the Xbox One button is not blinking rapidly, take out the batteries to the controller to shut it off, and try the process again.
When you’ve got your Xbox One controller into Bluetooth pairing mode, follow the step-by-step instructions below.
Step 1: Locate the Bluetooth icon on your Linux desktop’s panel and click on it with the mouse. Then, open up Bluetooth settings.
Step 2: Inside of Bluetooth settings, look for your Xbox One controller under “Devices.” When it does, click on it with the mouse. Select it to pair to your Linux PC.
In-depth pairing instructions
There are many different ways to pair Bluetooth devices to the Linux desktop, and each Desktop Environment runs a slightly different Bluetooth connection app. If you’re not able to figure out how to pair your Xbox One controller to your Linux PC with the instructions above, please follow our in-depth guide on how to pair Bluetooth devices on Linux.
Xbox One controller pairs just fine with Ubuntu 22.04, on a fresh install. No config changes were necessary. So, clearly your article is clickbait.
Thanks been looking for this fix for hours. Thanks !!!
Thx, it wasnt working properly and not doesnt work at all.
What is Ertm? What negative impact my Linux system will have, if any, by disabling it?
Works great. Thank you
Hi Derrik,
Will this work with the new Xbox X|S controllers? I have been trying with Retropie, Lakka and a few other options – manage to succeed with connection and pairing. However, the controls do not interact with the game although the keyboard does??!!!
Any advice will be appreciated.
Thank you
Roy
xpadneo also worked with an Pi4B using Ubuntu Mate and a Wireless Xbox Controller.
Thanks!
Oh, man, this worked on EndeavourOS. Thanks for this entry, buddy.
Hello,
thanks for your guide. However, the terminal gives me the following error:
alvise@alvise-XPS-13-9300:~$ sudo -s
root@alvise-XPS-13-9300:/home/alvise# bash -c echo 1 > /sys/module/bluetooth/parameters/disable_ertm
1: line 0: echo: write error: Invalid argument
Any suggestions? I’m using Ubuntu 20.04.
I’ve updated the command in the post. It should work now.