Cannot enable Bluetooth on Fedora 44 (Realtek 0bda:b853 / RTL8852BU) - "Opcode 0xfcf0 failed: -16"

Hi everyone,

I’m having an issue where I cannot enable Bluetooth on my Fedora 44 system. When I go to GNOME Settings and click the Bluetooth toggle, it turns on for a split second and immediately turns itself back off.

I am dual-booting with Windows 11. Bluetooth works perfectly fine in Windows, but fails in Fedora.

Here is my system information and the relevant logs:

System Environment:

  • Hardware Model: ThinkBook 14 G8+ AHP
  • OS: Fedora 44 (Dual boot with Windows 11)
  • Kernel: 7.0.4-200.fc44.x86_64
  • Desktop Environment: GNOME Shell 50.1
  • Power Management: tuned-ppd
  • Bluetooth Hardware: Realtek Semiconductor Corp. Bluetooth Radio (ID 0bda:b853 - RTL8852BU)

Logs & Command Outputs:

lsusb | grep -i blue

Bus 001 Device 004: ID 0bda:b853 Realtek Semiconductor Corp. Bluetooth Radio

systemctl status bluetooth shows the service is actively running without errors:

● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-05-13 15:47:58 CST
     Status: "Running"

However, sudo dmesg | grep Bluetooth reveals an opcode failure (Error -16, which I suspect means -EBUSY):

[    7.470813] Bluetooth: Core ver 2.22
...
[    7.566517] Bluetooth: hci0: RTL: btrtl_initialize: key id 0
[    7.566523] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin
[    7.572778] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[    7.586296] Bluetooth: hci0: AOSP extensions version v0.96
...
[ 1369.379070] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[ 1369.384570] Bluetooth: hci0: Opcode 0xfcf0 failed: -16
[ 1369.387526] Bluetooth: hci0: AOSP extensions version v0.96
...
[ 1496.203403] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[ 1496.209648] Bluetooth: hci0: Opcode 0xfcf0 failed: -16

systemctl status systemd-rfkill.service shows it is inactive (dead) and deactivated successfully.

What I have tried so far (without success):

  1. Reloading the kernel module: I ran sudo modprobe -r btusb && sudo modprobe btusb. The module unloads and reloads successfully, but the hardware remains stuck in a busy state (producing the same error).
  2. Firmware: Checked linux-firmware packages, and they are already fully up to date.
  3. Turned off “Fast Startup” in Windows and rebooted into fedora, but still didn’t work.

Has anyone encountered this Opcode 0xfcf0 failed: -16 error with Realtek RTL8852BU adapters? Any help or pointers on how to fix this would be greatly appreciated!

Thanks in advance. :smiling_face_with_tear:

Additional information: I even tried disabling the Bluetooth driver in Windows and then rebooting into fedora, yet I still cannot use Bluetooth in fedora. :sob:

As I understand it from a some quick internet research, Windows has a separate “USB Selective Suspend” setting that can leave USB devices in a suspended state even across reboots and that can confuse the btusb driver in Linux.

In your Windows install, you might be able to fix that by opening Device Manager, expanding “Universal Serial Bus controllers,” finding your Realtek Bluetooth device (or any USB root hub/host controller, really), and unchecking “Allow the computer to turn off this device to save power” in “Power Management” in Properties.
Device Manager > Universal Serial Bus controllers > the Realtek device > Properties > Power Management > uncheck "Allow the computer to turn off this device to save power"

Then, change the advanced power settings for USB selective suspend in Power Options to “Disabled.”
Power Options > Change plan settings > Change advanced power settings > USB settings > USB selective suspend setting > set to "Disabled"

Complete a full shutdown from Windows, not just a restart, and boot into Fedora. The benefit here seems to be that you don’t even need to mess around with your Linux install.

Thanks for the detailed suggestion, Bryan!

I’m sure that I followed your steps: disabled “USB Selective Suspend”, unchecked “Allow the computer to turn off this device” in Device Manager, and performed a full shutdown. But it still didn’t work.

But the output of demsg didn’t come up with

Opcode 0xfcf0 failed: -16

Instead, it finally said

Bluetooth: BNEP socket layer initialized

Does it solve the problem to some extent? May I ask if there is a way to further investigate the issue? Could there be other possible causes for this problem?

Happy to try and help… I’ve dealt with far too many bluetooth issues myself, so I know how frustrating it can be!

