Pop!os 24.04 - Bluetooth not working with fix

Fix: Bluetooth not working on Framework 16 with Pop!_OS 24.04

Hardware: Framework Laptop 16
OS: Pop!_OS 24.04
Chip: MediaTek MT7922 (AMD RZ616 — the default WiFi/BT card)
Symptom: Bluetooth toggle greyed out in Settings, bluetoothctl show returns “No default controller available”


Background

The MT7922 shares a single card for WiFi and Bluetooth. WiFi works fine out of the box, but Bluetooth fails silently on fresh installs. The root cause is a bug in the btmtk kernel driver that ships with System76’s custom kernel (7.0.9-76070009). The driver sends a WMT FUNC_CTRL command that the firmware rejects with error -22, preventing the Bluetooth controller from ever initialising.

The fix is switching to Ubuntu’s HWE-edge kernel (6.18+), which includes the patch btmtk: accept too short WMT FUNC_CTRL events that resolves this.


Confirm this is your issue

Run the following and check for the key error:

sudo dmesg | grep -i bluetooth | tail -20

If you see this line, this guide is for you:

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

Also confirm your card:

lspci | grep -i network

Expected output:

02:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter


Fix

Step 1 — Install the HWE-edge kernel

sudo apt update
sudo apt install linux-image-generic-hwe-24.04-edge linux-headers-generic-hwe-24.04-edge

This installs kernel 6.18+ from Ubuntu’s hardware enablement stack and will auto-update as newer kernels are released.

Step 2 — Set it as the default boot entry

sudo bootctl set-default Pop_OS-current.conf

Step 3 — Reboot

sudo reboot

Step 4 — Verify

After rebooting, confirm you’re on the new kernel and BT is working:

uname -r
# Should show 6.18.x or newer, not 7.0.9-76070009

bluetoothctl show
# Should show your controller details, not "No default controller available"


Why not the System76 kernel?

System76’s kernel (7.0.9-76070009) does not yet include the upstream btmtk fix. The HWE-edge kernel does. Both kernels support the MT7922 WiFi fine — this only affects Bluetooth initialisation.

The System76 kernel remains installed and available from the boot menu if you need it. When System76 ships the fix in a future kernel update, you can switch back if you prefer.


If Bluetooth breaks again after a future update

A kernel update via apt upgrade may reset the default boot entry back to the System76 kernel. If BT stops working after an update:

# Confirm the error is back
sudo dmesg | grep -i bluetooth | tail -20

# Check which kernel is running
uname -r

# If it shows 7.0.9-76070009, reset the default
sudo bootctl set-default Pop_OS-current.conf
sudo reboot


Additional note: boot menu

If you want to manually select a kernel at boot, hold Space during startup to bring up the systemd-boot menu. The entries are:

  • Pop!_OS (current) — HWE-edge kernel, BT working
  • Pop!_OS (old kernel) — System76 kernel, BT broken

Tested on: Framework Laptop 16 | Pop!_OS 24.04 | MT7922 (0e8d:e616) | June 2026

Note: code and help was done with Claude.ai, but was absolutely the best explanation and fix I found for this specific issue.

Kernel 7.0.10 or above has the bluetooth fix.

1 Like

I’ll give that a shot later and report back. Thanks!

Yep, confirmed. Thanks for the easier fix. Didn’t even see 7.0.11 as an option :upside_down_face: