# The 8821cu out-of-kernel driver is on its way out, and the README says so

> morrownr/8821cu-20210916 is a Linux driver for Realtek RTL8811CU, RTL8821CU, RTL8821CUH and RTL8731AU USB WiFi adapters, built from the v5.12.0.4 Realtek source with community patches. The first line of its own README says the in-kernel mac80211 driver is now of good quality, so this one is for older kernels only, and it will stop getting API updates after kernel 6.14.

**morrownr/8821cu-20210916** — Linux Driver for USB WiFi Adapters that are based on the RTL8811CU, RTL8821CU, RTL8821CUH and RTL8731AU Chipsets - v5.12.0.4

- Repository: https://github.com/morrownr/8821cu-20210916
- Stars: 842 · Forks: 185
- Language: C
- License: NOASSERTION
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/morrownr-8821cu-20210916

## The README opens by telling you to stop using it

The first thing in this repository is a notice, and it changes the whole framing of the project. An updated standards compliant mac80211 in-kernel driver for the rtl8821 and rtl8811cu chipset based adapters and modules is available, and as of kernel 6.12 it is of good quality. If your distribution uses kernel 6.12 or later, the notice says plainly that there is no need to install this driver. The in-kernel driver is part of the rtw88 series, is Linux Standards compliant, and is described as a much better driver than this one. The timeline is stated as well: this driver will no longer get API related updates beyond kernel 6.14, unless provided by a user, and if you run a kernel prior to 6.14 it is possible to use the new standards compliant driver by going to the lwfinger/rtw88 repository. So the project is in maintenance mode by design, its remaining audience is people on kernels between roughly 5.10 and 6.11, and the migration path for everyone else is to remove this driver rather than to upgrade it.

## Removing the driver is the first step of the migration

If you decide to switch to the in-kernel driver, the README is explicit about the order of operations: remember to first remove the driver in this repo. The removal command is:

```bash
$ sudo sh remove-driver.sh
```

That matters more than it sounds, because the project carries a separate warning that installing multiple out-of-kernel drivers for the same hardware usually does not end well. The install-driver.sh script has the capability to detect and remove most conflicting drivers, but not all, so the reverse case is the dangerous one. If the driver misbehaves and a previous driver was never removed, the README suggests checking what is registered with DKMS:

```bash
sudo dkms status
```

The reasoning generalises. This is a DKMS package, so its lifecycle is tied to your kernel packages rather than to the distribution, and every kernel upgrade means a rebuild. The README therefore says that if you decide to do a distro upgrade, which will likely install a new kernel such as 5.15 to 6.1, you need to update this driver with the newest available code and then run the removal script before performing the distro upgrade.

## What the driver supports once it is installed

The feature list is long, and it is the clearest argument for the out-of-kernel driver on an older kernel. The hardware side covers IEEE 802.11 b/g/n/ac compliant WiFi, with 802.1x, WEP, WPA TKIP and WPA2 AES and mixed mode for PSK and TLS with Radius, plus WPA3-SAE personal, WPA3-Enterprise with Suite-B 192-bit, WAPI 1.0 station mode, and WPS with both PIN and PBC methods. The interface modes include Managed, Monitor, AP, P2P-client and P2P-GO, and the README links separate documentation for monitor mode and for a bridged wireless access point in AP mode. Beyond the basics there is power saving control, Miracast, WiFi-Direct, MU-MIMO, Mesh, Wake on WLAN, VHT control for 80 MHz channel width in AP mode, AP mode DFS channel control, log level control and LED control. It is also Wireshark compatible, Aircrack-ng compatible, supports packet injection, and is hostapd compatible. Whether every one of those behaves as well as the in-kernel driver on a modern kernel is a separate question, but the capability set is genuinely broader than the 802.11ac-only picture people sometimes have of cheap USB adapters.

## The compatibility matrix is the thing to check first

Before anything else, confirm your hardware and kernel are inside the supported box. On kernels, the project states that kernels 5.10 to 5.11 are supported by Realtek, and kernels 5.12 to 6.17 with community support, with kernels earlier than 5.10 possibly working but neither tested nor supported. Compilers tested are gcc 12, 13 and 14. Architectures listed as compatible are x86, i386, i686, x86-64, amd64, armv6l, armv7l and aarch64, with a note that additional architectures may work but that the maintainer only has the hardware to test the listed ones. The distribution list is explicitly user-report driven rather than a tested matrix, and covers Arch Linux, Debian, Fedora 38, Kali Linux, Manjaro, openSUSE Tumbleweed, Raspberry Pi OS and Desktop, SkiffOS for Odroid XU4, Ubuntu 22.04 and 22.10, and Void Linux. Two gaps are called out with unusual candour. There is no current RHEL maintainer, and the author reserves the right to delete that support without notice if it causes problems, and there is no current Android maintainer either. OpenWRT is stated as not supported, with the advice to use the chipsets it already provides drivers for.

