Linux drivers for Realtek Wi-Fi 6/6E and Wi-Fi 7 adapters and cards
Find a file
Louis Kotze e36615e799 README: dedupe step number in Installation Guide
Step "3." appeared twice in the Installation Guide source
(cleanup_target_system and "Build and install the driver").

Rendered output on github.com is correct because CommonMark
auto-renumbers ordered lists, but the raw source reads
1, 2, 3, 3, 4, 5, 6, which is confusing for tools that consume
the markdown directly (terminal viewers, AI assistants
summarising install steps, RAG indexes over raw docs).

Renumber so source and render agree:

    3. Search and remove ...      (unchanged)
    3 -> 4. Build and install the driver
    4 -> 5. Install the firmware
    5 -> 6. Copy rtw89.conf to /etc/modprobe.d/
    6 -> 7. Enroll the MOK

No content or wording changes.
2026-05-05 23:41:32 +08:00
fedora Fix number of files in the RPM package. 2026-04-22 21:57:13 +03:00
firmware Delete unneeded firmware files 2026-04-06 01:36:53 +08:00
hostapd hostapd: Add config files for 8851B/8852A/8852B 2026-02-02 05:32:23 +08:00
.gitignore Add .gitignore to clean up "git status" output 2025-07-24 00:33:13 +03:00
acpi.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-26 20:10:31 +08:00
acpi.h wifi: rtw89: regd/acpi: support 6 GHz VLP policy via ACPI DSM 2025-07-20 00:34:38 +08:00
cam.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-26 20:06:59 +08:00
cam.h wifi: rtw89: fw: add DMAC v3 H2C command for RTL8922D 2026-01-28 23:40:03 +08:00
chan.c wifi: rtw89: chan: recalc MLO DBCC mode based on current entity mode 2026-04-04 11:08:40 +08:00
chan.h wifi: rtw89: pre-handle RF calibration on link when needed 2026-01-28 23:31:34 +08:00
coex.c wifi: rtw89: coex: Limit Wi-Fi scan slot cost to avoid A2DP glitch 2025-09-22 21:20:03 +08:00
coex.h wifi: rtw89: coex: Implement Wi-Fi MLO related logic 2025-07-20 00:01:11 +08:00
core.c wifi: rtw89: Add missing TX queue mappings for RTL8922AU 2026-04-24 20:11:35 +03:00
core.h Fix build for kernel 6.8 2026-04-06 01:35:32 +08:00
debug.c wifi: rtw89: mac: add specific case to dump mac memory for RTL8922D 2026-04-04 11:34:09 +08:00
debug.h wifi: rtw89: phy: handle C2H event for PS mode report 2026-01-29 00:41:29 +08:00
dkms.conf dkms.conf: Suppress "Deprecated feature: CLEAN" warning 2026-04-23 10:00:45 +08:00
efuse.c wifi: rtw89: retry efuse physical map dump on transient failure 2026-03-30 17:39:22 +08:00
efuse.h wifi: rtw89: efuse: read hardware version from efuse for WiFi 7 chips 2026-01-28 22:18:08 +08:00
efuse_be.c wifi: rtw89: efuse: read hardware version from efuse for WiFi 7 chips 2026-01-28 22:18:08 +08:00
fw.c wifi: Rename EMLSR delay constants and add EMLMR helpers and definitions 2026-04-30 23:17:04 +08:00
fw.h wifi: rtw89: 8922d: add chip_info and chip_ops struct 2026-04-04 11:43:00 +08:00
mac.c wifi: rtw89: mac: add specific case to dump mac memory for RTL8922D 2026-04-04 11:34:09 +08:00
mac.h wifi: rtw89: mac: disable pre-load function for RTL8922DE 2026-04-04 11:34:38 +08:00
mac80211.c Minor fixes 2026-05-01 09:56:11 +08:00
mac_be.c Minor fixes 2026-05-01 09:56:11 +08:00
Makefile Minor fixes 2026-05-01 09:56:11 +08:00
pci.c wifi: rtw89: fix wrong pci_get_drvdata type in AER handlers 2026-04-30 23:18:53 +08:00
pci.h wifi: rtw89: 8922d: add PCI ID of RTL8922DE and RTL8922DE-VS 2026-04-04 11:43:42 +08:00
pci_be.c wifi: rtw89: pci: clear SER ISR when initial and leaving WoWLAN for WiFi 7 chips 2026-04-04 11:33:35 +08:00
phy.c wifi: rtw89: phy: increase RF calibration timeouts for USB transport 2026-04-24 19:15:47 +08:00
phy.h wifi: rtw89: phy: limit AMPDU number for RA try rate 2026-04-04 11:04:16 +08:00
phy_be.c wifi: rtw89: phy: expand PHY page for RTL8922D 2026-04-04 11:35:18 +08:00
ps.c wifi: rtw89: add H2C command to protect TX/RX for unused PHY 2026-04-04 10:57:29 +08:00
ps.h wifi: rtw89: mcc: clear normal flow NoA when MCC start 2025-07-19 23:56:22 +08:00
README.md README: dedupe step number in Installation Guide 2026-05-05 23:41:32 +08:00
reg.h [v2] wifi: rtw89: Fix rtw89_usb_ops_mac_lv1_rcvy() for RTL8922AU 2026-04-30 23:31:39 +08:00
regd.c wifi: rtw89: regd: update regulatory map to R73-R54 2026-01-29 00:53:37 +08:00
rtw89.conf Blacklist Larry's rtw89 drivers 2025-08-27 08:28:25 +08:00
rtw8851b.c wifi: rtw89: 8922d: add ops related to BT coexistence mechanism 2026-04-04 11:42:17 +08:00
rtw8851b.h wifi: rtw89: 8851b: add to parse efuse content 2023-10-21 10:41:46 -05:00
rtw8851b_rfk.c wifi: rtw89: Replace hardcoded strings with helper functions 2025-11-22 11:59:08 +08:00
rtw8851b_rfk.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8851b_rfk_table.c wifi: rtw89: 8851b: rfk: update IQK to 0x14 2025-07-20 00:30:20 +08:00
rtw8851b_rfk_table.h wifi: rtw89: 8851b: rfk: update IQK to 0x14 2025-07-20 00:30:20 +08:00
rtw8851b_table.c wifi: rtw89: 8851b: update NCTL 0xB 2025-07-20 00:29:12 +08:00
rtw8851b_table.h wifi: rtw89: indicate TX power by rate table inside RFE parameter 2023-10-21 10:41:48 -05:00
rtw8851be.c wifi: rtw89: pci: abstract RPP parser 2025-09-22 21:24:44 +08:00
rtw8851bu.c wifi: rtw89: usb: Rx aggregation for RTL8832CU/RTL8851BU 2026-04-04 11:22:18 +08:00
rtw8852a.c wifi: rtw89: 8922d: add ops related to BT coexistence mechanism 2026-04-04 11:42:17 +08:00
rtw8852a.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852a_rfk.c wifi: rtw89: 8852a: correct field mask of reset DAC/ADC FIFO 2025-11-22 12:31:14 +08:00
rtw8852a_rfk.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852a_rfk_table.c rtw89: refine naming of rfk helpers with prefix 2023-10-20 20:57:33 -05:00
rtw8852a_rfk_table.h rtw89: make rfk helpers common across chips 2023-10-20 20:57:33 -05:00
rtw8852a_table.c wifi: rtw89: 8852a: move DIG tables to rtw8852a.c 2026-04-04 10:54:44 +08:00
rtw8852a_table.h wifi: rtw89: 8852a: move DIG tables to rtw8852a.c 2026-04-04 10:54:44 +08:00
rtw8852ae.c wifi: rtw89: pci: abstract RPP parser 2025-09-22 21:24:44 +08:00
rtw8852au.c wifi: rtw89: usb: Rx aggregation for RTL8832CU/RTL8851BU 2026-04-04 11:22:18 +08:00
rtw8852b.c wifi: rtw89: 8922d: add ops related to BT coexistence mechanism 2026-04-04 11:42:17 +08:00
rtw8852b.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852b_common.c wifi: rtw89: read chip ID for RTL8922D variants 2026-01-28 22:18:50 +08:00
rtw8852b_common.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852b_rfk.c wifi: rtw89: Replace hardcoded strings with helper functions 2025-11-22 11:59:08 +08:00
rtw8852b_rfk.h wifi: rtw89: 8852b: implement RFK multi-channel handling and support chanctx up to 2 2025-07-20 02:49:58 +08:00
rtw8852b_rfk_table.c wifi: rtw89: 8852b: add tables for RFK 2023-10-21 10:41:45 -05:00
rtw8852b_rfk_table.h wifi: rtw89: 8852b: add tables for RFK 2023-10-21 10:41:45 -05:00
rtw8852b_table.c wifi: rtw89: 8852b: update TX power tables to R36 2024-01-10 09:29:04 -06:00
rtw8852b_table.h wifi: rtw89: indicate TX power by rate table inside RFE parameter 2023-10-21 10:41:48 -05:00
rtw8852be.c wifi: rtw89: pci: abstract RPP parser 2025-09-22 21:24:44 +08:00
rtw8852bt.c wifi: rtw89: 8922d: add ops related to BT coexistence mechanism 2026-04-04 11:42:17 +08:00
rtw8852bt.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852bt_rfk.c wifi: rtw89: 8852bt: Remove redundant off_reverse variables 2025-09-22 22:03:50 +08:00
rtw8852bt_rfk.h wifi: rtw89: 8852bt: implement RFK multi-channel handling and support chanctx up to 2 2025-07-20 00:44:53 +08:00
rtw8852bt_rfk_table.c Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852bt_rfk_table.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852bte.c wifi: rtw89: pci: abstract RPP parser 2025-09-22 21:24:44 +08:00
rtw8852bu.c wifi: rtw89: usb: Rx aggregation for RTL8832CU/RTL8851BU 2026-04-04 11:22:18 +08:00
rtw8852c.c wifi: rtw89: 8922d: add ops related to BT coexistence mechanism 2026-04-04 11:42:17 +08:00
rtw8852c.h wifi: rtw89: 8852c: Accept USB devices and load their MAC address 2025-07-04 00:26:41 +03:00
rtw8852c_rfk.c wifi: rtw89: 8852c: fix ADC oscillation in 160MHz affecting RX performance 2025-11-22 12:04:23 +08:00
rtw8852c_rfk.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8852c_rfk_table.c wifi: rtw89: 8852c: Fix TSSI causes transmit power inaccuracy 2023-10-21 10:41:47 -05:00
rtw8852c_rfk_table.h rtw89: 8852c: rfk: add RFK tables 2023-10-20 20:57:34 -05:00
rtw8852c_table.c wifi: rtw89: 8852c: update TX power tables to R69.1 (2 of 2) 2024-04-22 13:05:14 -05:00
rtw8852c_table.h wifi: rtw89: indicate TX power by rate table inside RFE parameter 2023-10-21 10:41:48 -05:00
rtw8852ce.c wifi: rtw89: pci: abstract RPP parser 2025-09-22 21:24:44 +08:00
rtw8852cu.c Add support for TP-Link TL-XDN9000H 2026-04-14 12:09:32 +08:00
rtw8922a.c Minor fixes 2026-05-01 09:56:11 +08:00
rtw8922a.h Introduce the rtw89 driver in linux 6.14 2025-01-15 08:59:38 +08:00
rtw8922a_rfk.c wifi: rtw89: rfk: update rtw89_fw_h2c_rf_pre_ntfy_mcc format 2026-01-28 23:36:58 +08:00
rtw8922a_rfk.h Upload newer rtw89 driver from linux 6.12-rc7 2024-11-13 03:22:34 +08:00
rtw8922ae.c wifi: rtw89: pci: abstract RPP parser 2025-09-22 21:24:44 +08:00
rtw8922au.c [v2] wifi: rtw89: Add rtw8922au.c 2026-04-30 23:56:53 +08:00
rtw8922d.c wifi: rtw89: 8922d: fix typo rx_freq_frome_ie 2026-05-01 09:56:36 +08:00
rtw8922d.h wifi: rtw89: 8922d: add chip_info and chip_ops struct 2026-04-04 11:43:00 +08:00
rtw8922d_rfk.c wifi: rtw89: 8922d: add RF ops of init hardware and get thermal 2026-04-04 11:41:46 +08:00
rtw8922d_rfk.h wifi: rtw89: 8922d: add RF ops of init hardware and get thermal 2026-04-04 11:41:46 +08:00
rtw8922de.c wifi: rtw89: 8922d: add PCI ID of RTL8922DE and RTL8922DE-VS 2026-04-04 11:43:42 +08:00
sar.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-26 20:06:59 +08:00
sar.h wifi: rtw89: 8922a: add TAS feature support 2025-09-22 22:12:29 +08:00
ser.c wifi: rtw89: mac: add specific case to dump mac memory for RTL8922D 2026-04-04 11:34:09 +08:00
ser.h rtw89: add Realtek 802.11ax driver 2023-10-20 20:57:32 -05:00
txrx.h wifi: rtw89: update query RXDESC v3 for RTL8922D 2026-01-28 23:39:38 +08:00
usb.c Minor fixes 2026-05-01 09:56:11 +08:00
usb.h [v2] wifi: rtw89: usb: Enable RX aggregation for RTL8922AU 2026-04-30 23:45:43 +08:00
usb_storage.conf Update README.md, dkms.conf and usb_storage.conf 2026-01-29 04:44:41 +08:00
util.c Introduce the rtw89 driver in kernel 6.15 2025-03-14 17:21:35 +08:00
util.h wifi: rtw89: Drop malformed AMPDU frames with abnormal PN 2026-04-04 11:17:45 +08:00
wow.c wifi: rtw89: Drop malformed AMPDU frames with abnormal PN 2026-04-04 11:17:45 +08:00
wow.h wifi: rtw89: Drop malformed AMPDU frames with abnormal PN 2026-04-04 11:17:45 +08:00

