Bluetooth keeps disconnecting DualSense controllers from time to time

Hey guys, how is it going?

I’m having some trouble running a pair of DualSense controllers over bluetooth.

When one controller is connected everything works fine, I’ve run it for several hours between weeks and no problem so far. But, when I try to connect a second controller to play with my girlfriend, after a random time one of the controllers disconnect and refuses to connect again.
It’s a pain in the ass to connect after that, usually we have to turn both controllers off and on again several times until we can connect both. Usually I just get tired of trying to reconnect the problematic controller and run it with a cable, which works fine every time.

The time between disconnects is completely random, varying from one controller not being able to connect from the beginning, to disconnecting after 15/30/40/60/90/120 minutes.

Here’s some infos about my bluetooth.

❯ lsusb | grep -i bluetooth
Bus 001 Device 002: ID 8087:0029 Intel Corp. AX200 Bluetooth

In bluetoothctl:

[bluetooth]# list
Controller DC:41:A9:D7:A2:C5 BlueZ 5.63 [default]
[bluetooth]# show
Controller DC:41:A9:D7:A2:C5 (public)
	Name: BlueZ 5.63
	Alias: BlueZ 5.63
	Class: 0x006c0104
	Powered: yes
	Discoverable: no
	DiscoverableTimeout: 0x000000b4
	Pairable: yes
	UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
	UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
	UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
	UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
	UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
	UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
	UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
	UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
	UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
	UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
	Modalias: usb:v1D6Bp0246d053F
	Discovering: no
	Roles: central
	Roles: peripheral
Advertising Features:
	ActiveInstances: 0x00 (0)
	SupportedInstances: 0x08 (8)
	SupportedIncludes: tx-power
	SupportedIncludes: appearance
	SupportedIncludes: local-name
	SupportedSecondaryChannels: 1M
	SupportedSecondaryChannels: 2M
	SupportedSecondaryChannels: Coded

Wireless radios:

❯ nmcli radio all
enabled  enabled  enabled  enabled 
❯ rfkill list all
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
2: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

Some packages versions:

❯ dnf --showduplicates list --installed | grep 'kernel\|iwl\|bluez'
abrt-addon-kerneloops.x86_64                      2.14.6-9.fc35                        @anaconda                                      
bluez.x86_64                                      5.63-1.fc35                          @updates                                       
bluez-cups.x86_64                                 5.63-1.fc35                          @updates                                       
bluez-libs.i686                                   5.63-1.fc35                          @updates                                       
bluez-libs.x86_64                                 5.63-1.fc35                          @updates                                       
bluez-obexd.x86_64                                5.63-1.fc35                          @updates                                       
bluez-tools.x86_64                                0.2.0-0.17.git20170912.7cb788c.fc35  @fedora                                        
iwl100-firmware.noarch                                     @updates                                       
iwl1000-firmware.noarch                           1:                 @updates                                       
iwl105-firmware.noarch                                    @updates                                       
iwl135-firmware.noarch                                    @updates                                       
iwl2000-firmware.noarch                                   @updates                                       
iwl2030-firmware.noarch                                   @updates                                       
iwl3160-firmware.noarch                           1:                @updates                                       
iwl3945-firmware.noarch                                    @updates                                       
iwl4965-firmware.noarch                                  @updates                                       
iwl5000-firmware.noarch                                   @updates                                       
iwl5150-firmware.noarch                                     @updates                                       
iwl6000-firmware.noarch                                    @updates                                       
iwl6000g2a-firmware.noarch                                @updates                                       
iwl6000g2b-firmware.noarch                                @updates                                       
iwl6050-firmware.noarch                                    @updates                                       
iwl7260-firmware.noarch                           1:                @updates                                       
iwlax2xx-firmware.noarch                          20211216-127.fc35                    @updates                                       
kernel.x86_64                                     5.15.13-200.fc35                     @updates                                       
kernel.x86_64                                     5.15.14-200.fc35                     @updates                                       
kernel.x86_64                                     5.16.1-60.1.vanilla.1.fc35           @kernel-vanilla-stable                         
kernel-core.x86_64                                5.15.13-200.fc35                     @updates                                       
kernel-core.x86_64                                5.15.14-200.fc35                     @updates                                       
kernel-core.x86_64                                5.16.1-60.1.vanilla.1.fc35           @kernel-vanilla-stable                         
kernel-headers.x86_64                             5.15.4-200.fc35                      @updates                                       
kernel-modules.x86_64                             5.15.13-200.fc35                     @updates                                       
kernel-modules.x86_64                             5.15.14-200.fc35                     @updates                                       
kernel-modules.x86_64                             5.16.1-60.1.vanilla.1.fc35           @kernel-vanilla-stable                         
kernel-modules-extra.x86_64                       5.15.13-200.fc35                     @updates                                       
kernel-modules-extra.x86_64                       5.15.14-200.fc35                     @updates                                       
kernel-modules-extra.x86_64                       5.16.1-60.1.vanilla.1.fc35           @kernel-vanilla-stable                         
libreport-plugin-kerneloops.x86_64                2.15.2-6.fc35                        @anaconda

