> For the complete documentation index, see [llms.txt](https://0xsec.gitbook.io/0xsec/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://0xsec.gitbook.io/0xsec/blogs/2026-04-29-mt7902_installation_guide.md).

# MT7902: A Complete WiFi & Bluetooth Guide for Arch and Fedora

### Introduction

<figure><img src="/files/aNVmRK9jHFUhBcpTY8pX" alt=""><figcaption></figcaption></figure>

<p align="center"><em>Figure: MT7902 Linux Patch</em></p>

If you have a laptop (mine is Asus Vivobook go 15) with the MediaTek MT7902 network card, you already know the struggle for its driver support. Native support for this chip is missing from the mainline Linux kernel (*at least until Linux 7.x drops*). Out of the box, you get no WiFi and no Bluetooth in order to get your internet working either you have to go with external wifi adapter or USB tethering. But last month, we noted that Mediatek MT7902 WiFi 6E and Bluetooth 5.x chipset finally got drivers in mainline Linux, and should be part of the Linux 7.0 release. Fortunately, [hmtheyboy154](https://github.com/hmtheboy154) backported the drivers that you can compile out-of-tree drivers to get your hardware fully operational for kernel 6.6 to 6.19. This guide will walk you through compiling the drivers on Arch and Fedora, blacklisting conflicting Bluetooth modules, and setting up DKMS so your network card doesn't break every time you update your system.

<figure><img src="/files/teel36Gz2p1vNdrAWdij" alt=""><figcaption></figcaption></figure>

<p align="center"><em>Figure: WiFi PCIe driver</em></p>

> **Note:** this method only works with the PCIe driver, so if you own an SDIO module, you’d need to work out another solution.

### For Arch Users

Before proceeding futher with installation, your system needs some tools to compile the kernel modules, base developement tools, dkms(*Dynamic Kernal Module Support*) and kernel headers.

```bash
sudo pacman -S base-devel linux-headers git dkms
```

> **Note:** If you use a custom kernel like **linux-lts** or **linux-zen**, make sure you install `linux-lts-headers` or `linux-zen-headers` instead.

### For Fedora Users

Before installing anything make sure to disable secure boot because if it is enabled in your BIOS, the Fedora kernel will silently reject custom-compiled drivers and kernel headers must perfectly match the kernel currently loaded in your RAM. Update the kernel, reboot your system and then install build tools.

```bash
sudo dnf upgrade kernel kernel-devel
sudo reboot
```

Install all the necessary packages

```bash
sudo dnf install @development-tools kernel-devel-$(uname -r) kernel-headers git dkms
```

### Compiling WiFi Driver

* Clone the [repo](https://github.com/hmtheboy154/mt7902) and compile the code.

```bash
git clone https://github.com/hmtheboy154/mt7902
cd mt7902
make
```

* Install driver and firmware

```bash
sudo make install
sudo make install_fw
```

* After that, you could reboot your laptop, but I used modprobe instead to get it up and running and i am able to connect to my access point.

```bash
sudo modprobe mt7902e
```

<figure><img src="/files/WThiiZy2SRsBlfpqQcJg" alt=""><figcaption></figcaption></figure>

<p align="center"><em>Figure: Kernel Log</em></p>

<figure><img src="/files/kLkPIqplSS1iLakhk3FF" alt=""><figcaption></figcaption></figure>

<p align="center"><em>Figure: WiFi Working</em></p>

### Compiling Bluetooth Driver

Now Wifi is working, and to get bluetooth working you need to clone a different branch of same repo

```bash
git clone https://github.com/hmtheboy154/mt7902 -b bluetooth_backport btusb_mt7902
cd btusb_mt7902
make
sudo make install
sudo make install_fw
```

Now before rebooting or using modprobe make sure to blacklist the default modules *btusb* and *btmtk* and autoload the mt7902.

```bash
echo -e "blacklist btusb\nblacklist btmtk" | sudo tee /etc/modprobe.d/block-default-bt.conf
echo "btusb_mt7902" | sudo tee /etc/modules-load.d/mt7902-bt.conf
sudo modprobe btusb_mt7902
```

<figure><img src="/files/1tSBosNXbQYXNzSmvfqr" alt=""><figcaption></figcaption></figure>

<p align="center"><em>Figure: Bluetooth loads successfully</em></p>

<figure><img src="/files/N1NpvoaHuUbSz5YahZn1" alt=""><figcaption></figcaption></figure>

<p align="center"><em>Figure: Bluetooth Working</em></p>

### Use DKMS(Crucial)

Because you compiled these drivers manually, they are tied to your current kernel version. The next time pacman or dnf updates your kernel, your WiFi and Bluetooth will instantly break. Dynamic Kernel Module Support (DKMS) solves this. It runs in the background and automatically recompiles your drivers whenever a new kernel is installed.

DKMS needs clean source code to work with. Navigate back to your downloaded folders and clear out the old compiled objects.

```bash
cd /path/to/mt7902
make clean

cd /path/to/btusb_mt7902
make clean
```

Now register the modules with dkms

```bash
cd /path/to/mt7902
sudo dkms add .

cd /path/to/btusb_mt7902
sudo dkms add .
```

Because we already installed manual .ko files in previous steps, DKMS will throw an error and refuse to overwrite them. We bypass this by forcing the installation(*Run one-by-one*):

```bash
sudo dkms autoinstall
sudo dkms install mt7902e/git --force
sudo dkms install btusb_mt7902/git --force
```

and check the status with `dkms status`, the output will likely show `mt7902e/git` and `btusb_mt7902/git` as installed, and you are done now even if you update your system it won't break anymore.

### What if Official Builds arrive on Linux 7.0

Eventually, mainline Linux will officially support the MT7902. When that update inevitably lands on your machine, the custom configuration will interfere with the official drivers. To have a smooth transition to native support in future you just need to remove the dkms overrides and delete the bluetooth blacklist files.

```bash
sudo dkms remove mt7902e/git --all
sudo dkms remove btusb_mt7902/git --all
sudo rm /etc/modprobe.d/block-default-bt.conf
sudo rm /etc/modules-load.d/mt7902-bt.conf
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://0xsec.gitbook.io/0xsec/blogs/2026-04-29-mt7902_installation_guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
