Junk Drawer Logo Junk Drawer

For all those little papers scattered across your desk

I stand for the Constitution, for due process, and for community that takes care of each other. Hope is a discipline.

MT7925e Bluetooth woes

D. Ben Knoble on 11 Feb 2026 in Blog

Some details on an error I had today and the seeming resolution.

I have a MediaTek Wireless device in my Framework desktop (outputs trimmed):

# lsusb
Bus 003 Device 003: ID 0e8d:0717 MediaTek Inc. Wireless_Device
# lshw
…
           *-network
                description: Ethernet interface
                product: MT7925 (RZ717) Wi-Fi 7 160MHz
                vendor: MEDIATEK Corp.
                physical id: 0
                bus info: pci@0000:c0:00.0
                logical name: wlan0
                version: 00
                serial: ac:f2:3c:34:dd:8b
                width: 64 bits
                clock: 33MHz
                capabilities: pciexpress msi pm bus_master cap_list ethernet physical
                configuration: broadcast=yes driver=mt7925e driverversion=6.12.63-gentoo-dist firmware=____000000-20260106153120 ip=192.168.2.248 latency=0 link=yes multicast=yes
                resources: irq:158 memory:b0600000-b07fffff memory:b0800000-b0807fff
…
                 *-usb:1
                      description: Bluetooth wireless interface
                      product: Wireless_Device
                      vendor: MediaTek Inc.
                      physical id: 3
                      bus info: usb@3:3
                      version: 1.00
                      serial: 000000000
                      capabilities: usb-2.10 bluetooth
                      configuration: driver=btusb maxpower=100mA speed=480Mbit/s

(The Bluetooth wireless interface is on a different pci slot from the Ethernet interface according to lshw, but I think it’s physically part of the same stuff?)

# hwinfo

63: PCI c000.0: 0280 Network controller
  [Created at pci.386]
  Unique ID: y9sn.W5ZKz6Jz0dA
  Parent ID: aYFK.ZyxDeoKNER1
  SysFS ID: /devices/pci0000:00/0000:00:02.3/0000:c0:00.0
  SysFS BusID: 0000:c0:00.0
  Hardware Class: network
  Model: "MEDIATEK Network controller"
  Vendor: pci 0x14c3 "MEDIATEK Corp."
  Device: pci 0x0717 
  SubVendor: pci 0x14c3 "MEDIATEK Corp."
  SubDevice: pci 0x0717 
  Driver: "mt7925e"
  Driver Modules: "mt7925e"
  Device File: wlan0
  Memory Range: 0xb0600000-0xb07fffff (rw,non-prefetchable)
  Memory Range: 0xb0800000-0xb0807fff (rw,non-prefetchable)
  IRQ: 158 (9607 events)
  HW Address: ac:f2:3c:34:dd:8b
  Permanent HW Address: ac:f2:3c:34:dd:8b
  Link detected: yes
  Module Alias: "pci:v000014C3d00000717sv000014C3sd00000717bc02sc80i00"
  Driver Info #0:
    Driver Status: mt7925e is active
    Driver Activation Cmd: "modprobe mt7925e"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #51 (PCI bridge)

88: USB 00.0: 0000 Unclassified device
  [Created at usb.122]
  Unique ID: CiZ2.dgyAFLvpDoA
  Parent ID: uIhY.5sqDI7PdmUC
  SysFS ID: /devices/pci0000:00/0000:00:08.3/0000:c5:00.0/usb3/3-3/3-3:1.0
  SysFS BusID: 3-3:1.0
  Hardware Class: unknown
  Model: "MediaTek Wireless_Device"
  Hotplug: USB
  Vendor: usb 0x0e8d "MediaTek Inc."
  Device: usb 0x0717 "Wireless_Device"
  Revision: "1.00"
  Serial ID: "000000000"
  Driver: "btusb"
  Driver Modules: "btusb"
  Speed: 480 Mbps
  Module Alias: "usb:v0E8Dp0717d0100dcEFdsc02dp01icE0isc01ip01in00"
  Driver Info #0:
    Driver Status: btusb is active
    Driver Activation Cmd: "modprobe btusb"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #94 (Hub)

Anyway, after a reboot today, I saw the following issues

Feb 11 10:45:16 merguez kernel: Bluetooth: hci0: Execution of wmt command timed out
Feb 11 10:45:16 merguez kernel: Bluetooth: hci0: Failed to send wmt func ctrl (-110)
Feb 11 10:45:16 merguez kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.

Things got even weirder as I started poking the hardware with various tools like inxi, lsusb -v, and hw-probe, although that might also have been due to removing the kernel modules and re-adding them. In particular, reloading btusb did practically nothing; reloading mt7925e and btusb seemed to crash Bluetooth altogether (although WiFi came back with the mt7925e driver, so it was just the 2nd load of btusb that failed).

I was able to confirm via last that I had booted my current kernel at least once prior to today, so I was pretty sure that wasn’t the issue (but I have several old kernels laying around just in case):

