Public bug reported:
SUMMARY
On kernel 6.8.0-139-generic, the Bluetooth controller on a MediaTek
MT7922 Wi-Fi/Bluetooth combo adapter fails to initialize. The kernel
throws a NULL pointer dereference during firmware setup, hci0 never
comes up, and `bluetoothctl` reports "No default controller available"
even though rfkill shows the device as present and unblocked.
Booting the previous point release, 6.8.0-138-generic, with no other
changes, fixes the issue completely — Bluetooth initializes normally
and the controller powers on.
HARDWARE
- Adapter: MediaTek MT7922 802.11ax PCIe Wi-Fi + Bluetooth combo
(lspci: "04:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax
PCI Express Wireless Network Adapter", driver mt7921e)
- Bluetooth HCI: hci0, driver btusb/btmtk
- Laptop: Framework 15
AFFECTED / WORKING KERNELS
- Broken: 6.8.0-139-generic (6.8.0-139.139)
- Working: 6.8.0-138-generic (6.8.0-138.138)
STEPS TO REPRODUCE
1. Boot 6.8.0-139-generic
2. Run `rfkill list` — hci0 shows present, not soft/hard blocked
3. Run `systemctl status bluetooth` — service is active/running
4. Run `bluetoothctl show` — reports "No default controller available"
5. Attempt to enable Bluetooth from GNOME Settings — toggle does not
turn on / has no effect
6. Check `sudo dmesg | grep -A30 btmtk_setup_firmware_79xx` — shows a
kernel oops with a NULL pointer dereference (see trace below)
EXPECTED BEHAVIOR
Bluetooth controller initializes normally and can be enabled from
Settings, as it does on 6.8.0-138-generic.
ACTUAL BEHAVIOR
Kernel oops during hci_power_on -> btmtk firmware setup, controller
never registers with BlueZ.
KERNEL OOPS (6.8.0-139-generic)
[ 4.747120] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time:
20250523103438
[ 4.747142] Workqueue: hci0 hci_power_on [bluetooth]
[ 4.747201] btmtk_usb_hci_wmt_sync+0xa9/0x2e0 [btmtk]
[ 4.747204] ? __pfx_btmtk_usb_hci_wmt_sync+0x10/0x10 [btmtk]
[ 4.747207] btmtk_setup_firmware_79xx+0x1c7/0x360 [btmtk]
[ 4.747212] btusb_mtk_setup+0x453/0x610 [btusb]
[ 4.747218] hci_dev_setup_sync+0x6c/0x430 [bluetooth]
[ 4.747241] ? __pm_runtime_idle+0x4c/0xd0
[ 4.747244] hci_dev_init_sync+0x3e/0x1c0 [bluetooth]
[ 4.747278] hci_dev_open_sync+0xb1/0x350 [bluetooth]
[ 4.747318] hci_dev_do_open+0x28/0x70 [bluetooth]
[ 4.747352] hci_power_on+0x50/0x210 [bluetooth]
[ 4.747398] process_one_work+0x181/0x3a0
[ 4.747404] worker_thread+0x18b/0x330
[ 4.747412] kthread+0xef/0x120
[ 4.747420] ret_from_fork+0x44/0x70
[ 4.747428] ret_from_fork_asm+0x1b/0x30
[ 4.747435] </TASK>
[ 4.747574] CR2: 0000000000000219
[ 4.747578] ---[ end trace 0000000000000000 ]---
[ 5.002337] mt7921e 0000:04:00.0: HW/SW Version: 0x8a108a10, Build Time:
20250523103150a
[ 5.109748] mt7921e 0000:04:00.0: WM Firmware Version: ____000000, Build
Time: 20250523103234
Note CR2 = 0x219, a small offset from NULL — consistent with a NULL
struct pointer being dereferenced with a field offset inside
btmtk_setup_firmware_79xx / btmtk_usb_hci_wmt_sync.
Also note the Bluetooth and Wi-Fi halves of the chip both print
firmware version info at boot; the Wi-Fi half (mt7921e) succeeds while
the Bluetooth half (btmtk) crashes. This may point to a race or shared
resource issue between the two drivers on this combo chip.
ADDITIONAL SYMPTOM
While investigating, running `sudo modprobe -r btusb` on the affected
kernel (6.8.0-139-generic) hung indefinitely in an uninterruptible
state (did not respond to Ctrl+C), suggesting the driver may leave a
lock or work item in a bad state after the initial oops.
WORKAROUND
Booting 6.8.0-138-generic instead of 6.8.0-139-generic resolves the
issue with no other changes. Reinstalling linux-firmware and rebooting
on 6.8.0-139-generic did NOT resolve it, suggesting this is a kernel/
driver regression rather than a firmware blob issue.
ADDITIONAL INFO
$ lspci -k | grep -A3 -i network
04:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless
Network Adapter
Subsystem: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network
Adapter
Kernel driver in use: mt7921e
Kernel modules: mt7921e
$ rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
ProblemType: Bug
DistroRelease: Ubuntu 24.04
Package: linux-image-6.8.0-138-generic 6.8.0-138.138
ProcVersionSignature: Ubuntu 6.8.0-138.138-generic 6.8.12
Uname: Linux 6.8.0-138-generic x86_64
ApportVersion: 2.28.1-0ubuntu3.8
Architecture: amd64
AudioDevicesInUse:
USER PID ACCESS COMMAND
/dev/snd/controlC2: plaba 4379 F.... wireplumber
/dev/snd/controlC0: plaba 4379 F.... wireplumber
/dev/snd/controlC1: plaba 4379 F.... wireplumber
/dev/snd/seq: plaba 4375 F.... pipewire
CRDA: N/A
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Fri Sep 11 22:37:14 2026
InstallationDate: Installed on 2021-12-11 (1736 days ago)
InstallationMedia: Ubuntu 20.04.3 LTS "Focal Fossa" - Release amd64 (20210819)
MachineType: Framework Laptop 16 (AMD Ryzen 7040 Series)
ProcEnviron:
LANG=en_US.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=xterm-256color
XDG_RUNTIME_DIR=<set>
ProcFB: 0 amdgpudrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.8.0-138-generic
root=UUID=0cd2207b-af42-4735-8148-fa96decb31f3 ro security=selinux quiet splash
intel_iommu=off
crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M
vt.handoff=7
PulseList: Error: command ['pacmd', 'list'] failed with exit code 1: No
PulseAudio daemon running, or not running as session daemon.
RelatedPackageVersions:
linux-restricted-modules-6.8.0-138-generic N/A
linux-backports-modules-6.8.0-138-generic N/A
linux-firmware 20240318.git3b128b60.0ubuntu3.1
SourcePackage: linux
UpgradeStatus: Upgraded to noble on 2026-02-21 (202 days ago)
dmi.bios.date: 12/22/2025
dmi.bios.release: 4.3
dmi.bios.vendor: INSYDE Corp.
dmi.bios.version: 04.03
dmi.board.asset.tag: *
dmi.board.name: FRANMZCP07
dmi.board.vendor: Framework
dmi.board.version: A7
dmi.chassis.asset.tag: FRAGACCPA744840005
dmi.chassis.type: 10
dmi.chassis.vendor: Framework
dmi.chassis.version: A7
dmi.modalias:
dmi:bvnINSYDECorp.:bvr04.03:bd12/22/2025:br4.3:svnFramework:pnLaptop16(AMDRyzen7040Series):pvrA7:rvnFramework:rnFRANMZCP07:rvrA7:cvnFramework:ct10:cvrA7:skuFRAGACCP07:
dmi.product.family: 16in Laptop
dmi.product.name: Laptop 16 (AMD Ryzen 7040 Series)
dmi.product.sku: FRAGACCP07
dmi.product.version: A7
dmi.sys.vendor: Framework
modified.conffile..etc.apport.crashdb.conf: [modified]
mtime.conffile..etc.apport.crashdb.conf: 2023-04-23T16:21:23.712186
** Affects: linux (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug noble third-party-packages
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2167148
Title:
Bluetooth (MediaTek MT7922) fails to initialize with NULL pointer
dereference in btmtk_setup_firmware_79xx on 6.8.0-139-generic; works
on 6.8.0-138-generic
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2167148/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs