Changing Xbox controller driver

Not sure where to post this at. Is there a way that you could add, change, or update the driver for xbox controllers to the xbox series x driver? When you do a fresh install of the OS it defaults the driver to xbox 360. Steam does not let you change this. Is it hard coded somewhere ??? Thank you for all of your hard work! Amazing team!!! Love the OS!!!

Are you connecting the controller, with bluetooth, the dongle, or USB? I think Bazzite uses the xone driver to connect with the dongle. Not sure about bluetooth. USB uses xpad, which only supports wired Xbox One and Xbox 360, and defaults to the latter for unrecognized devices. That might be what’s happening. I assume there’s a compatibility reason for Bazzite not using regular xone and xpad-noone like Nobara.

I’m using a USB Bluetooth adapter. I have uninstalled all drivers that for the xbox controller, reinstalled the latest drivers for the xbox series x controller. I’ve used xpad and several other controller config softwares. The system sees the controller, I can get readouts through the terminal showing the controller inputs in real time. The problem is with Steam. It is some how hard coded to an xbox 360 controller. I have no clue how to override this. I have been through all of the config files and manually set it to my controller. It still defaults to a 360 controller.

I’m having an issue with (two) xbox controllers disconnecting when using a bluetooth adapter. I have tried two controllers, two adapters, have updated my controllers via windows 11 separately, but get consistent 4-5 second disconnects on the controller every so often. I’m 4-5 feet away from the adapter with no obstructions. Anyone else run into this issue on Bazzite OS? It seems to be a bluetooth stack issue potentially.

I get the same, changing the dongle to a different chipset helped a little now I can go 50 minutes or so

My system dont see my Xbox controller, but i found a way to fix it, the problem mainly was in Privacy setting at: /etc/bluetooth/main.conf and BLE mode on my usb bluetooth adapter, as Xbox controllers use BLE mode to pair. Here is what helps, i find that fix with chatgpt and ask him to make a tuto:

Xbox Controller not detected over Bluetooth on Bazzite/Linux — fix for CSR/Barrot 0a12:0001

I ran into an issue on Bazzite KDE where an Xbox Wireless Controller worked perfectly over USB and also connected normally over Bluetooth in Windows, but Bazzite/Linux could not detect it at all.

Bluetooth adapter:


ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle

However, bluetoothctl show reported manufacturer 2279, which means this is actually one of the Barrot-based adapters that identifies itself using the old CSR USB ID.

The following errors appeared during scanning:


org.bluez.Error.InProgress

and with btmgmt:


Unable to start discovery. status 0x0d (Invalid Parameters)

What fixed it

In my case, the problem was related to Bluetooth Privacy.

Open:


sudo nano /etc/bluetooth/main.conf

Under the [General] section, set:


Privacy = off

Important: if you previously had:


Privacy = network

replace it with off.

Save the file and restart Bluetooth:


sudo systemctl restart bluetooth

Then reset the Bluetooth controller settings with:


sudo btmgmt power off
sudo btmgmt privacy off
sudo btmgmt le on
sudo btmgmt bredr on
sudo btmgmt power on

Check the current state:


sudo btmgmt info

Under current settings, the regular privacy flag should no longer be present.

ll-privacy may still remain — that is fine.

Test Xbox Controller discovery

Put the Xbox Controller into pairing mode so the Xbox button is flashing rapidly.

Run an LE-only scan:


sudo btmgmt find -l

After applying the fix, my controller immediately appeared:


name Xbox Wireless Controller
type LE Public

So BLE discovery was finally working correctly.

Pair the controller

Stop the low-level scan:


sudo btmgmt stop-find

Then start:


bluetoothctl

Inside bluetoothctl, run:


power on
agent on
default-agent
scan le

Once the Xbox Controller appears, note its MAC address, for example:


68:6C:E6:59:1C:43

Then run:


pair 68:6C:E6:59:1C:43
trust 68:6C:E6:59:1C:43
connect 68:6C:E6:59:1C:43

You can verify the connection with:


info 68:6C:E6:59:1C:43

A successful result should look similar to:


Paired: yes
Bonded: yes
Trusted: yes
Connected: yes

After that, the Xbox Controller should work normally over Bluetooth in Bazzite/Steam.

Short version

If Bazzite/Linux detects your adapter as:


0a12:0001 Cambridge Silicon Radio

but cannot find your Xbox Controller, try:


# /etc/bluetooth/main.conf

[General]
Privacy = off

Then run:


sudo systemctl restart bluetooth

sudo btmgmt power off
sudo btmgmt privacy off
sudo btmgmt le on
sudo btmgmt bredr on
sudo btmgmt power on

sudo btmgmt find -l

In my case, disabling Bluetooth Privacy immediately fixed BLE scanning, and the Xbox Wireless Controller became visible and connected successfully.

One more note: run btmgmt commands with sudo. Without it, you may get:


status 0x14 (Permission Denied)

Also, if the controller is detected with a very weak RSSI such as -90 to -100, keep it close to the Bluetooth dongle during the first pairing attempt.