Re: [PATCH bluetooth] btmtk: fix MT7927 / MT6639 firmware loading and section filtering

From: Paul Menzel

Date: Tue Feb 17 2026 - 09:04:25 EST


Dear Jean-François,


Thank you for your message.

Am 08.02.26 um 20:52 schrieb Jean-François Marliére:

Bluetooth on MediaTek MT7927 (hardware variant 0x6639) is currently
broken on Linux.
The device is detected (USB VID:PID 0489:e13a, Foxconn/Hon Hai), but
initialization
fails with "Unsupported hardware variant (00006639)" or the chip hangs
during
firmware download.

I investigated this issue by comparing Linux behavior with USB captures
from the
Windows driver and identified three root causes in btmtk:

1. Hardware variant 0x6639 is missing from btmtk switch/case handling
2. Incorrect firmware naming is used (_1_1_hdr.bin instead of
_2_1_hdr.bin)
3. Critical issue: non-Bluetooth firmware sections are sent to the
chip, which
   causes an irreversible BT subsystem hang (requires full power cycle)

The Windows driver only downloads firmware sections where
(dlmodecrctype & 0xff) == 0x01. The MT6639 firmware contains 9
sections, but only
the first 5 are Bluetooth-related. Sending the remaining sections
(WiFi/other)
causes the failure observed on Linux.

This patch:

Unfortunately, despite the subject containing the tag *PATCH*, no patch is included in your message – also not in the archive [1].

- Adds support for hardware variant 0x6639
- Uses the correct firmware naming format for MT6639
- Filters firmware sections to only download Bluetooth sections
  (dlmodecrctype & 0xff == 0x01), matching Windows driver behavior

Tested on:

- Debian 13 (Trixie)
- Kernel 6.12.63
- ASUS ProArt X870E-CREATOR-WIFI motherboard
- MediaTek MT7927 / MT6639 Bluetooth

A full technical analysis, reproduction steps, and testing details are
available here:
https://gitlab.com/jfmarliere/linux-driver-mediatek-mt7927-bluetooth

Great work!

Please let me know if you would prefer this split into multiple patches
or if additional testing/logs are required.
If a patch can be split, I would split it with a dedicated commit message, and Signed-off-by line, and Link: tags – like the newly created bug report [2]. Please note, that patches for the Bluetooth subsystem need to be have the prefix `Bluetooth: `. `git log drivers/bluetooth` should give you some examples – also what logs to include.

I am looking forward to your patch submissions.


Kind regards,

Paul


PS: Please note, that

Marliére Jean-François <freelance@xxxxxxxxxxx>

looks strange, and a comma is missing or the given name should come first.


[1]: https://lore.kernel.org/all/496b0f8505eb6ffb19fdbee6f963c62aa6790fba.camel@xxxxxxxxxxx/
[2]: https://bugzilla.kernel.org/show_bug.cgi?id=221096