Bluetooth not detecting devices on Fedora 38 caused by kernel

Yesterday, I installed Fedora 38 on my Thinkpad T430, but I have been having trouble with the Bluetooth feature. Although Bluetooth is turned on, it does not detect any Bluetooth devices. I tried to install Ubuntu 23.04, but the problem persisted. I then went back to Fedora 38 and attempted to install the Bluetooth driver manually, but still no luck.

Here is the information about my Bluetooth card:
Bus 001 Device 007: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]

I also attempted to update the firmware using fwupdmgr, but it did not resolve the issue. Additionally, I tried different kernels to see if that was causing the detection problem. The kernels I tried were:

  1. v5.19
  2. v6.0
  3. v6.1
  4. v6.2
  5. v6.3

After trying these kernels, I found that the problem appeared in kernel version 6.1 and above, while there was no issue in kernel 6.0 or earlier.

My main question is: Am I stuck with kernel 6.0 foerever? as later kernel versions (6.1, 6.2, 6.3) don’t fix my Bluetooth problem. Alternatively, is there a workaround or solution to fix the issue in kernel versions 6.1 and above?

If you’re feeling ambitious, you could try you identify exactly where the regression occurs using git bisect. See Bisecting a bug — The Linux Kernel documentation

Is it actually a kernel regression and not some change in configuration mapping? Just asking because it would seem unlikely that such a regression would not be known by the kernel team and they would definitely discuss it with the community in some fashion if that were the case I would hope.
Perhaps a look at the release changes could open an option currently being overlooked.

I’m gonna try to use git bisect to find the commit that caused the regression between kernel versions 6.0 and 6.1, but it might take me a while since it’s my first time using it. Plus, I’ve got a bunch of college assignments to finish up this week, so I’m a bit strapped for time.

I’m fairly confident that the issue with my Bluetooth is caused by a kernel regression. Whenever I switch to a kernel version below 6.1, such as 5.19 or 6.0, my Bluetooth detects devices perfectly and quickly. However, when I switch to a kernel version 6.1 or higher, the problem reappears. But just to be sure, I will try kernel 6.2 and then downgrade Bluez and Bluez-utils to check if the problem still persist.

Update:
After upgrading to kernel 6.2.13-300.fc38.x86_64 and then downgrading bluez, my bluetooth still can’t detect devices. So i think it’s really a kernel regression on kernel 6.1 that caused this issue.

There is broadcom-bt-firmware (upstream) in rpmfusion-nonfree tainted, it seems to have a firmware file applicable to your device:

$ dnf rq -l broadcom-bt-firmware | grep 21e6
/lib/firmware/brcm/BCM20702A1-0a5c-21e6.hcd

Assuming you already have rpmfusion-nonfree repo enabled, you can install the tainted repo then the package:

dnf install rpmfusion-nonfree-release-tainted
dnf install broadcom-bt-firmware

If you don’t please enable rpmfusion first:

dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Otherwise, before you go bisecting, collect the logs from both working and non-working kernel.

dmesg | grep -i blue

The device has mixed reports on hw probe Broadcom BCM20702 Bluetooth 4.0 [ThinkPad]

I already tried to install firmware and driver maually previously, but i haven’t tried to install it automatically using your suggestion method (rpmfussion-nonfree tainted). Unfortunately, after following your suggestion my bluetooth still can’t detect devices. Still, Thank You for the suggestion.

With all you have tried I suggest filing a bug at bugzilla.redhat.com against the kernel & bluetooth. Or maybe upstream against the kernel.

This seems hardware specific since I have not seen any similar reports that were not solved by firmware or installing the broadcom-wl package from rpmfusion. (you did not seem to mention if that package was installed)