The Mission of this Repo:

To code, test and upstream great quality Linux Standards compliant (mac80211) USB WiFi drivers for the Realtek RTW89 driver series.

Compatibility

Compatible with Linux kernel versions 6.6 and newer as long as your distro hasn't modified any kernel APIs. RHEL and all distros based on RHEL will have modified kernel APIs and are unlikely to be compatible with this driver.

Supported chips

  • USB : RTL8831BU, RTL8851BU, RTL8832AU, RTL8852AU, RTL8832BU, RTL8852BU
  • USB : RTL8832CU, RTL8852CU, RTL8912AU, RTL8922AU
  • PCIe: RTL8851BE, RTL8852AE, RTL8852BE(-VS, -VT), RTL8852CE, RTL8922AE(-VS)

Note: If you own a USB WiFi adapter with any of the above supported chips and your adapter is single-state (no Windows driver on board) and single-function (no bluetooth support), please start an issue and post the brand, name and chip of your adapter as well as a link to the product. This will allow us to make a list of preferred adapters.

Prerequisites

git, make, gcc, kernel-headers, dkms and mokutil (dkms and mokutil are optional.)

Installation Guide

  1. Create a clone of this repo in your local machine

    git clone https://github.com/morrownr/rtw89
    
  2. Change the working directory to rtw89

    cd rtw89
    
  3. Search and remove previously installed out-of-kernel rtw89 drivers. If your system has Larry's rtw89 driver installed, you must run this command to remove it, or this driver won't work as expected.

    sudo make cleanup_target_system
    
  4. Build and install the driver

    • via dkms (Recommended especially if Secure Boot is enabled in your system)

      sudo dkms install $PWD
      
    • via make (In this way you will have to manually reinstall the driver after each kernel update)

      make clean modules && sudo make install
      
  5. Install the firmware necessary for the driver

    sudo make install_fw
    
  6. Copy the configuration file rtw89.conf to /etc/modprobe.d/

    sudo cp -v rtw89.conf /etc/modprobe.d/
    

    Note: The above step will blacklist in-kernel drivers that can conflict with drivers in this repo.

  7. Enroll the MOK (Machine Owner Key). This is needed ONLY IF Secure Boot is enabled in your system. Please see this guide for details.

    sudo mokutil --import /var/lib/dkms/mok.pub
    

    For Ubuntu-based distro users, run this command instead.

    sudo mokutil --import /var/lib/shim-signed/mok/MOK.der
    

