[PATCH v5 0/8] Bluetooth: Add MediaTek MT7927 (MT6639) support
From: Javier Tia <hidden>
Date: 2026-03-31 17:09:35
Also in:
linux-bluetooth, linux-mediatek, lkml
Add Bluetooth support for the MediaTek MT7927 (Filogic 380), a PCIe 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 v5: - Fix patch 8/8 commit message: the ~19 second delay note was misleading since patch 2/8 already fixes that issue. Updated to clarify the relationship between the two patches (suggested by Luiz Augusto von Dentz) Link to v4: https://lore.kernel.org/linux-bluetooth/20260330-mt7927-bt-support-v4-0-cecc025e7062@jetm.me/ (local) Signed-off-by: Javier Tia <redacted> --- 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 [off-list ref]