## Choosing an adapter that will not cause you grief

The hardware advice in this repository is unusually practical, and it comes from years of field reports rather than from a datasheet. The README asks you to read the file supported-device-IDs to confirm that this is the correct driver for your adapter, and lists specific compatible devices including the EDUP EP-AC1651 in nano form and the EDUP EP-AC1635, both single-state and single-function, plus numerous other adapters based on the supported chipsets. For buying advice it points to the maintainer's USB-WiFi repository, menu item 2, for recommended adapters and menu item 1 for an explanation of single-state and multi-state adapters. The recommendation is to look for an adapter that is single-state and single-function, with the warning that multi-function adapters combining WiFi and Bluetooth can be problematic. The same advice applies when you already own hardware, because the question is not only which chipset an adapter uses but whether the Bluetooth half of it will fight the WiFi half for the same device node.

## The repository is a driver plus its installer and its documentation

The file layout shows how a kernel driver project is actually assembled. At the top level there is the Makefile, a Kconfig file, a dkms.conf and dkms-make.sh for the DKMS integration, install-driver.sh and remove-driver.sh for the lifecycle, edit-options.sh for changing build options, and the 8821cu.conf file for additional documentation. The source itself sits in the usual Realtek directory structure, with core/, hal/, include/, os_dep/ and platform/ directories, and the Realtek build fragments rtl8821c.mk and halmac.mk. The Makefile shows the practical build configuration, with -O1 optimisation, LED control enabled through CONFIG_LED_CONTROL and the software LED options, a set of gcc 12 and gcc 13 warning suppressions, and a commented-out CONFIG_CONCURRENT_MODE switch that activates concurrent mode. Two documentation files are pointed at repeatedly, FAQ.md and 8821cu.conf, and the README asks you to read both before posting an issue, which is a reasonable request for a project where most reports are configuration mistakes rather than driver bugs.

## Licence terms and a project still being patched

The licence is a custom one that GitHub cannot classify, with the LICENSE file at the root of the repository, which is worth reading before you redistribute the built module or fold it into a distribution package. The driver is built from Realtek v5.12.0.4 source dated 20210916 plus updates from the Linux community, so the terms of the original vendor code sit underneath the maintainer's own additions, and a pure upstream licence identifier would have been misleading. On maintenance, the last push to the repository was on 2026-09-17 and the repository is not archived, and the repository publishes no GitHub releases, so there is no tag to pin and no packaged module to point at. The maintainer closes the notice with a note that it has been a pleasure maintaining the driver for the last several years and thanks those who helped. The practical summary is that a specific set of kernels, a specific set of compilers and a specific set of chipsets are supported, and the project will keep patching what exists while the ecosystem moves to rtw88.

## Conclusion

8821cu-20210916 is worth installing only if your machine runs a kernel older than 6.12 and your adapter uses one of the four supported Realtek chipsets, because on a kernel of 6.12 or later the in-kernel rtw88 driver is described as standards compliant and of good quality and there is no need for this one. It is the wrong tool for a current distribution or for an OpenWRT router, which the README says is not supported. Verify first that your adapter's device ID is listed in the supported-device-IDs file, that your kernel falls in the 5.10 to 6.17 range the project supports, and that no other out-of-kernel driver for the same hardware is installed, since the install script can detect and remove most conflicting drivers but not all.

## FAQ

### Do I still need the 8821cu-20210916 driver on a modern kernel?

Probably not. The README says an updated standards compliant mac80211 in-kernel driver is of good quality as of kernel 6.12 and that there is no need to install this driver if your distribution uses kernel 6.12 or later. On older kernels, the lwfinger/rtw88 repository is the recommended route.

### How do I remove the 8821cu driver before switching to the in-kernel one?

Run sudo sh remove-driver.sh from the repository. The README asks you to remove this driver first, and warns that installing multiple out-of-kernel drivers for the same hardware usually does not end well.

### Which Realtek chipsets does this Linux WiFi driver support?

The RTL8811CU, RTL8821CU, RTL8821CUH and RTL8731AU chipsets, built from Realtek v5.12.0.4 source from 20210916 plus community updates. The supported-device-IDs file in the repository lists the specific adapters covered.

### Which kernels and compilers are supported?

Kernels 5.10 to 5.11 with Realtek support and 5.12 to 6.17 with community support, with earlier kernels untested and unsupported. The tested compilers are gcc 12, 13 and 14.

### Can I use these adapters with OpenWRT?

No. The README states OpenWRT is not supported for this out-of-kernel driver and advises using the chipsets OpenWRT already provides drivers for, including the MT7921au, MT7612u and MT7610u.

## Sources

- [Issues](https://github.com/morrownr/8821cu-20210916/issues)
- [morrownr/8821cu-20210916 on GitHub](https://github.com/morrownr/8821cu-20210916)
- [README](https://github.com/morrownr/8821cu-20210916/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/morrownr-8821cu-20210916
