1. Home
  2. Linux
  3. Xbox one controllers over bluetooth linux

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.

10 Comments

  1. 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.

  2. 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

  3. xpadneo also worked with an Pi4B using Ubuntu Mate and a Wireless Xbox Controller.

    Thanks!

  4. 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.