Senior Systems Engineer - Linux Kernel · Security · Yocto · CI/CD
🌍 Costa Rica - Remote 📬 javier@jetm.me 🔗 LinkedIn · Blog
Currently available for new opportunities — freelance or full-time, fully remote.
DKMS driver for MediaTek MT7927 (Filogic 380) - WiFi 7 + Bluetooth 5.4 on Linux.
Builds out-of-tree btusb/btmtk (Bluetooth) and mt76 (WiFi) kernel modules with device ID and firmware patches not yet in mainline. Supports kernels 6.17+.
| Component | Status | Details |
|---|---|---|
| Bluetooth (MT6639 via USB) | WORKING | Patched btusb with device ID + firmware |
| WiFi (MT7925e via PCIe) | WORKING | 2.4/5/6 GHz, 320MHz EHT, suspend/resume |
Known issues:
- TX retransmissions elevated vs baseline (firmware-side, not driver-fixable) (#26)
- Bluetooth USB device may disappear after module reload or DKMS upgrade, persists across reboots. Workaround: shut down, unplug PSU / switch off at back, wait 10 seconds, power back on. A regular reboot is not enough - the MT6639 BT firmware locks up and only recovers with a full power drain. (#23)
- AP mode throughput capped at ~15 Mbps - MT7927 firmware is optimized for STA mode (#36)
| Device | BT USB ID | WiFi PCI ID |
|---|---|---|
| ASUS ROG Crosshair X870E Hero | 0489:e13a | 14c3:7927 |
| ASUS ProArt X870E-Creator WiFi | 13d3:3588 | 14c3:6639 |
| ASUS ROG Strix X870-I | - | 14c3:7927 |
| ASUS ROG Strix X870E-E | 13d3:3588 | 14c3:7927 |
| ASUS ROG STRIX B850-E GAMING WIFI | 0489:e13a | 14c3:7927 |
| Gigabyte X870E Aorus Master X3D | 0489:e10f | 14c3:7927 |
| Gigabyte Z790 AORUS MASTER X | 0489:e10f | 14c3:7927 |
| Gigabyte Z790 AORUS ELITE X WiFi7 | 0489:e10f | 14c3:7927 |
| MSI MEG X870E ACE MAX | 0489:e110 | 14c3:7927 |
| Lenovo Legion Pro 7 16ARX9 | 0489:e0fa | 14c3:7927 |
| Lenovo Legion Pro 7 16AFR10H | 0489:e0fa | 14c3:7927 |
| TP-Link Archer TBE550E PCIe | 0489:e116 | 14c3:7927 |
| EDUP EP-MT7927BE M.2 | - | 14c3:7927 |
| Foxconn/Azurewave M.2 modules | - | 14c3:6639 |
| AMD RZ738 (MediaTek MT7927) | - | 14c3:0738 |
Check if your hardware is detected:
lspci | grep -i 14c3 # WiFi (PCIe)
lsusb | grep -iE '0489|13d3|0e8d' # Bluetooth (USB)MediaTek naming is confusing - see MT7927 WiFi: The Missing Piece for the full story. Here's the short version:
MT7927 = combo module on the motherboard (WiFi 7 + BT 5.4, Filogic 380)
├─ BT side: internally MT6639, connects via USB
└─ WiFi side: architecturally MT7925, connects via PCIe
MT7902 is a separate WiFi 6E chip (different product line, uses mt7921 driver). It's included in this package at zero cost because it shares the mt76 dependency chain with mt7925e.
Download .rpm or .deb from the
latest release:
# Fedora / RPM-based
sudo dnf install ./mediatek-mt7927-dkms-*.rpm
# Ubuntu / Debian
sudo dpkg -i ./mediatek-mt7927-dkms_*.debyay -S mediatek-mt7927-dkms
# or
paru -S mediatek-mt7927-dkmsSupports kernels 6.17+. Requires dkms, make, gcc, python3, curl,
and kernel headers.
git clone https://github.com/jetm/mediatek-mt7927-dkms.git
cd mediatek-mt7927-dkms
make download
make sources
sudo make install
sudo dkms add mediatek-mt7927/2.9
sudo dkms build mediatek-mt7927/2.9
sudo dkms install mediatek-mt7927/2.9
sudo modprobe -r mt7925e mt7921e btusb
sudo modprobe mt7925e btusbYou can also build packages locally:
# Fedora
sudo dnf install rpm-build
make rpm
sudo dnf install rpmbuild/RPMS/noarch/mediatek-mt7927-dkms-*.rpm
# Ubuntu / Debian
sudo apt install dpkg-dev
make deb
sudo dpkg -i mediatek-mt7927-dkms_*.deb- NixOS: cmspam/mt7927-nixos, clemenscodes/linux-mt7927
- Bazzite (Fedora Atomic): samutoljamo/bazzite-mt7927
Reload kernel modules to pick up new builds without rebooting:
sudo modprobe -r mt7925e mt7921e btusb
sudo modprobe mt7925e btusbOr just reboot.
Quick validation (<30 seconds, non-destructive). Requires root:
sudo ./test-driver.sh # auto-detect interface
sudo ./test-driver.sh wlp9s0 # specify interfaceLong-running stability monitor (8 hours default):
sudo ./stability-test.sh # 8-hour test, auto-detect
sudo ./stability-test.sh -d 2h # 2-hour test
sudo ./stability-test.sh -s 192.168.1.50 # with iperf3 server5/6 GHz authentication retries: WPA handshake may fail on the first attempt. Configure NetworkManager to retry automatically:
nmcli connection modify <ssid> connection.auth-retries 3Bluetooth rfkill soft-block: If Bluetooth appears blocked after reboot:
rfkill unblock bluetoothBluetooth USB device disappeared:
The MT6639 BT firmware can lock up during module reload or DKMS upgrade, causing the
USB device to vanish from lsusb. This persists across reboots and affects all OSes
(Linux and Windows). See #23.
Fix: shut down completely, unplug the PSU cable (or switch off at the back), wait at least 10 seconds, then power back on. A CMOS reset also works but is more disruptive.
DKMS not built for current kernel:
sudo dkms install mediatek-mt7927/2.9| Submission | Status | Tracking |
|---|---|---|
| WiFi patches (linux-wireless@) | v4 sent (9 patches) | #15 |
| BT driver patches (linux-bluetooth@) | v3 sent (8 patches) | #15 |
| BT firmware (linux-firmware) | MR open (mt7927/ path) | #15 |
See mt76#927 for the community tracking issue.
Submit WiFi patches to linux-wireless@, BT driver patches to linux-bluetooth@, and BT firmware to linux-firmware. Once merged, this package becomes unnecessary for kernels that include MT7927 support.
- WiFi (#15) - 9-patch series on linux-wireless@, v4 sent. Patches 1-8 add 320MHz EHT, chip ID, firmware, and IRQ map; patch 9 disables ASPM/runtime PM for MT7927. Sean Wang handles DMA/HW init/PCI ID enablement separately.
- BT driver (#15) - 8-patch series on linux-bluetooth@, v3 sent. CHIPID workaround scoped to VID/PID table, firmware path renamed to mt7927/, MODULE_FIRMWARE added.
- BT firmware (#15) - GitLab MR !946 on linux-firmware. Updated with mt7927/ path, awaiting review.
These are planned as follow-up patches once the base series lands:
- MLO (Multi-Link Operation) (#25) - Not included in the current package. Three targeted fixes (cfg80211 BSS flag relaxation, ROC timer extension, 5GHz/6GHz band exclusion) have been verified in development (STR dual-link, 5GHz+2.4GHz) but need more testing before shipping. If your router has MLO enabled, disable it to avoid disconnects.
- mac_reset recovery (#28) - full DMA reinitialization on firmware crash. Has unguarded paths on mt7925 standalone that need fixing first.
These issues are firmware-controlled and cannot be fixed in the driver:
- TX retransmissions (#26) - ~35% retry rate at 320MHz, firmware manages rate adaptation and retry logic
- BT USB disappearance (#23) - MT6639 BT firmware locks up during module reload, requires full power cycle (PSU unplug). Affects Linux and Windows.
- 6GHz MLO link - passive scan and ML probe limitations prevent 6GHz link discovery (cfg80211/wpa_supplicant limitation)
See mt76#927 for detailed discussion.
See CHANGELOG.md for the full release history.
The kernel patches (mt76 driver changes submitted to linux-wireless and linux-bluetooth) are written by a human. The packaging scripts, test harness, and documentation in this repository use AI assistance (Claude).
GPL-2.0-only