This is the first and yet only driver for the Xbox One Wireless Gamepad (which is shipped with the Xbox One S). I wrote it for a student project at fortiss GmbH and it is fully functional but does only support the connection via Bluetooth as yet - more will follow.
Many thanks to Kai Krakow who sponsored me a Xbox One Wireless Controller 🎮 (including Wireless Adapter) and a pack of mouthwatering guarana cacao ☕
Advantages of this driver
- Supports Bluetooth
- Supports Force Feedback (Rumble) via BT
- Supports multiple Gamepads at the same time (not even supported in Windows)
- Supports Trigger Force Feedback (not even supported in Windows)
see it in action: runmisc/tools/directional_rumble_test/direction_rumble_test <event# in /dev/input> - Offers a consistent mapping, even if paired to Windows/Xbox before
- Working Select, Start, Mode buttons
- Support for Battery Level Indication (including the Play `n Charge Kit)

- Easy Installation
- Agile Support and Development
Make sure you have installed the following packages and their dependencies
dkmslinux-headersbluezandbluez-utils
On Debian based systems (like Ubuntu) you can install those packages by running
sudo apt-get install dkms linux-headers-`uname -r`
On Raspbian, it is
sudo apt-get install dkms raspberrypi-kernel-headers
On Arch and similar distros (like Antergos), try
sudo pacman -S dkms linux-headers bluez bluez-utils
On Fedora, it is
sudo dnf install dkms bluez bluez-tools kernel-devel-$(uname -r) kernel-headers-$(uname -r)
On OSMC you will have to run the following commands
sudo apt-get install dkms rbp2-headers-`uname -r`
sudo ln -s "/usr/src/rbp2-headers-`uname -r`" "/lib/modules/`uname -r`/build" (as a workaround)
- Download the Repository to your local machine
git clone https://github.com/atar-axis/xpadneo.git cd xpadneo- Run
./install.sh - Done!
sudo bluetoothctl[bluetooth]# scan on- 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 MAC address (C8:3F:26:XX:XX:XX)
[bluetooth]# pair <MAC>[bluetooth]# trust <MAC>[bluetooth]# connect <MAC>
You know that everything works fine when you feel the gamepad rumble ;)
The driver can be reconfigured at runtime by accessing the following sysfs
files in /sys/module/hid_xpadneo/parameters:
debug_level(default0)0(no debug output) to3(all)- For more information, please take a look here
disable_ff(default0)0(ff enabled) to1(ff disabled)
trigger_rumble_damping(default4)- Damp the strength of the trigger force feedback
1(none) to256(max)
fake_dev_version(default0x1130)- Fake the input device version to the given value (to prevent SDL from applying another mapping, see below)
- Values from
1to0xFFFFare handled as a version number,0will retain the original version
If someone is interested in helping me getting this driver merged into the kernel, tell me. I would really appreciate that.
For further information, like instructions for troubleshooting, please visit the GitHub Page https://atar-axis.github.io/xpadneo/ which is generated automatically from the input of the /docs folder.