The good news is that the changes in Windows do seem to have helped the bluetooth loading along in Fedora and there are a few things to look at in Fedora.

Can you post the results from a couple commands?

sudo journalctl -u bluetooth.service -n 100 --no-pager
rfkill list all
sudo dmesg | grep -iE 'bluetooth|btusb|hci0|rfkill' | tail -40

Those should help us further narrow things down.

Sure!
The output of sudo journalctl -u bluetooth.service -n 100 --no-pager was so long that I decided to take a portion of the output, but I assure you that the other parts of the output are the same as this part, just at different times.

5月 13 12:39:58 my-fedora bluetoothd[1168]: Bluetooth management interface 1.23 initialized
5月 13 12:41:43 my-fedora bluetoothd[1168]: Terminating
5月 13 12:41:43 my-fedora systemd[1]: Stopping bluetooth.service - Bluetooth service...
5月 13 12:41:43 my-fedora bluetoothd[1168]: Stopping SDP server
5月 13 12:41:43 my-fedora bluetoothd[1168]: Exit
5月 13 12:41:43 my-fedora systemd[1]: bluetooth.service: Deactivated successfully.
5月 13 12:41:43 my-fedora systemd[1]: Stopped bluetooth.service - Bluetooth service.
5月 13 12:41:43 my-fedora systemd[1]: Starting bluetooth.service - Bluetooth service...
5月 13 12:41:43 my-fedora bluetoothd[8872]: Bluetooth daemon 5.86
5月 13 12:41:43 my-fedora systemd[1]: Started bluetooth.service - Bluetooth service.
5月 13 12:41:43 my-fedora bluetoothd[8872]: Starting SDP server
5月 13 12:41:43 my-fedora bluetoothd[8872]: Bluetooth management interface 1.23 initialized
5月 13 12:51:09 my-fedora bluetoothd[8872]: Terminating
5月 13 12:51:09 my-fedora systemd[1]: Stopping bluetooth.service - Bluetooth service...
5月 13 12:51:09 my-fedora bluetoothd[8872]: Stopping SDP server
5月 13 12:51:09 my-fedora bluetoothd[8872]: Exit
5月 13 12:51:09 my-fedora systemd[1]: bluetooth.service: Deactivated successfully.
5月 13 12:51:09 my-fedora systemd[1]: Stopped bluetooth.service - Bluetooth service.
-- Boot 88848bf6591441c3a50051aca46eb389 --
5月 13 12:51:35 my-fedora systemd[1]: Starting bluetooth.service - Bluetooth service...
5月 13 12:51:35 my-fedora bluetoothd[1169]: Bluetooth daemon 5.86
5月 13 12:51:35 my-fedora bluetoothd[1169]: Starting SDP server
5月 13 12:51:35 my-fedora systemd[1]: Started bluetooth.service - Bluetooth service.
5月 13 12:51:35 my-fedora bluetoothd[1169]: Bluetooth management interface 1.23 initialized
5月 13 12:51:57 my-fedora bluetoothd[1169]: Terminating
5月 13 12:51:57 my-fedora systemd[1]: Stopping bluetooth.service - Bluetooth service...
5月 13 12:51:57 my-fedora bluetoothd[1169]: Stopping SDP server
5月 13 12:51:57 my-fedora bluetoothd[1169]: Exit
5月 13 12:51:57 my-fedora systemd[1]: bluetooth.service: Deactivated successfully.
5月 13 12:51:57 my-fedora systemd[1]: Stopped bluetooth.service - Bluetooth service.
-- Boot 0a70af21d2ea4c94aeaf4683062af0a8 --
...

I think the output of this command shows that my Bluetooth service looks normal, right?

rfkill list all

0: ideapad_wlan: Wireless LAN
	Soft blocked: no
	Hard blocked: no
1: ideapad_bluetooth: Bluetooth
	Soft blocked: no
	Hard blocked: no
3: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
6: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

sudo dmesg | grep -iE 'bluetooth|btusb|hci0|rfkill' | tail -40

[    7.925013] Bluetooth: SCO socket layer initialized
[    7.979096] usbcore: registered new interface driver btusb
[    7.984563] Bluetooth: hci0: RTL: examining hci_ver=0b hci_rev=000b lmp_ver=0b lmp_subver=8852
[    7.987550] Bluetooth: hci0: RTL: rom_version status=0 version=3
[    7.990548] Bluetooth: hci0: RTL: btrtl_initialize: key id 0
[    7.990553] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin
[    7.998713] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[    8.010553] Bluetooth: hci0: AOSP extensions version v0.96
[    8.010561] Bluetooth: hci0: AOSP quality report is not supported
[    8.557444] rtw89_8852be 0000:05:00.0: rfkill hardware state changed to enable
[    8.670764] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    8.670771] Bluetooth: BNEP filters: protocol multicast
[    8.670779] Bluetooth: BNEP socket layer initialized
[   19.927629] rfkill: input handler disabled
[   33.224401] rfkill: input handler enabled
[   35.105625] rfkill: input handler disabled
[12341.876222] Bluetooth: hci0: RTL: examining hci_ver=0b hci_rev=000b lmp_ver=0b lmp_subver=8852
[12341.879215] Bluetooth: hci0: RTL: rom_version status=0 version=3
[12341.882237] Bluetooth: hci0: RTL: btrtl_initialize: key id 0
[12341.882242] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin
[12341.882310] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[12341.888216] Bluetooth: hci0: Opcode 0xfcf0 failed: -16
[12341.891220] Bluetooth: hci0: AOSP extensions version v0.96
[12341.891224] Bluetooth: hci0: AOSP quality report is not supported
[15805.111669] Bluetooth: hci0: RTL: examining hci_ver=0b hci_rev=000b lmp_ver=0b lmp_subver=8852
[15805.114663] Bluetooth: hci0: RTL: rom_version status=0 version=3
[15805.117669] Bluetooth: hci0: RTL: btrtl_initialize: key id 0
[15805.117674] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin
[15805.121746] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[15805.128660] Bluetooth: hci0: Opcode 0xfcf0 failed: -16
[15805.131669] Bluetooth: hci0: AOSP extensions version v0.96
[15805.131672] Bluetooth: hci0: AOSP quality report is not supported
[20265.837855] Bluetooth: hci0: RTL: examining hci_ver=0b hci_rev=000b lmp_ver=0b lmp_subver=8852
[20265.840844] Bluetooth: hci0: RTL: rom_version status=0 version=3
[20265.843849] Bluetooth: hci0: RTL: btrtl_initialize: key id 0
[20265.843853] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin
[20265.843948] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin
[20265.849851] Bluetooth: hci0: Opcode 0xfcf0 failed: -16
[20265.852863] Bluetooth: hci0: AOSP extensions version v0.96
[20265.852867] Bluetooth: hci0: AOSP quality report is not supported

Now something strange has happened: the Opcode 0xfcf0 failed: -16 error has appeared again… :sob:

To be frank, I feel a little bit upset now. Can you find any problems from the above information? Thanks again!

Well, there is a pattern in the journald log that repeats across boots:

bluetoothd initialized
  ...22 seconds later...
bluetoothd: Terminating        ← nobody asked it to do this
systemd: Stopping bluetooth.service

So, bluetoothd just keeps terminating itself for some reason and it appears that it’s neither you nor GNOME itself.

Our first step is probably to try and figure out what’s killing bluetoothd. If you’re willing to keep going, let’s increase the debugging verbosity:

sudo mkdir -p /etc/systemd/system/bluetooth.service.d
sudo tee /etc/systemd/system/bluetooth.service.d/debug.conf << 'EOF'
[Service]
Environment=BLUETOOTH_DEBUG_LEVEL=4
ExecStart=
ExecStart=/usr/libexec/bluetooth/bluetoothd -n -d --experimental
EOF

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

Then, run & watch this while trying to toggle bluetooth on: sudo journalctl -u bluetooth.service -f

Thanks for your advice! I successfully executed the command you gave.

However, a very telling symptom occurred: after running sudo journalctl -u bluetooth.service -f, the log output completely stopped and froze right after initializing the hostname plugin at first (as shown below).
And no matter how many times I clicked the Bluetooth toggle in the settings GUI, absolutely zero new logs were generated in the terminal:

