Fixing Bluetooth Xbox Controllers in Arch Linux
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
bluetoothctl in the command line to startup the bluetooth utility.
power on to turn on the bluetooth controller.
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.
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.
- Jump over to Windows, don’t worry this is temporary (you can use a VM too).
- Download the Xbox Accessories app from the Microsoft Store.
- Plug in the controller to the pc.
- 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.