Multiple Controller Types on Linux (plus wired headset!)

My son received an Xbox Series X controller for Christmas, and I picked up a third party wireless receiver for it.

Blue Xbox Series X controller

I installed this driver and it worked great:
https://github.com/dlundqvist/xone

However, that driver clobbers the in-built wireless Xbox 360 controller support – immediately our old Xbox 360 controller stopped working along with the two different 8BitDo Ultimate and Ultimate 2.

I could get the 8BitDo controllers to work by disconnecting their receivers and instead connecting via bluetooth. However, support on bluetooth was iffy and connectivity was a spotty – often requiring a reconnection each time we wanted to use them.

I ended up moving the Xbox controller to bluetooth and removing the Xone driver, keeping the 8BitDo controllers on 2.4GHz.

But then my son “needed” a headset (or, in fact, needed to stop borrowing my wife’s headset).

Options were:

  1. Long USB cable headset (Expensive-ish, inconvenient)
  2. Dedicated wireless headset (Expensive, convenient)
  3. Integrated 3.5mm jack wired headset, connected through the Xbox controller (cheap, convient)

However – using the Xbox controller as a base for the wired headset isn’t possible on bluetooth. It must be connected through the wireless receiver.

Turns out the fix was easy – remove the old xbox 360 driver (xpad) and replace with the xpad-noone driver. Then reinstall the xone driver.

Immediately Ubuntu recognised the Xbox controller as a sound card with mic input and everything just started working as intended. Amazing.

And I was all geared up for a fight.