•
3 min read

[FIX] Fedora MT7902 Wifi and Bluetooth Issue

Table of Contents

Here the post embed:

[FIX] MT7902 driver issue for wifi and bluetooth on Asus vivobook and other laptops
by u/DisastrousNinja911 in Fedora

Fedora had recently pushed the kernel 7.1.3-200.fc44.x86_64 with the driver patch fix. I updated my kernel, but the issue was still present (NO wifi and bluetooth).

Thanks to u/fdelux6 guided instructions, I fixed this issue.

Check out the raw discussion if you want to get the full picture here.

Below are the steps:

First run these commands below:

lspci -k | grep -A3 -i network
sudo dmesg | grep -iE 'mt7902|mt76|firmware'

First command will check if the driver is bound to the network card. Logs the wifi model and its current driver status. Should show “Kernel driver in use”

Second command logs the firmware errors.

If this says firmware not loaded, setup issues.

Run these command

sudo dnf check-update linux-firmware
sudo dnf update linux-firmware

If updated and loaded, you should see this message.

Updating and loading repositories:
Repositories loaded.
Nothing to do.

For bluetooth do these steps:

You need to manually install the firmware

sudo curl -L -o /tmp/BT_RAM_CODE_MT7902_1_1_hdr.bin \
  "https://gitlab.com/kernel-firmware/linux-firmware/-/raw/main/mediatek/BT_RAM_CODE_MT7902_1_1_hdr.bin"

sudo install -D -m 644 /tmp/BT_RAM_CODE_MT7902_1_1_hdr.bin /lib/firmware/mediatek/BT_RAM_CODE_MT7902_1_1_hdr.bin

sudo modprobe -r btusb btmtk

sudo modprobe btusb

The curl command will download the firmware file straight from the upstream linux-firmware repo into /tmp so nothing permanent happens yet.

install -D -m 644 copies it into the real firmware directory with the correct permissions

Then the two modprobe lines unload and reload the Bluetooth USB driver so the kernel re-requests the firmware now that it exists.

Your bluetooth should work now.

Run this command to verify if it works.

bluetoothctl show

For wifi, do these steps:

Run this command to check the model and driver:

sudo dmesg | grep -i mt7921

OR

sudo journalctl -k -b | grep -i mt7921

This reads from journald’s stored boot log rather than the live buffer, so it should still have those early lines even after more than 40 minutes of uptime.

To check outside of logs, run these commands:

ip link show
nmcli device status

There should be a wireless interface listed here.
To check outside of logs, run these commands:

ip link show
nmcli device status

Now, you have to manually install the firmware

sudo curl -L -o /tmp/WIFI_RAM_CODE_MT7902_1.bin \
  "https://gitlab.com/kernel-firmware/linux-firmware/-/raw/main/mediatek/WIFI_RAM_CODE_MT7902_1.bin"

sudo curl -L -o /tmp/WIFI_MT7902_patch_mcu_1_1_hdr.bin \
  "https://gitlab.com/kernel-firmware/linux-firmware/-/raw/main/mediatek/WIFI_MT7902_patch_mcu_1_1_hdr.bin"

sudo install -D -m 644 /tmp/WIFI_RAM_CODE_MT7902_1.bin /lib/firmware/mediatek/WIFI_RAM_CODE_MT7902_1.bin

sudo install -D -m 644 /tmp/WIFI_MT7902_patch_mcu_1_1_hdr.bin /lib/firmware/mediatek/WIFI_MT7902_patch_mcu_1_1_hdr.bin

sudo modprobe -r mt7921e
sudo modprobe mt7921e

Then check:

nmcli device status
sudo journalctl -k -b | grep -i mt7921

You should see the wifi device go from “unavailable” to “disconnected” (ready to connect) in nmcli, and the journal should show a clean init this time.

Your wifi should work now.

Again, thanks to this guy u/fdelux6 who did all this work and helped me like a wizard.