Skip to content

MT6639 BT (0489:e13a) never initializes: HW/SW version reads 0x00000000, controller drops off USB bus during wmt patch download — identical with DKMS and in-tree (7.1) btusb #103

Description

@Sciruss

Configuration

Board: ASUS ProArt X870E-Creator WiFi, rev 2 (WiFi 14c3:7927, BT 0489:e13a — both confirmed via lspci/journalctl). BIOS 2402 (2026-07, latest).
Distro / kernel: CachyOS, 7.1.8-1-cachyos (CONFIG_BT_HCIBTUSB=m, CONFIG_BT_HCIBTUSB_MTK=y), fully updated as of 2026-08-15
Package: mediatek-mt7927-dkms 2.13-1 (AUR)
Secure Boot: disabled
WiFi status: working normally via DKMS mt7925e throughout
Current BT config: stock in-tree btusb/btmtk restored to the kernel tree; DKMS btusb/btmtk manually sidelined (this is why dkms status reports "Differences between built and installed modules" — intentional, see packaging section)

Summary

Bluetooth has never initialized on this board. The controller enumerates normally, btusb probes it, the HW/SW version query returns all zeros, and the controller then disconnects itself from the USB bus during the wmt patch download. This puts it into the #23 lockup state (absent from lsusb, persists across warm reboots; only a full PSU drain restores enumeration — after which the next boot reproduces the same crash).

Critically, the failure is identical with the in-tree kernel 7.1 driver and with the DKMS driver (captures below), so this does not appear to be a bug in this package's BT patches. I'm reporting it here because this is where MT6639/e13a expertise is concentrated, and because I found two packaging issues along the way (bottom section) that are bugs regardless.

Failure captures

All boots below are clean cold boots after a full PSU drain per the #23 workaround. USB autosuspend disabled and confirmed (enable_autosuspend=N).

In-tree btusb — current canonical capture (2026-08-17, BIOS 2402, system fully updated)

Stock kernel 7.1.8 module, verified: modinfo -F filename btusbkernel/drivers/bluetooth/btusb.ko.zst, loaded srcversion 6510C8D2538FEDC20BE17F1 (btmtk 755548AA70EFE4F298B5146).

[    2.459679] usb 1-6: new high-speed USB device number 5 using xhci_hcd
[    2.646735] usb 1-6: New USB device found, idVendor=0489, idProduct=e13a, bcdDevice= 1.00
[    2.646742] usb 1-6: Manufacturer: MediaTek Inc.
[   33.710945] usbcore: registered new interface driver btusb
[   33.712989] Bluetooth: hci0: HW/SW Version: 0x00000000, Build Time: 20250606201235
[   35.016091] usb 1-6: USB disconnect, device number 5
[   45.135573] Bluetooth: hci0: Execution of wmt command timed out
[   45.135579] Bluetooth: hci0: Failed to send wmt patch dwnld (-110)
[   45.135593] Bluetooth: hci0: failed to reset (-19)
[   45.135594] Bluetooth: hci0: Failed to set up firmware (-110)

DKMS btusb (v2.13 — srcversion 07AED3D4468A5E067DC40F0, loaded from updates/dkms/)

[    2.459587] usb 1-6: new high-speed USB device number 5 using xhci_hcd
[    2.647395] usb 1-6: New USB device found, idVendor=0489, idProduct=e13a, bcdDevice= 1.00
[   32.879988] Bluetooth: hci0: HW/SW Version: 0x00000000, Build Time: 20250606201235
[   34.013527] Bluetooth: hci0: Failed to send wmt patch dwnld (-19)
[   34.013528] usb 1-6: USB disconnect, device number 5
[   34.013539] Bluetooth: hci0: Failed to set up firmware (-19)
[   34.015130] Bluetooth: hci0: Failed to read uhw reg(-19)

Subsequent boots (either driver, controller wedged from prior crash)

