drivers/bluetooth/btmtk.c | 63 ++++++++++++++++++++++++++++++++++++++----- drivers/bluetooth/btmtk.h | 7 +++-- drivers/bluetooth/btmtksdio.c | 2 +- drivers/bluetooth/btusb.c | 12 +++++++++ 4 files changed, 75 insertions(+), 9 deletions(-)
combo WiFi 7 + BT 5.4 module. The BT subsystem uses hardware variant
0x6639 and connects via USB.
The MT7927 is shipping in motherboards and PCIe add-in cards from ASUS,
Gigabyte, Lenovo, MSI, and TP-Link since mid-2024. Without these patches,
users see "Unsupported hardware variant (00006639)" or the BT subsystem
hangs during firmware download.
The series consists of eight patches:
[1/8] Bluetooth: btmtk: Add MT6639 (MT7927) Bluetooth support
[2/8] Bluetooth: btmtk: fix ISO interface setup for single alt setting
[3/8] Bluetooth: btusb: Add MT7927 ID for ASUS ROG Crosshair X870E Hero
[4/8] Bluetooth: btusb: Add MT7927 ID for Lenovo Legion Pro 7 16ARX9
[5/8] Bluetooth: btusb: Add MT7927 ID for Gigabyte Z790 AORUS MASTER X
[6/8] Bluetooth: btusb: Add MT7927 ID for MSI X870E Ace Max
[7/8] Bluetooth: btusb: Add MT7927 ID for TP-Link Archer TBE550E
[8/8] Bluetooth: btusb: Add MT7927 ID for ASUS X870E / ProArt X870E-Creator
Three driver changes are needed for MT6639 (patch 1):
1. CHIPID workaround: On some boards the BT USB MMIO register reads
0x0000 for dev_id. Force dev_id to 0x6639 only when the USB VID/PID
matches a known MT6639 device, avoiding misdetection if a future
chip also reads zero. This follows the WiFi-side pattern.
2. Firmware naming: MT6639 uses firmware version prefix "2_1" instead of
"1_1" used by MT7925 and other variants. The firmware path is
mediatek/mt7927/BT_RAM_CODE_MT6639_2_1_hdr.bin, using the mt7927
directory to match the WiFi firmware convention. The filename will
likely change to use MT7927 once MediaTek submits a dedicated
Linux firmware binary.
3. Section filtering: The firmware binary contains 9 sections, but only
sections with (dlmodecrctype & 0xff) == 0x01 are Bluetooth-related.
Sending WiFi/other sections causes an irreversible BT subsystem hang.
Patch 2 fixes the ISO interface setup for devices that expose only a
single alternate setting (alt 0) on the ISO endpoint. Without this fix,
btmtk_usb_claim_iso_intf() fails with EINVAL, causing ~20 second
initialization delays on 13d3:3588 devices.
WBS (Wideband Speech) was verified on MT7927 hardware. The controller
reports LMP_TRANSPARENT, LMP_ERR_DATA_REPORTING, and mSBC codec support.
A btmon capture confirms eSCO links establish with Transparent air mode
(mSBC) and 60-byte frames. BTUSB_WIDEBAND_SPEECH is correct for this
controller family.
Tested on:
- ASUS ROG Crosshair X870E Hero (USB 0489:e13a)
- ASUS ROG STRIX X870E-E (USB 13d3:3588)
- ASUS ROG STRIX B850-E GAMING WIFI (USB 0489:e13a)
- Gigabyte Z790 AORUS MASTER X (USB 0489:e10f)
- Lenovo Legion Pro 7 16ARX9 (USB 0489:e0fa)
Changes in v4:
- Pass dev_id as parameter to btmtk_setup_firmware_79xx instead of
using hci_get_priv, which is not available in btmtksdio
(suggested by Luiz Augusto von Dentz)
- Skip post-reset CHIPID validation for 0x6639 in
btmtk_usb_subsys_reset since the register always returns 0x0000
on affected boards
Link to v3: https://lore.kernel.org/linux-bluetooth/20260326-mt7927-bt-support-v3-0-fa7ebd424323@jetm.me/
Signed-off-by: Javier Tia <floss@jetm.me>
---
Javier Tia (8):
Bluetooth: btmtk: Add MT6639 (MT7927) Bluetooth support
Bluetooth: btmtk: fix ISO interface setup for single alt setting
Bluetooth: btusb: Add MT7927 ID for ASUS ROG Crosshair X870E Hero
Bluetooth: btusb: Add MT7927 ID for Lenovo Legion Pro 7 16ARX9
Bluetooth: btusb: Add MT7927 ID for Gigabyte Z790 AORUS MASTER X
Bluetooth: btusb: Add MT7927 ID for MSI X870E Ace Max
Bluetooth: btusb: Add MT7927 ID for TP-Link Archer TBE550E
Bluetooth: btusb: Add MT7927 ID for ASUS X870E / ProArt X870E-Creator
drivers/bluetooth/btmtk.c | 63 ++++++++++++++++++++++++++++++++++++++-----
drivers/bluetooth/btmtk.h | 7 +++--
drivers/bluetooth/btmtksdio.c | 2 +-
drivers/bluetooth/btusb.c | 12 +++++++++
4 files changed, 75 insertions(+), 9 deletions(-)
---
base-commit: 7f9446b23ac77f46d356b354ea8da49113e8000d
change-id: 20260305-mt7927-bt-support-6589a50c961f
Best regards,
--
Javier Tia <floss@jetm.me>
Hi Javier, On Mon, Mar 30, 2026 at 4:39 PM Javier Tia <floss@jetm.me> wrote: > > combo WiFi 7 + BT 5.4 module. The BT subsystem uses hardware variant > 0x6639 and connects via USB. > > The MT7927 is shipping in motherboards and PCIe add-in cards from ASUS, > Gigabyte, Lenovo, MSI, and TP-Link since mid-2024. Without these patches, > users see "Unsupported hardware variant (00006639)" or the BT subsystem > hangs during firmware download. > > The series consists of eight patches: > > [1/8] Bluetooth: btmtk: Add MT6639 (MT7927) Bluetooth support > [2/8] Bluetooth: btmtk: fix ISO interface setup for single alt setting > [3/8] Bluetooth: btusb: Add MT7927 ID for ASUS ROG Crosshair X870E Hero > [4/8] Bluetooth: btusb: Add MT7927 ID for Lenovo Legion Pro 7 16ARX9 > [5/8] Bluetooth: btusb: Add MT7927 ID for Gigabyte Z790 AORUS MASTER X > [6/8] Bluetooth: btusb: Add MT7927 ID for MSI X870E Ace Max > [7/8] Bluetooth: btusb: Add MT7927 ID for TP-Link Archer TBE550E > [8/8] Bluetooth: btusb: Add MT7927 ID for ASUS X870E / ProArt X870E-Creator > > Three driver changes are needed for MT6639 (patch 1): > > 1. CHIPID workaround: On some boards the BT USB MMIO register reads > 0x0000 for dev_id. Force dev_id to 0x6639 only when the USB VID/PID > matches a known MT6639 device, avoiding misdetection if a future > chip also reads zero. This follows the WiFi-side pattern. > > 2. Firmware naming: MT6639 uses firmware version prefix "2_1" instead of > "1_1" used by MT7925 and other variants. The firmware path is > mediatek/mt7927/BT_RAM_CODE_MT6639_2_1_hdr.bin, using the mt7927 > directory to match the WiFi firmware convention. The filename will > likely change to use MT7927 once MediaTek submits a dedicated > Linux firmware binary. > > 3. Section filtering: The firmware binary contains 9 sections, but only > sections with (dlmodecrctype & 0xff) == 0x01 are Bluetooth-related. > Sending WiFi/other sections causes an irreversible BT subsystem hang. > > Patch 2 fixes the ISO interface setup for devices that expose only a > single alternate setting (alt 0) on the ISO endpoint. Without this fix, > btmtk_usb_claim_iso_intf() fails with EINVAL, causing ~20 second > initialization delays on 13d3:3588 devices. Ok, but on 8/8 it seem to suggest the problem still exists which trigger the following review: https://sashiko.dev/#/patchset/20260330-mt7927-bt-support-v4-0-cecc025e7062%40jetm.me Perhaps we should ajust the commit description if the 19 seconds doesn't really occurs when 2/8 is applied. > WBS (Wideband Speech) was verified on MT7927 hardware. The controller > reports LMP_TRANSPARENT, LMP_ERR_DATA_REPORTING, and mSBC codec support. > A btmon capture confirms eSCO links establish with Transparent air mode > (mSBC) and 60-byte frames. BTUSB_WIDEBAND_SPEECH is correct for this > controller family. > > Tested on: > - ASUS ROG Crosshair X870E Hero (USB 0489:e13a) > - ASUS ROG STRIX X870E-E (USB 13d3:3588) > - ASUS ROG STRIX B850-E GAMING WIFI (USB 0489:e13a) > - Gigabyte Z790 AORUS MASTER X (USB 0489:e10f) > - Lenovo Legion Pro 7 16ARX9 (USB 0489:e0fa) > > Changes in v4: > - Pass dev_id as parameter to btmtk_setup_firmware_79xx instead of > using hci_get_priv, which is not available in btmtksdio > (suggested by Luiz Augusto von Dentz) > - Skip post-reset CHIPID validation for 0x6639 in > btmtk_usb_subsys_reset since the register always returns 0x0000 > on affected boards > > Link to v3: https://lore.kernel.org/linux-bluetooth/20260326-mt7927-bt-support-v3-0-fa7ebd424323@jetm.me/ > > Signed-off-by: Javier Tia <floss@jetm.me> > --- > Javier Tia (8): > Bluetooth: btmtk: Add MT6639 (MT7927) Bluetooth support > Bluetooth: btmtk: fix ISO interface setup for single alt setting > Bluetooth: btusb: Add MT7927 ID for ASUS ROG Crosshair X870E Hero > Bluetooth: btusb: Add MT7927 ID for Lenovo Legion Pro 7 16ARX9 > Bluetooth: btusb: Add MT7927 ID for Gigabyte Z790 AORUS MASTER X > Bluetooth: btusb: Add MT7927 ID for MSI X870E Ace Max > Bluetooth: btusb: Add MT7927 ID for TP-Link Archer TBE550E > Bluetooth: btusb: Add MT7927 ID for ASUS X870E / ProArt X870E-Creator > > drivers/bluetooth/btmtk.c | 63 ++++++++++++++++++++++++++++++++++++++----- > drivers/bluetooth/btmtk.h | 7 +++-- > drivers/bluetooth/btmtksdio.c | 2 +- > drivers/bluetooth/btusb.c | 12 +++++++++ > 4 files changed, 75 insertions(+), 9 deletions(-) > --- > base-commit: 7f9446b23ac77f46d356b354ea8da49113e8000d > change-id: 20260305-mt7927-bt-support-6589a50c961f > > Best regards, > -- > Javier Tia <floss@jetm.me> > -- Luiz Augusto von Dentz
© 2016 - 2026 Red Hat, Inc.