Infos about the controllers:

[bluetooth]# devices
Device D0:BC:C1:34:F5:29 DualSense - Red
Device D0:BC:C1:78:A6:DC DualSense - Black
[bluetooth]# info D0:BC:C1:34:F5:29
Device D0:BC:C1:34:F5:29 (public)
	Name: Wireless Controller
	Alias: DualSense - Red
	Class: 0x00002508
	Icon: input-gaming
	Paired: yes
	Trusted: yes
	Blocked: no
	Connected: no
	WakeAllowed: yes
	LegacyPairing: no
	UUID: Human Interface Device... (00001124-0000-1000-8000-00805f9b34fb)
	UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
	Modalias: usb:v054Cp0CE6d0100
[bluetooth]# info D0:BC:C1:78:A6:DC
Device D0:BC:C1:78:A6:DC (public)
	Name: Wireless Controller
	Alias: DualSense - Black
	Class: 0x00002508
	Icon: input-gaming
	Paired: yes
	Trusted: yes
	Blocked: no
	Connected: no
	WakeAllowed: yes
	LegacyPairing: no
	UUID: Human Interface Device... (00001124-0000-1000-8000-00805f9b34fb)
	UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
	Modalias: usb:v054Cp0CE6d0100

dmesg output (last time this issue have happened was January 18 late night):

As you can see, I’ve tried to update my system to kernel v5.16 to see if the changes made to iwlwifi could improve this problem, but after that started appearing this message here Bluetooth: hci0: Failed to read codec capabilities (-56) (as can be seen in the dmesg output). It seemed harder to reconnect also, comparing to kernel v5.15.

Do you guys have any idea what’s being causing this issues? Is there any more logs I can provide to help?

Thanks in advance!

Welcome to ask.:fedora:edora @olirafa

Does this might help you ?

Hi @ilikelinux!
Thanks for the link but unfortunately this didn’t help.

The problem happens with both controllers, so it’s not something hardware related I think.

Quitting the game didn’t change anything too, because it happened in different games and even out of any game - in Steam Big Picture or even in the Desktop.

Another thing I forgot to mention is that I’ve made a fresh install of Fedora 35 after three or four days of testing, to make sure it wasn’t some software that could be broken after one update or something like that. In that sense it was more or less the same as repairing the controllers, and it didn’t help either /:

So I’ve been trying to find information about why my Dualsense keeps disconnecting my Bluetooth headphones and I stumbled across this thread. Does the disconnection also occur for you between a Dualsense and a regular pair of BT headphones?

I think this might be some weird bandwidth limitation on the AX200.

  1. If I have a Dualsense and a BT headset that uses a higher bandwidth codec than SBC, the headset will disconnect whenever the Dualsense connects
  2. If I instead force the BT headset to use SBC, then it seems to work fine
  3. If I use an external USB Bluetooth dongle, this issue doesn’t occur.

Something is funky with the AX200 and I don’t know where exactly to file a bug for this.