You are not logged in.

#1 2026-05-15 19:33:56

omniaeuismodest
Member
Registered: 2026-05-15
Posts: 1

Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

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

#2 2026-05-15 19:38:41

Isofruit
Member
Registered: 2026-05-15
Posts: 1

Re: Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

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

#3 2026-05-15 19:52:51

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,015

Re: Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

Online

#4 2026-05-17 20:33:30

sher424
Member
From: USSR ; )
Registered: 2021-02-27
Posts: 3
Website

Re: Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

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

#5 2026-05-19 09:38:58

nachtjasmin
Member
From: Germany
Registered: 2026-02-08
Posts: 3
Website

Re: Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

The update to kernel 7.0.8 seems to fix the problem.

Offline

#6 2026-07-09 16:44:41

kushal1729
Member
Registered: 2026-07-09
Posts: 2

Re: Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

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

#7 2026-07-09 16:46:02

kushal1729
Member
Registered: 2026-07-09
Posts: 2

Re: Bluetooth no longer initializes on MT7922 after kernel update to 7.0.7

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

Board footer

Powered by FluxBB