Uninstallation Guide

For users who installed the driver via DKMS,

  1. Check the version of the rtw89 driver installed in your system.
sudo dkms status rtw89
  1. Remove the rtw89 driver and its source code (Change the driver version accordingly)
sudo dkms remove rtw89/6.15 --all
sudo rm -rf /usr/src/rtw89-6.15
  1. Remove the configuration file
sudo rm -f /etc/modprobe.d/rtw89.conf

For users who installed the driver via make, run these commands in the rtw89 source directory

sudo make uninstall
sudo rm -f /etc/modprobe.d/rtw89.conf

Q&A

Q1. Bluetooth is still not working after installing this driver, why?

The rtw89 driver is the Wi-Fi driver for Realtek Wi-Fi 6/7 adapters and has nothing to do with Bluetooth. Open a new issue and share the output of the command sudo cat /sys/kernel/debug/usb/devices with us if you run into a Bluetooth problem.

Q2. How to update the driver installed via DKMS?

  1. Check the version of the rtw89 driver installed in your system.

    sudo dkms status rtw89
    
  2. Remove the rtw89 driver. (Change the driver version accordingly)

    sudo dkms remove rtw89/6.15 --all
    
    sudo rm -rf /usr/src/rtw89-6.15/
    
  3. Run this command in the rtw89 source directory to pull the latest code

    git pull
    
  4. Build, sign and install the rtw89 driver from the latest code.

    sudo dkms install $PWD
    

Q3. How to update the driver installed via make?

  1. Run this command in the rtw89 source directory to pull the latest code

     git pull
    
  2. Rebuild and reinstall the driver from the latest code

    make clean modules && sudo make install
    

Q4. How to update the firmware in my system?

  1. Run this command in the rtw89 source directory to pull the latest code and firmware

    git pull
    
  2. Update the firmware files in your system

    sudo make install_fw
    

Q5. I see my USB Wi-Fi adapter is in Driver CDROM Mode when running lsusb, what should I do?

Install usb-modeswitch (or usb_modeswitch), a tool that can switch your adapter to Wi-Fi mode.

Q6. My computer takes a very long time to boot when the Wi-Fi dongle is pre-inserted, how to fix it?

  1. Copy usb_storage.conf to /etc/modprobe.d/. This file will tell the culprit usb_storage not to touch the Wi-Fi dongles.

    sudo cp usb_storage.conf /etc/modprobe.d/
    
  2. Regenerate initramfs images. The following command is only applicable to Debian/Ubuntu and their variants. Please consult the manual if you are running other distros.

    sudo update-initramfs -u -k all
    

The Main Menu for this site contains a lot of information regarding USB WiFi Adapters

https://github.com/morrownr/USB-WiFi