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 patchesIf 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.
or if additional testing/logs are required.
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