You are not logged in.
Problem: Bluetooth stopped working after `pacman -Syu`. The MT7922 controller appeared as `hci0` but failed to initialize, with `Failed to send wmt func ctrl (-22)` in dmesg and "No default controller available" in `bluetoothctl`.
Cause: A regression in the `mt7921e`/`btmtk` driver in kernel `7.0.7.arch2-1`. Firmware downgrades (to `20260309` and `20260110`) didn't help — proving the firmware wasn't the issue.
Temporary Fix: Downgraded the kernel to `linux-7.0.6.arch1-1` (from the local pacman cache) and rebooted.
Distro: Arch Linux
Desktop: GNOME - Wayland
Hardware: Lenovo IdeaPad with MediaTek MT7922 (Foxconn/Hon Hai, USB ID 0489:e0d8) — combo Wi-Fi 6E / Bluetooth 5.2
Broken kernel: linux 7.0.7.arch2-1
Working kernel: linux 7.0.6.arch1-1
bluez: 5.86-6
linux-firmware-mediatek: 20260410-1 (firmware version was not the cause)
Offline
I'm having a similar issue (also Gnome Wayland)
```
[ 3.162592] Bluetooth: hci0: Failed to send wmt func ctrl (-22)
[ 3.163587] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
```
However, when I boot into the last LTS kernel via systemd-boot, which is 6.18.30-1-lts the issue still persists.
Offline
Online
Same as on Debian. Updating from 13.4 6.12.86-1 (2026-05-08) x86_64 to 13.5 6.12.88-1 (2026-05-15) x86_64 broke the bluetooth.
Booting with 6.12.86-1 helps.
# dmesg 2>&1 | grep -iE 'bluetooth'
6.12.86-1 (Debian 13.4)
[ 6.182974] Bluetooth: Core ver 2.22
[ 6.182997] NET: Registered PF_BLUETOOTH protocol family
[ 6.182998] Bluetooth: HCI device and connection manager initialized
[ 6.183005] Bluetooth: HCI socket layer initialized
[ 6.183007] Bluetooth: L2CAP socket layer initialized
[ 6.183012] Bluetooth: SCO socket layer initialized
[ 6.238629] usbcore: registered new interface driver btusb
[ 6.251577] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20241106151414
[ 6.408715] Bluetooth: hci0: Device setup in 166129 usecs
[ 6.408720] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
[ 7.091092] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 7.091096] Bluetooth: BNEP filters: protocol multicast
[ 7.091101] Bluetooth: BNEP socket layer initialized
[ 7.092113] Bluetooth: MGMT ver 1.23
[ 7.121377] Bluetooth: RFCOMM TTY layer initialized
[ 7.121384] Bluetooth: RFCOMM socket layer initialized
[ 7.121388] Bluetooth: RFCOMM ver 1.11
6.12.88-1 (Debian 13.5)
[ 6.109487] Bluetooth: Core ver 2.22
[ 6.109504] NET: Registered PF_BLUETOOTH protocol family
[ 6.109505] Bluetooth: HCI device and connection manager initialized
[ 6.109508] Bluetooth: HCI socket layer initialized
[ 6.109510] Bluetooth: L2CAP socket layer initialized
[ 6.109513] Bluetooth: SCO socket layer initialized
[ 6.215379] usbcore: registered new interface driver btusb
[ 6.227619] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20241106151414
[ 7.019149] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 7.019152] Bluetooth: BNEP filters: protocol multicast
[ 7.019155] Bluetooth: BNEP socket layer initialized
[ 27.802781] Bluetooth: hci0: Failed to send wmt func ctrl (-22)
[ 27.802790] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
Last edited by sher424 (2026-05-17 20:36:42)
Offline
The update to kernel 7.0.8 seems to fix the problem.
Offline
Environment
- **Hardware:** Lenovo LOQ 15APH8 (82XT) — reproduces on any system with Foxconn/MediaTek USB BT adapter `0489:e0cd` (MT7921/MT7961)
- **OS:** Pop!_OS 24.04 LTS
- **Broken kernel:** `7.0.9-76070009-generic`
- **Fixed kernel:** `7.0.11-76070011-generic` (already shipped, already on disk)
### Symptoms
Bluetooth appears enabled in `rfkill` and `systemctl`, but the adapter is stuck DOWN with a null MAC address:
```
$ hciconfig
hci0: Type: Primary Bus: USB
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
DOWN
```
```
$ bluetoothctl power on
# fails silently or errors
```
`dmesg` shows this error on every boot and every module reload:
```
Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20251223091725
Bluetooth: hci0: Failed to send wmt func ctrl (-22)
Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
```
### Root Cause (diagnosed via USB traffic capture)
The `btmtk.ko` driver in kernel 7.0.9 sends a `WMT_FUNC_CTRL` (enable) command to the chip
**without first downloading the firmware patch.** The chip responds with status `0x01`
(`BTMTK_WMT_ON_PROGRESS`) — meaning "still initializing, firmware not loaded."
The driver treats this as a fatal error and returns `-EINVAL` (-22), leaving hci0 permanently DOWN.
USB capture of the failing exchange (via `usbmon`):
```
# WMT FUNC_CTRL sent:
Co 6ffc 06 01 06 02 00 00 01
# Chip responds: status = 0x01 (PROGRESS, not DONE):
Ci e4 05 02 06 01 00 00
^^
0x01 = WMT_ON_PROGRESS — driver should retry, instead aborts
```
The `btmtk.ko` srcversion changed between 7.0.9 and 7.0.11 (btusb.ko did NOT), confirming the fix is specifically in btmtk:
| Kernel | btmtk srcversion | btusb srcversion |
|--------|-----------------|-----------------|
| 7.0.9 | B8C93592137DE9C317B098A | 8E4D929738A80CF73A71EE8 |
| 7.0.11 | 88B08DFD5BDC83E613863D8 | 8E4D929738A80CF73A71EE8 |
### Fix
Switch the default boot kernel to 7.0.11 (already installed):
```bash
sudo kernelstub \
--kernel-path /boot/vmlinuz-7.0.11-76070011-generic \
--initrd-path /boot/initrd.img-7.0.11-76070011-generic
sudo reboot
```
After reboot:
```bash
uname -r # → 7.0.11-76070011-generic
bluetoothctl power on # → Changing power on succeeded
```
### How to confirm it's the same issue
```bash
# Check for the exact error:
sudo dmesg | grep "wmt func ctrl"
# → Bluetooth: hci0: Failed to send wmt func ctrl (-22)
# Check hci0 is stuck with null MAC:
hciconfig | grep "BD Address"
# → BD Address: 00:00:00:00:00:00
# Confirm kernel version:
uname -r
# → 7.0.9-76070009-generic (broken)
```
Offline
Adding a confirmed diagnosis for the Pop!_OS variant of this bug (kernel 7.0.9, not 7.0.7, but same root cause):
Via USB traffic capture (`usbmon`), the exact failure is:
1. Driver sends `WMT_FUNC_CTRL ENABLE` (`6ffc 06 01 06 02 00 00 01`) without loading firmware first
2. Chip responds with status byte `0x01` = `BTMTK_WMT_ON_PROGRESS`
3. Driver mishandles `PROGRESS` as a fatal error, returns `-EINVAL`
The `btmtk.ko` srcversion changed between 7.0.9 and 7.0.11 (btusb unchanged), confirming the fix is specifically in the btmtk driver. On Pop!_OS, switching to 7.0.11 via `kernelstub` resolves it immediately.
Offline