5月 14 23:48:41 my-fedora bluetoothd[11688]: src/profile.c:create_ext() Created "Hands-Free unit"
5月 14 23:48:41 my-fedora bluetoothd[11688]: [:1.95:method_return] < [#33]
5月 14 23:48:41 my-fedora bluetoothd[11688]: bluetoothd[11688]: [org.freedesktop.hostname1:method_call] < org.freedesktop.DBus.Properties.GetAll
5月 14 23:48:41 my-fedora bluetoothd[11688]: [org.freedesktop.hostname1:method_call] < org.freedesktop.DBus.Properties.GetAll
5月 14 23:48:41 my-fedora bluetoothd[11688]: bluetoothd[11688]: plugins/hostname.c:property_changed() static hostname: 'my-fedora'
5月 14 23:48:41 my-fedora bluetoothd[11688]: bluetoothd[11688]: plugins/hostname.c:property_changed() pretty hostname: ''
5月 14 23:48:41 my-fedora bluetoothd[11688]: bluetoothd[11688]: plugins/hostname.c:property_changed() chassis: 'laptop'
5月 14 23:48:41 my-fedora bluetoothd[11688]: plugins/hostname.c:property_changed() static hostname: 'my-fedora'
5月 14 23:48:41 my-fedora bluetoothd[11688]: plugins/hostname.c:property_changed() pretty hostname: ''
5月 14 23:48:41 my-fedora bluetoothd[11688]: plugins/hostname.c:property_changed() chassis: 'laptop'

But after a minute or two, several more outputs popped up:

5月 14 23:51:25 my-fedora bluetoothd[11688]: bluetoothd[11688]: [:1.218:method_call] > org.freedesktop.DBus.ObjectManager.GetManagedObjects [#7]
5月 14 23:51:25 my-fedora bluetoothd[11688]: bluetoothd[11688]: [:1.218:method_return] < [#7]
5月 14 23:51:25 my-fedora bluetoothd[11688]: [:1.218:method_call] > org.freedesktop.DBus.ObjectManager.GetManagedObjects [#7]
5月 14 23:51:25 my-fedora bluetoothd[11688]: [:1.218:method_return] < [#7]

What’s more, I tried to run command bluetoothctl list in another terminal at the same time, but it just returned nothing.

Does that mean that the system can’t even find the Bluetooth device or something?

That’s what it looks like… The system isn’t reading a bluetooth device at all.

What does hciconfig -a spit out?

Here you are.

hciconfig -a

hci0:	Type: Primary  Bus: USB
	BD Address: 00:00:00:00:00:00  ACL MTU: 0:0  SCO MTU: 0:0
	DOWN 
	RX bytes:88 acl:0 sco:0 events:7 errors:0
	TX bytes:34 acl:0 sco:0 commands:7 errors:0
	Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
	Packet type: DM1 DH1 HV1 
	Link policy: 
	Link mode: PERIPHERAL ACCEPT

In addition, I also tried to execute the following two commands:
sudo hciconfig hci0 up

Can't init device hci0: No data available (61)

And
btmgmt info

Index list with 0 items

Do these debug messages provide any helpful information?

Those outputs confirm the firmware initialized the USB interface, but it failed to load. The root cause seems likely to be an incomplete firmware initialization and there’s a really good chance this is a driver conflict.

To test that hypothesis, you’ll have to unload the wifi driver stack completely, which will (obviously) drop your internet connection with:

sudo modprobe -r rtw89_8852be
sudo modprobe -r rtw89_pci
sudo modprobe -r rtw89_core

Then, you can fully reset the bluetooth usb device:

sudo modprobe -r btusb
sleep 2
sudo modprobe btusb
sleep 5

Re-running hciconfig -a and bluetoothctl list should give you a real MAC address and the latter command should show you the adapter.

If that all works, the permanent fix would be to make sure btusb is brought fully up before rtw89 claims the shared interface. You can accomplish that with a new modprobe “rule:”

sudo tee /etc/modprobe.d/rtl8852bu-load-order.conf << 'EOF'
# RTL8852BU: load Bluetooth before WiFi to avoid coex register conflict
softdep rtw89_8852be pre: btusb
EOF
sudo dracut --force
sudo reboot

Problems with bluetooth in Linux are all too common. If bluetooth is “mission critical” for your use of Linux, it is well worth the small cost of a USB dongle to use while investigating the issue with onboard devices.

The results remain the same… still show the all-zero MAC address… :sob:

had also bluetooth issues and fixed it. (I use Fedora 44 Silverblue with Kernel 7)
I added sudo rpm-ostree kargs --append=usbcore.autosuspend=-1 and now it works. Maybe this helps

https://dredyson.com/how-im-using-the-cannot-enable-bluetooth-on-fedora-44-realtek-0bdab853-rtl8852bu-opcode-0xfcf0-failed-16-debugging-workflow-to-make-money-as-a-freelance-developer-a-complete-step-by-step-gu/ uses this example as an ad for freelance tech support, but does offer a solution.

Okay, one of the few things we seem to know is the wifi driver isn’t the cause; rather, it looks like the chip itself is ignoring the config. Let’s verify which firmware files are being used:

ls -la /lib/firmware/rtl_bt/rtl8852bu*
rpm -V linux-firmware | grep rtl8852bu
rpm -q linux-firmware
find /lib/firmware /usr/lib/firmware -name "*8852bu*" 2>/dev/null
find /lib/firmware /usr/lib/firmware -name "*8852b*" 2>/dev/null

Thanks for your advice… I tried it the way you said but it didn’t solve my problem…

Thanks for sharing the detailed workflow and the link.

Unfortunately, after trying the steps you mentioned in your blog, the Bluetooth adapter still initializes with the same all-zero MAC address and -16 error in Fedora.

That being said, I’m glad my stubborn troubleshooting case could serve as a useful real-world example for your freelance tech support article. Thanks again for the effort and the write-up.

Thank you for your long-term advice and support! Here are the outputs of these commands.

ls -la /lib/firmware/rtl_bt/rtl8852bu*

rw-r--r--. 1 root root      6  5月19日 08:00 /lib/firmware/rtl_bt/rtl8852bu_config.bin
lrwxrwxrwx. 1 root root     23  5月19日 08:00 /lib/firmware/rtl_bt/rtl8852bu_config.bin.xz -> rtl8761bu_config.bin.xz
-rw-r--r--. 1 root root 129733  5月23日 15:01 /lib/firmware/rtl_bt/rtl8852bu_fw.bin
-rw-r--r--. 1 root root  65580  5月19日 08:00 /lib/firmware/rtl_bt/rtl8852bu_fw.bin.xz

rpm -V linux-firmware | grep rtl8852bu
Nothing happened.

rpm -q linux-firmware

linux-firmware-20260519-1.fc44.noarch

find /lib/firmware /usr/lib/firmware -name "*8852bu*" 2>/dev/null

/lib/firmware/rtl_bt/rtl8852bu_config.bin.xz
/lib/firmware/rtl_bt/rtl8852bu_fw.bin.xz
/lib/firmware/rtl_bt/rtl8852bu_fw.bin
/lib/firmware/rtl_bt/rtl8852bu_config.bin
/usr/lib/firmware/rtl_bt/rtl8852bu_config.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852bu_fw.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852bu_fw.bin
/usr/lib/firmware/rtl_bt/rtl8852bu_config.bin

find /lib/firmware /usr/lib/firmware -name "*8852b*" 2>/dev/null

/lib/firmware/rtl_bt/rtl8852btu_config.bin.xz
/lib/firmware/rtl_bt/rtl8852btu_fw.bin.xz
/lib/firmware/rtl_bt/rtl8852bu_config.bin.xz
/lib/firmware/rtl_bt/rtl8852bu_fw.bin.xz
/lib/firmware/rtl_bt/rtl8852bu_fw.bin
/lib/firmware/rtl_bt/rtl8852bu_config.bin
/lib/firmware/rtw89/rtw8852b_fw-1.bin.xz
/lib/firmware/rtw89/rtw8852b_fw-2.bin.xz
/lib/firmware/rtw89/rtw8852b_fw.bin.xz
/lib/firmware/rtw89/rtw8852bt_fw-1.bin.xz
/lib/firmware/rtw89/rtw8852bt_fw.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852btu_config.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852btu_fw.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852bu_config.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852bu_fw.bin.xz
/usr/lib/firmware/rtl_bt/rtl8852bu_fw.bin
/usr/lib/firmware/rtl_bt/rtl8852bu_config.bin
/usr/lib/firmware/rtw89/rtw8852b_fw-1.bin.xz
/usr/lib/firmware/rtw89/rtw8852b_fw-2.bin.xz
/usr/lib/firmware/rtw89/rtw8852b_fw.bin.xz
/usr/lib/firmware/rtw89/rtw8852bt_fw-1.bin.xz
/usr/lib/firmware/rtw89/rtw8852bt_fw.bin.xz

the realtek drivers are contained in realtek-firmware not linux-firmware