Bluetooth Stopped Working After Kernel 7.0.7 Update

After running pacman -Syu on 2026-05-16 02:17:58, my Bluetooth completely stopped working. The system upgraded the kernel from 7.0.6.arch1-1 to 7.0.7.arch2-1, and immediately afterward Bluetooth became unavailable in GNOME Settings.

Symptoms

  • GNOME Settings shows Bluetooth as “Off” and cannot be toggled
  • bluetoothctl show returns “No default controller available”
  • Bluetooth daemon starts successfully but adapter initialization fails
  • Both standard linux (7.0.7) and linux-lts (6.18.31) kernels exhibit the same issue

Relevant Log Entries

From pacman.log:

[2026-05-16T02:20:23+0200] [ALPM] upgraded linux (7.0.6.arch1-1 -> 7.0.7.arch2-1)
[2026-05-16T02:20:23+0200] [ALPM] upgraded linux-lts (6.18.29-1 -> 6.18.31-1)

From kernel dmesg:

Bluetooth: hci0: Failed to send wmt func ctrl (-22)

From bluetoothctl:

[bluetoothctl]> show
No default controller available

Solution

After verifying that the firmware was intact and both standard and LTS kernels showed the same error, I downgraded the kernel to 7.0.6.arch1-1 using:

sudo downgrade linux

Selected linux-7.0.6.arch1-1 and rebooted:

sudo reboot
uname -r
# Output: 7.0.6.arch1-1

Bluetooth is now working perfectly again.

Has anyone else experienced this issue with kernel 7.0.7 and MediaTek Bluetooth adapters (MT7922/MT7925)?


System Details:

  • FIrmware: 03.06
  • OS: Arch Linux
  • Working Kernel: 7.0.6.arch1-1
  • Broken Kernel: 7.0.7.arch2-1 (and 6.18.31-1-lts)
  • linux-firmware-mediatek: 20260410-1
  • bluez: 5.86
  • Device: MediaTek MT7922
4 Likes

Same problem on my FL13 AMD 7040U, will downgrade to 7.0.6

It works on 7.0.6

I’m also experiencing the same problem.
A security patch was pushed in 7.0.7 and broke the mediatek drivers.
A fix is provided in 7.0.8 and is currently in the Core-Testing repo.

5 Likes

echo “options btusb enable_autosuspend=N” | sudo tee /etc/modprobe.d/btusb.conf

sudo tee /etc/udev/rules.d/99-btusb-mt7925.rules << ‘EOF’
ACTION==“add”, SUBSYSTEM==“usb”, ATTR{idVendor}==“0e8d”, ATTR{idProduct}==“0717”, RUN+=“/bin/sh -c ‘echo 0e8d 0717 > /sys/bus/usb/drivers/btusb/new_id’”
EOF

sudo udevadm control --reload-rules

this is a workaround until 7.0.8 drops, paste it into the terminal and reboot, it worked for me

2 Likes

thank you guys! I am happy I am not alone in this!

the newest update has just fixed that!! Arch has just updated!!

Can confirm that 7.0.8 no longer has the problem, though the LTS 6.18.31-1 probably still does.

1 Like

Yes, Bluetooth out on both my FW13 and 16 after 7.07. The systemd service starts normally, however there is no bluetooth stack, it’s just not there. I’m not going to downgrade, I think I’ll wait for a fix as fortunately I can rely on wired headphones (I don’t use any other bluetooth devices).

on fedora 44: kernel 7.0.8 is out => so you can update:

sudo dnf upgrade --refresh

7.0.8-arch1-1 is out and it appears to have fixed it.

1 Like

Same problem here with nixos unstable, you can avoid it by using 6.6 kernel or going to stable branch (6.12 has the problem, however nix-stable uses 7.0.3 and 7.0.6 theses are valid)

2 Likes

I just spotted this on Framework 13 (ryzen-7040) w/ Ubuntu, and generic kernel:

I’ve been running the 6.12 chain of kernel; upgrading from 6.12.87 (working fine) to 6.12.89, then 6.12.90 – both killed bluetooth.

Bluetooth suddenly ain’t working for me. I’m getting this:

sudo dmesg | grep -i blue
...
Bluetooth: hci0: Failed to send wmt func ctrl (-22)
...
  • OS: Debian Trixie 13.5
  • uname -v: #1 SMP PREEMPT_DYNAMIC Debian 6.12.88-1 (2026-05-15)
  • Device: Framework 13, AMD, MediaTek 7922

Bluetooth not working in 7.0.7 is a known problem.
7.0.7 implemented lots of security fixes, and this bloke bluetooth for some reason. Mainly due to buggy Mediatek firmware.

This kernel patch fixed the problem:

diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c
index 31ff133b6159..6a9020b2b249 100644
--- a/drivers/bluetooth/btmtk.c
+++ b/drivers/bluetooth/btmtk.c
@@ -678,8 +678,10 @@ static int btmtk_usb_hci_wmt_sync(struct hci_dev *hdev,
        case BTMTK_WMT_FUNC_CTRL:
                if (!skb_pull_data(data->evt_skb,
                                   sizeof(wmt_evt_funcc->status))) {
-                       err = -EINVAL;
-                       goto err_free_skb;
+                       //err = -EINVAL;
+                       //goto err_free_skb;
+                       status = BTMTK_WMT_ON_UNDONE;
+                       break;
                }
 
                wmt_evt_funcc = (struct btmtk_hci_wmt_evt_funcc *)wmt_evt;

Running NixOS unstable over here on my FW16. 7.0.7 definitely broke stuff but I just rebuilt withnixpkgs@f83fc3c which provides kernel 7.0.9 and I’m still having issues.

coucoucl0vr@TheUnreliable ~> uname -r
7.0.9
coucoucl0vr@TheUnreliable ~> run0 dmesg | grep -i "bluetooth: hci0"
[5970.403726] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20260224103448
[5970.543670] Bluetooth: hci0: Failed to send wmt func ctrl (-22)
[5970.543680] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.

Gonna have to override the kernel for now, I guess…

Now there is an issue… overriding the kernel was good until now, because I think they got rid of the kernel compiled, so from now on if you want the 7_0_6, you need to compile it, and it takes a couple of hours… (nixos case)

Linux kernel 7.0.10 has the bluetooth fix in it.

1 Like

the linux-zen kernel (linuxPackages_zen) is at 7.0.9 in unstable and it fixed the bluetooth issue for me. no compile required

That sounds like you have a cache miss. You can use nix-diff to debug why your derivation is not the same as the one cached. Customizing your kernel will cause a cache miss (unless your customization is the same as upstream and doesn’t make a difference).

1 Like

updated my FW16 this morning with 7.0.10 and bluetooth worked after a reboot.

1 Like