[   79.796202] Bluetooth: hci0: HW/SW Version: 0x00000000, Build Time: 20250606201235
[   91.214662] Bluetooth: hci0: Execution of wmt command timed out
[   91.214668] Bluetooth: hci0: Failed to send wmt patch dwnld (-110)
[   91.214682] Bluetooth: hci0: failed to reset (-19)
[   91.214684] Bluetooth: hci0: Failed to set up firmware (-110)

The anomaly: HW/SW Version 0x00000000

Every attempt — clean cold boots, either driver, before and after the BIOS update — reads HW/SW Version: 0x00000000. A working e13a system in the mt76#927 thread reports HW 0x8a108a10 in its test-driver.sh output. So this controller answers enumeration and the build-time query but returns a zeroed hardware version before the patch download ever starts, then crashes off the bus when the transfer begins. Question for those who know the WMT protocol: is an all-zeros version read a known bad-state indicator (ROM bootloader wedged, module fault), and is there any deeper reset than a PSU drain / BIOS-flash settings reset short of a module reseat or RMA?

Verified / ruled out

  • In-tree driver fails identically (see captures) — rules out the DKMS BT patches as the cause. Verified via /sys/module/btusb/srcversion in both configurations.
  • BIOS updated to 2402 (latest, 2026-07) — flash included a settings reset to defaults, subsequently reconfigured. No change.
  • Full system update (2026-08-15) — no change; kernel remained 7.1.8.
  • Kernel support present: CONFIG_BT_HCIBTUSB_MTK=y; the in-tree 7.1.8 btmtk declares firmware: mediatek/mt7927/BT_RAM_CODE_MT6639_2_1_hdr.bin in modinfo.
  • Firmware present: /lib/firmware/mediatek/mt7927/BT_RAM_CODE_MT6639_2_1_hdr.bin (688,341 bytes, from this package).
  • USB autosuspend: disabled via modprobe.d + initramfs rebuild, confirmed N at runtime. No change.
  • USB authorization: authorized_default=1.
  • rfkill: no soft or hard block. Secure Boot: disabled.
  • Module reload after failure does nothing — device is already off the bus.
  • WiFi side of the same module works normally throughout (mt7925e, DKMS).

Packaging issues found along the way (bugs regardless of my BT failure)

  1. Native-support detection never fires on CachyOS. The build conditional greps $KERNEL_BUILD/drivers/bluetooth/btmtk.h for MT6639, but the CachyOS headers package does not ship that file (/usr/lib/modules/7.1.8-1-cachyos/build/drivers/bluetooth/ contains only Kconfig). The grep fails, so the DKMS btusb/btmtk are built and installed even on kernel 7.1.8, where MT6639 support is already in-tree.
  2. DKMS displaces the working in-tree driver. Because of (1), DKMS archives the stock btusb.ko.zst/btmtk.ko.zst to original_module/ and replaces them. On kernels ≥ 7.1 this swaps a current in-tree driver for out-of-tree modules patched against an older baseline. Suggest skipping the BT BUILT_MODULE_NAME entries when the target kernel version is ≥ 7.1 (version check rather than the header grep, since header packages may omit driver sources). My current workaround — stock BT modules copied back from original_module/, DKMS copies removed — is what produces the "Differences between built and installed modules" flag in the attached dkms status, and must be redone after every kernel upgrade until the conditional is fixed.

Neither packaging issue caused my failure (in-tree fails the same way), but both will affect other rolling-distro users on 7.1+.

Full diagnostics

bt-diag-20260817.txt

Attached: bt-diag-20260817.txt — full current-state capture (system/BIOS/package versions, dkms status, module provenance incl. srcversions, headers/original_module evidence for the packaging issues, enumeration, ruled-out settings, firmware listing, full dmesg, end state).

Happy to test patches or alternate firmware, capture btmon/usbmon traces of the disconnect, or run test-driver.sh on request.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions