I fumbled a bit setting up my Xbox controller in Arch, but managed it and wanted to share.
Let's quickly cover how to use
xone to set up a Xbox Elite Wireless Controler Series 2 connecting to Arch Linux via a Xbox Wireless Adapter for Windows 10. Once we're done, it should 'just work' in
lutris, or your other games.
First, Unplug the wireless adapter and controller. This helps ensure when we do plug them in later, after installing the drivers, it'll work correctly.
You'll also want to make sure your GPU is properly working, with 3D OpenGL acceleration. You should refer to the Arch Linux wiki related to your GPU for this. (I use AMD GPUs so I just install
Since the Xbox Wireless Adapter uses WiFi at 2.4 GHz, you will also need a working WiFi stack on your machine. I used GNOME and the stock kernel, so Network Manager was simple to set up:
Any other networking management styles should work too.
If you haven't already, setup
yay or another AUR helper, we'll need it later:
If you haven't yet, enable the
multilib repository in Arch. In
/etc/pacman.conf uncomment these lines, then run
sudo pacman -Syu to make sure things are solid:
If you haven't yet, you can install
wine as well as
We will cover how to set up the controller inside Steam later. Lutris works out of the box.
Finally, you'll need to make sure your user is in the
Changing user groups in Linux requires you to relog or reboot, so please do that.
At the time of writing,
xone 3.0 recently arrived in the AUR as
xone-dkms and it works well.
Don't be brash, read the
yayshows you, ensure you are comfortable with them. Do this every time, no matter what.
During the build, it will pull in the
xone-dongle-firmware package which contains the required binary blobs.
Preliminary Wired testing
At this point, just to be extra thorough, reboot! When you're back to your desktop, plug in the controller with a wire, let's make sure that works first.
Once plugged in, your controller should rumble softly and light up. If you tag along with
sudo dmesg --follow:
[ [ [ [ [ [ [ [
That looks good! At the end there are two 'devices', that's ok. Now we can check the
evdev API for a device postfixed with
-event-joystick. We can
cat it then push the 'A' button on your controller:
[ana@architect ~]$ cat /dev/input/by-id/usb-Microsoft_Controller_*-event-joystick 2�b_)02�b_)����2�b_)2�b?�02�b?�^C
The Unicode 'tofu' is a good sign. Ctrl+C out.
Steam Specific Settings
steam and navigate the menus: 'Steam' -> 'Settings' -> 'Controller' -> 'General Controller Settings'.
There, tick on 'Xbox Configuration Support'. You should see Xbox controllers showing up now.
Unplug your controller from the wire and plug in the Xbox Wireless Adapter.
sudo dmesg --follow:
[ 7708.489792] usb 3-6.3: new high-speed USB device number 8 using xhci_hcd [ 7708.586329] usb 3-6.3: New USB device found, idVendor=045e, idProduct=02fe, bcdDevice= 1.00 [ 7708.586334] usb 3-6.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 7708.586336] usb 3-6.3: Product: XBOX ACC [ 7708.586337] usb 3-6.3: Manufacturer: Microsoft Inc. .. [ 7708.765135] xone-dongle 3-6.3:1.0: xone_mt76_send_firmware: build=201703281033____ [ 7708.908197] xone-dongle 3-6.3:1.0: xone_mt76_init_radio: id=0x7613 [ 7708.937447] xone-dongle 3-6.3:1.0: xone_mt76_init_address: address=6c:5d:3a:01:cb:ce .. [ 7709.072740] xone-dongle 3-6.3:1.0: xone_dongle_toggle_pairing: enabled=1
At this point you should be able to follow the Xbox Adapter Pairing guide.
TL;DR: Push adapter button so the white light on it flashes (no flash? See troubleshooting), push Xbox Guide button to turn on controller, push pair button on controller so the guide button flashes, repeat until it finally works and the controller light stays lit.
sudo dmesg --follow it'll look like so:
.. [ 8114.834465] xone-dongle 3-6.1:1.0: xone_dongle_pair_client: address=7e:ed:82:51:03:4e [ 8114.834847] xone-dongle 3-6.1:1.0: xone_dongle_toggle_pairing: enabled=0 [ 8115.103078] xone-gip gip0: gip_create_adapter: registered [ 8115.103227] xone-dongle 3-6.1:1.0: xone_dongle_add_client: wcid=1, address=7e:ed:82:51:03:4e [ 8115.615568] xone-gip gip0.0: gip_init_client: initialized [ 8115.615574] xone-gip gip0.0: gip_handle_pkt_announce: address=7e:ed:82:51:03:4e, vendor=0x045e, product=0x0b00 [ 8115.615578] xone-gip gip0.0: gip_handle_pkt_announce: firmware=4.8.1908.0, hardware=1522.214.171.124 .. [ 8115.688157] xone-gip gip0.0: gip_parse_classes: class=Windows.Xbox.Input.Gamepad [ 8115.688159] xone-gip gip0.0: gip_parse_classes: class=Microsoft.Xbox.Input.ProgrammableGamepad .. [ 8115.688380] input: Microsoft X-Box One pad as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.3/usb3/3-6/3-6.1/3-6.1:1.0/gip0/gip0.0/input/input55 [ 8115.688508] xone-gip-gamepad gip0.0: gip_add_client: added [ 8115.704286] xone-gip gip0.1: gip_init_client: initialized .. [ 8115.752704] input: Microsoft X-Box One chatpad as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.3/usb3/3-6/3-6.1/3-6.1:1.0/gip0/gip0.1/input/input56 [ 8115.752961] input: Microsoft X-Box One chatpad as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:07:00.3/usb3/3-6/3-6.1/3-6.1:1.0/gip0/gip0.1/0003:045E:0B02.0010/input/input57 [ 8115.753198] hid-generic 0003:045E:0B02.0010: input,hidraw10: USB HID v1.01 Keyboard [Microsoft X-Box One chatpad] on gip0.1/input1 [ 8115.753219] xone-gip-chatpad gip0.1: gip_add_client: added [ 8116.412501] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input58 [ 8116.678046] input: Microsoft X-Box 360 pad 1 as /devices/virtual/input/input59
At this point, we're ready to test everything!
To test in
wine, I ran
wine control joy.cpl, and reviewed the listed 'Connected (xinput device)' box for 'Controller (Xbox One for Windows)'. In the 'Test Joystick' tab you can do inputs into the controller and see them reflected in the UI. That means we're good to go!
With that working, I was able to launch some of my favorite controller games like Ikenfell and No Man's Sky.
Help Ana, the adapter won't flash a pairing light!
I had this happen to! Unplug it, uninstall the
xone related stuff above, then reinstall cleanly (that is -- if asked, 'cleanbuild'), only then plug it in! That step above was important! 😉
Ana you missed a step!
Please contact me or make a PR to this article! I want this to be complete.
Please do not email me asking support questions about getting Steam, Lutris, or any game working on your machine.
Please do not email me about any devices other than the 'Xbox Elite Wireless Controler Series 2' and 'Xbox Wireless Adapter for Windows 10'.
Please do not email me about using something other than
xone on Arch Linux x86_64.
Please do not email me if you have problems with the AUR packages.