I’m running openSUSE Leap 16.0 on an HP EliteBook 645 14 inch G10 Notebook PC and Bluetooth is completely non-functional. I cannot toggle it on from GNOME settings or bluetoothctl.
System info:
OS: openSUSE Leap 16.0
Kernel: 6.12.0-160000.33-default
Hardware: HP EliteBook 645 14 inch G10
Bluetooth chip: MediaTek MT7922 (USB ID: 0e8d:223c)
The problem:
bluetoothctl reports “No default controller available” and the Bluetooth toggle in GNOME settings does nothing.
Kernel logs (sudo dmesg) show this error every time btusb loads:
Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20251118163447
Bluetooth: hci0: Failed to send wmt func ctrl (-22)
Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
What I have already tried:
Rebooting
Reloading btusb and btmtk modules
Toggling USB power/autosuspend via sysfs
Unbinding and rebinding the btusb driver
Disabling USB autosuspend (modprobe btusb enable_autosuspend=N reset=Y)
Bringing the WiFi interface (wlp2s0) down and up before reloading btusb
Nothing works. The error “-22 (EINVAL)” on “wmt func ctrl” appears consistently on every load.
Question:
Is there a known fix or workaround for this on Leap 16.0 / kernel 6.12? Is there a patched kernel available? Has anyone else with a MediaTek MT7922 combo chip faced this?
I found this commit in kernel 6.12.91 changlog might fix my problem:
commit 0df9f458111481c0a9523b08171c97a61e026ec9
Author: Pauli Virtanen <pav@iki.fi>
Date: Fri Apr 24 22:24:29 2026 +0300
Bluetooth: btmtk: accept too short WMT FUNC_CTRL events
commit e3ac0d9f1a205f33a43fba3b79ef74d2f604c78b upstream.
MT7925 (USB ID 0e8d:e025) on fw version 20260106153314 sends WMT
FUNC_CTRL events that are missing the status field.
Prior to commit 006b9943b982 ("Bluetooth: btmtk: validate WMT event SKB
length before struct access") the status was read from out-of-bounds of
SKB data, which usually would result to success with
BTMTK_WMT_ON_UNDONE, although I don't know the intent here. The bounds
check added in that commit returns with error instead, producing
"Bluetooth: hci0: Failed to send wmt func ctrl (-22)" and makes the
device unusable.
Fix the regression by interpreting too short packet as status
BTMTK_WMT_ON_UNDONE, which makes the device work normally again.
Fixes: 634a4408c061 ("Bluetooth: btmtk: validate WMT event SKB length before struct access")
Signed-off-by: Pauli Virtanen <pav@iki.fi>
Tested-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com> # MT7922 (0489:e0e2)
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This is a known regression for Mediatek cards. I would wait for the fix, meanwhile you might install an older kernel, for instance kernel-default-6.12.0-160000.32.1 which should be available in the standard repo.
Upgrading to kernel:stable, currently at 7.0.10, would certainly solve the Bluetooth problem but might cause other trouble depending on your system config, not worth the hassle in my view unless you are a “let’s tweak that” geeko
I tested the kernel from the OBS Kernel:SL-16.0 repo, it resolved the Bluetooth issue, but the Wi-Fi interface disappeared entirely. I’ve since rolled back to kernel-default-6.12.0-160000.32.1, which works flawlessly. I’m not sure how a regression like this made it into kernel-default-6.12.0-160000.33.1 it makes me wonder whether sufficient testing was done before release. This kind of issue is concerning for the distro’s overall reliability.
Has nothing to do with the release testing of the distribution. This was an issue introduced into the kernel, that was then backported to every stable kernel. The issue was identified, and fixed in the kernel projects source and then that fix was also backported to ever stable kernel.
Instead of lamenting about some mystical ‘distro reliability issue’ maybe start with posting what wireless chipset your system has and any errors during boot.
Now I got the full picture about this regression and backport fix workflow, I wish if i didn’t remove that kernel from SL-16 repo so I can gather more logs about wireless issue. But I’m sticking to kernel-6.12.0-160000.32.1 so I can continue using my production laptop properly.
While testing kernel 6.12.0-160000.265.g3d4fdf4-default from the Kernel:SL-16.0 repo as a workaround for this bug, I found that it introduces a new regression: the mt7921e module is completely absent from the kernel modules directory, causing total loss of Wi-Fi (and USB tethering).
System info:
OS: openSUSE Leap 16.0
Hardware: HP EliteBook 645 14 inch G10
Chipset: MediaTek MT7922 [14c3:0616] (rev 01)
Symptoms on 6.12.0-160000.265.g3d4fdf4-default:
MT7922 visible in lspci but shows no “Kernel driver in use” entry
mt7921e module completely missing:
$ sudo modprobe mt7921e
modprobe: FATAL: Module mt7921e not found in directory /usr/lib/modules/6.12.0-160000.265.g3d4fdf4-default
No mt79* entries in dmesg at all
Wi-Fi non-functional; USB tethering also broken
lspci output:
02:00.0 Network controller [0280]: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter [14c3:0616] (rev 01)
Subsystem: MEDIATEK Corp. Device [14c3:223c]
(no Kernel driver in use line)