MT7927 WiFi on Linux: Making It Work

In my previous post, I ended with a wall: mt7925e 0000:0b:00.0: ASIC revision: 0000 mt7925e 0000:0b:00.0: Message 00000010 (seq 2) timeout mt7925e 0000:0b:00.0: Failed to get patch semaphore mt7925e 0000:0b:00.0: hardware init failed The mt7925e driver bound to the MT7927’s WiFi hardware, but registers returned zeros. The chip sat behind PCIe doing nothing. The ehausig/mt7927 project had gotten firmware into kernel memory but stalled at DMA state 0xffff10f1 - “waiting for firmware transfer.” Nobody had gotten past it. ...

March 6, 2026 · 21 min · 4464 words · Javier Tia

Building a Bootable Windows USB from Linux for Firmware Updates

Three devices on my PC have firmware that can only be updated through Windows tools: an ASMedia ASM4242 USB4 controller (ASUS firmware utility), an NZXT Kraken Elite AIO cooler (NZXT CAM), and a Razer Kiyo Pro Ultra webcam (Razer Synapse). Every other component - NVMe SSD, motherboard BIOS, fwupd-supported devices - has a Linux-native update path. These three don’t, and their vendors show no interest in changing that. The obvious answer is “just boot Windows.” But I don’t have a Windows partition, don’t want one, and installing Windows to flash three firmware blobs is absurd. I needed a way to boot a fully configured Windows environment from Linux, run the vendor tools, and shut down. No permanent installation, no dual-boot, no repartitioning. ...

February 27, 2026 · 7 min · 1320 words · Javier Tia

Intel IPU6 Webcam on Linux: From Proprietary Stack to Mainline

The Intel IPU6 (Imaging Processing Unit, generation 6) is the camera subsystem in Tiger Lake, Alder Lake, Raptor Lake, and Meteor Lake laptops. If you have a recent ThinkPad, XPS, or Surface, your webcam likely runs through it. For years, getting it to work on Linux meant an out-of-tree driver stack from Intel’s GitHub - four separate repositories, a DKMS module, proprietary firmware blobs, and a GStreamer-based relay daemon. It was fragile, broke on kernel updates, and couldn’t survive suspend/resume on recent kernels. ...

February 25, 2026 · 11 min · 2311 words · Javier Tia

MT7927 WiFi on Linux: Wrong Driver, Wrong Chip, No Driver

Update — March 5, 2026 MT7927 WiFi now fully works on Linux - 2.4/5/6 GHz, WiFi 7 320MHz EHT (~1 Gbps), MLO, AP mode, suspend/resume, and mac_reset recovery. 20 patches, community-tested on 10+ hardware platforms. See the follow-up: MT7927 WiFi on Linux: Making It Work. In my previous post, I documented the 15-month journey to get Bluetooth working on the MediaTek MT7927. The btusb-mt7927-dkms AUR package patched three missing layers - USB device ID, hardware variant support, and firmware extraction - to bring up a fully functional Bluetooth 5.4 adapter. ...

February 20, 2026 · 8 min · 1511 words · Javier Tia

Enabling MediaTek MT7927 Bluetooth on Linux: A 15-Month Journey

In November 2024, I installed an ASUS ROG Crosshair X870E Hero motherboard - AMD’s flagship X870E platform with a MediaTek MT7927 (Filogic 380) WiFi 7 chip. Running CachyOS, WiFi worked out of the box through the mt7925e driver. Bluetooth did not. What followed was a 15-month journey through kernel source, mailing lists, and community reverse-engineering that ended with a working Bluetooth 5.4 adapter and a published AUR package. This is the story of how it got there. ...

February 16, 2026 · 7 min · 1457 words · Javier Tia