λ ll /boot/vmlinuz-6.12.*
-rw-r--r-- 1 root root 20439552 13 oct.  21:25 /boot/vmlinuz-6.12.47-gentoo-dist
-rw-r--r-- 1 root root 20488704 13 oct.  15:35 /boot/vmlinuz-6.12.47-gentoo-dist.old
-rw-r--r-- 1 root root 20451840  7 nov.  09:20 /boot/vmlinuz-6.12.54-gentoo-dist
-rw-r--r-- 1 root root 20460032  1 déc.  16:49 /boot/vmlinuz-6.12.58-gentoo-dist
-rw-r--r-- 1 root root 20619776 29 janv. 17:09 /boot/vmlinuz-6.12.63-gentoo-dist
-rw-r--r-- 1 root root 20619776 13 janv. 08:42 /boot/vmlinuz-6.12.63-gentoo-dist.old

Solution

Turns out, the Mint folks were right: I powered down completely, left the system unplugged for a while, and then booted on with no issues.

Now the kernel logs look much nicer:

Feb 11 14:03:30 merguez kernel: Bluetooth: hci0: Device setup in 1738015 usecs
Feb 11 14:03:30 merguez kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
Feb 11 14:03:31 merguez kernel: Bluetooth: hci0: AOSP extensions version v1.00
Feb 11 14:03:31 merguez kernel: Bluetooth: hci0: AOSP quality report is supported
Feb 11 14:03:31 merguez kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Feb 11 14:03:31 merguez kernel: Bluetooth: BNEP filters: protocol multicast
Feb 11 14:03:31 merguez kernel: Bluetooth: BNEP socket layer initialized
Feb 11 14:03:31 merguez kernel: Bluetooth: MGMT ver 1.23
Feb 11 14:03:46 merguez kernel: Bluetooth: RFCOMM TTY layer initialized
Feb 11 14:03:46 merguez kernel: Bluetooth: RFCOMM socket layer initialized
Feb 11 14:03:46 merguez kernel: Bluetooth: RFCOMM ver 1.11
Feb 11 14:03:55 merguez kernel: magicmouse 0005:004C:0265.0005: unknown main item tag 0x0
Feb 11 14:03:55 merguez kernel: input: Apple Inc. Magic Trackpad 2 as /devices/virtual/misc/uhid/0005:004C:0265.0005/input/input15
Feb 11 14:03:55 merguez kernel: magicmouse 0005:004C:0265.0005: input,hidraw4: BLUETOOTH HID v3.11 Mouse [Slate] on ac:f2:3c:34:dd:8c

Kernel devices

Of note, the drivers/bluetooth/btusb.c doesn’t list 0e8d:0717 in the MediaTek devices, although there is what looks to my extremely untrained eyes like some kind of generic fallback device:

	/* MediaTek Bluetooth devices */
	{ USB_VENDOR_AND_INTERFACE_INFO(0x0e8d, 0xe0, 0x01, 0x01),
	  .driver_info = BTUSB_MEDIATEK |
			 BTUSB_WIDEBAND_SPEECH },

(The docs for USB_VENDOR_AND_INTERFACE don’t mean much to me:)

/**
 * USB_VENDOR_AND_INTERFACE_INFO - describe a specific usb vendor with a class of usb interfaces
 * @vend: the 16 bit USB Vendor ID
 * @cl: bInterfaceClass value
 * @sc: bInterfaceSubClass value
 * @pr: bInterfaceProtocol value
 *
 * This macro is used to create a struct usb_device_id that matches a
 * specific vendor with a specific class of interfaces.
 *
 * This is especially useful when explicitly matching devices that have
 * vendor specific bDeviceClass values, but standards-compliant interfaces.
 */
#define USB_VENDOR_AND_INTERFACE_INFO(vend, cl, sc, pr) \
	.match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
		| USB_DEVICE_ID_MATCH_VENDOR, \
	.idVendor = (vend), \
	.bInterfaceClass = (cl), \
	.bInterfaceSubClass = (sc), \
	.bInterfaceProtocol = (pr)

For the network controller, we have PCI_VENDOR_ID_MEDIATEK=0x14c3 via include/linux/pci_ids.h and then

static const struct pci_device_id mt7925_pci_device_table[] = {
	{ PCI_DEVICE(PCI_VENDOR_ID_MEDIATEK, 0x7925),
		.driver_data = (kernel_ulong_t)MT7925_FIRMWARE_WM },
	{ PCI_DEVICE(PCI_VENDOR_ID_MEDIATEK, 0x0717),
		.driver_data = (kernel_ulong_t)MT7925_FIRMWARE_WM },
	{ },
};

in the drivers/net/wireless/mediatek/mt76/mt7925 tree.

Other fora

Places I looked for help via Ecosia searches of the kernel logs and model IDs:

Seems like there are lots of MediaTek driver issues, but none were exactly like mine except that Mint forum.


Tags:

Categories: Blog

Load Comments
Previous Next
Back to posts