Xbox 360/One Controller Linux

Configure an Xbox360 or Xbox One controller to work on your Linux system using https://github.com/atar-axis/xpadneo open-source driver!!

The Problem

Often times when trying to pair an Xbox controller, the computer will attempt pairing but the Xbox light on the controller won’t remain lit after pairing. Beyond this, in my experience, the default controller mappings for Xbox controllers were never right. I’d start Elden Ring and my joystick directions would make sword swipes and other obtuse, enraging things.

If you’ve had any of these problems, please, read on my dear friend!

Prereqs

You’ll need linux kernel-headers for XpadNeo to work. Install them with the command for your distro below:

Installing Headers:


# ARCH sudo pacman -S dkms linux-headers bluez bluez-utils # DEBIAN sudo apt-get install dkms linux-headers-`uname -r` # FEDORA sudo dnf install dkms make bluez bluez-tools kernel-devel-`uname -r` kernel-headers-`uname -r` # RASPBIAN sudo apt-get install dkms raspberrypi-kernel-headers

Installing XpadNeo

Installation

  1. Download the Repository to your local machine with:
    git clone https://github.com/atar-axis/xpadneo.git
  2. run
    cd xpadneo
  3. run
    sudo ./install.sh

XpadNeo should be installed now.

Bluetooth Config

Edit the file

/etc/bluetooth/main.conf
, removing the
#
character to uncomment these lines. Change them is need be.


[LE] MinConnectionInterval=7 MaxConnectionInterval=9 ConnectionLatency=0 [General] ControllerMode = dual JustWorksRepairing = confirm

After changing this file, either restart your PC for the bluetooth config and XpadNeo to take effect.

Connecting the controller:


sudo bluetoothctl [bluetooth]# scan on wait until all available devices are listed (otherwise it may be hard to identify which one is the gamepad) push the connect button on upper side of the gamepad, and hold it down until the light starts flashing fast wait for the gamepad to show up in bluetoothctl, remember the address (e.g. `C8:3F:26:XX:XX:XX`) [bluetooth]# scan off to stop scanning as it may interfere with properly pairing the controller [bluetooth]# pair \<MAC> [bluetooth]# trust \<MAC> [bluetooth]# connect \<MAC> (should usually not be needed but there are open bugs) The \<MAC> parameter is optional if the command line already shows the controller name

Note: If your distro has a GUI bluetooth manager, feel free to use that instead. You don’t HAVE to connect via the terminal.

All Done! 🎉

Your controllers Xbox light should stay lit after connecting now. To test it, start up Steam in big picture mode and test if the controller is working properly.