Fixing Bluetooth Xbox Controllers in Arch Linux

July 3, 2022

Setting up Bluetooth

Since you are on Arch Linux there’s a good chance you may not have Bluetooth installed.

sudo pacman -S bluez bluez-utils

Bluez provides the Bluetooth protocol stack. Bluz-utils provides a command line utility to connect bluetooth devices.

sudo systemctl enable --now bluetooth.service

Start the bluetooth service and enable it.

Connecting the controller via Bluetooth

Run bluetoothctl in the command line to startup the bluetooth utility.

Run power on to turn on the bluetooth controller.

Run scan on to get a list of each of the devices and their mac addresses. Your Xbox controller should show up as “Xbox Wireless Controller” then copy the mac address.

Run pair yourControllerMacAddress, this will connect your Bluetooth controller. If you run into pairing issues, proceed to the next section.

Controller firmware fix

Is your controller having Bluetooth connection issues? The solution is to update the firmware in the controller.

  1. Jump over to Windows, don’t worry this is temporary (you can use a VM too).
  2. Download the Xbox Accessories app from the Microsoft Store.
  3. Plug in the controller to the pc.
  4. Get them updates.

Now that the controller is updated, you can switch back to your Arch Linux install. You can see that the controller can connect over Bluetooth.

Fixing controller mappings

sudo pacman -S linux-headers

Make sure you have linux-headers installed. They are required for the next step.

yay -S xpadneo-dkms-git

Make sure you have the yay aur helper installed. Then proceed to install xpadneo. It contains the drivers for the Xbox One wireless controllers. This fixes the strange behavior of the operating system misinterpreting some of the controls on the controller. For example, my controller had issues with the right joystick and a few face buttons were mixed up. After installing the drivers those issues were resolved.