Linux Driver for USB WiFi Adapters based on the RTL8814AU Chipset
Actively maintained fork of morrownr/8814au. USB WiFi driver for RTL8814AU-based adapters supporting kernels 5.4–6.18.x, Feb 2026.
WiFi capabilities — 802.11 b/g/n/ac, security, interface modes
| Feature | Details |
|---|---|
| Standards | IEEE 802.11 b/g/n/ac |
| Security | 802.1x, WEP, WPA TKIP, WPA2 AES/Mixed (PSK & TLS/Radius) |
| Client Mode | Site survey, manual connect, power saving |
| Interface Modes | Managed, Monitor, AP |
| Controls | Log level, LED, power saving, VHT (80 MHz AP), USB mode |
Compatible CPU architectures
| Architecture | Variants |
|---|---|
| x86 | i386, i686 |
| x86-64 | amd64 |
| ARM | armv6l, armv7l |
| ARM64 | aarch64 |
Compatible devices
| Device |
|---|
| ALFA AWUS1900 |
| ASUS USB-AC68 AC1900 Dual-Band USB 3.0 WiFi Adapter |
| Edimax EW-7833 UAC AC1750 Dual-Band Wi-Fi USB 3.0 Adapter |
| COMFAST CF-958AC |
| Numerous adapters based on the RTL8814AU chipset |
See supported-device-IDs for full list.
Arch / Garuda / Manjaro — pacman + DKMS
sudo pacman -S --noconfirm linux-headers dkms git iw
git clone https://github.com/joseguzman1337/8814au.git
cd 8814au
sudo ./install-driver.shNote: If using Manjaro on RasPi4B/5B, use linux-rpi4-headers instead.
Ubuntu / Debian / Kali — apt
sudo apt install -y linux-headers-$(uname -r) build-essential dkms git libelf-dev rfkill iw
git clone https://github.com/joseguzman1337/8814au.git
cd 8814au
sudo ./install-driver.shFor Kali on RasPi4B/5B, use kalipi-kernel-headers instead of linux-headers-$(uname -r).
Fedora / CentOS — dnf
sudo dnf -y install git dkms kernel-devel
git clone https://github.com/joseguzman1337/8814au.git
cd 8814au
sudo ./install-driver.shopenSUSE — zypper
sudo zypper install -t pattern devel_kernel dkms
git clone https://github.com/joseguzman1337/8814au.git
cd 8814au
sudo ./install-driver.shRaspberry Pi OS — apt
sudo apt install -y raspberrypi-kernel-headers build-essential dkms git
git clone https://github.com/joseguzman1337/8814au.git
cd 8814au
sudo ./install-driver.shVoid Linux — xbps
sudo xbps-install linux-headers dkms git make
git clone https://github.com/joseguzman1337/8814au.git
cd 8814au
sudo ./install-driver.shManual installation — without install script
make clean
make
sudo make install # if Secure Boot is OFF
sudo make sign-install # if Secure Boot is ON
sudo rebootTo remove:
sudo make uninstall
sudo rebootNote: Manual installs must be repeated after each kernel upgrade. Use install-driver.sh with DKMS for automatic rebuilds.
Secure Boot — MOK enrollment
If Secure Boot is active, after sudo make sign-install you will be prompted for a password. On reboot:
- MOK management screen appears → Enroll key → Continue → Yes
- Enter the password from the install step
Fedora users may also need:
sudo mokutil --import /var/lib/dkms/mok.pubSee FAQ.md for more details.
Configuration — runtime options via modprobe.d
The install script places 8814au.conf in /etc/modprobe.d/. Edit with:
sudo ./edit-options.shDocumentation for all options is included in 8814au.conf.
Upgrade — pull latest and reinstall
cd ~/src/8814au
sudo ./remove-driver.sh
git pull
sudo ./install-driver.shRemove — uninstall driver
cd ~/src/8814au
sudo ./remove-driver.shArch/modern kernel binding conflict (AWUS1900/RTL8814AU)
Some modern kernels include an in-kernel rtw88_8814au driver that may bind to the same USB IDs as this out-of-tree 8814au driver.
If both are active, behavior can be inconsistent.
Check current runtime state without changing anything:
./tools/runtime-healthcheck.shIf the report shows both 8814au and rtw88_8814au loaded, your system is in a mixed-driver state.
This repo now installs a blacklist file for rtw88_8814au during install-driver.sh to avoid future conflicts.
For maintenance windows where reboot is not allowed, you can hot-switch USB binding between drivers:
sudo ./tools/hot-switch-driver.sh --to native
sudo ./tools/hot-switch-driver.sh --to ootThe script captures pre/post snapshots for each action step under /tmp/rtl8814au-switch-*.
To reassess issue-sensitive behavior one-by-one across native vs out-of-tree binding:
sudo ./tools/hotplug-issue-suite.shThis produces a Markdown report plus per-step artifacts under /tmp/rtl8814au-issue-suite-*.
Zero-reboot runtime validation (multi-host)
This repository now includes a zero-reboot validation path for issue-focused diagnostics in certified environments where kernel/OS state must remain unchanged.
Available tools:
tools/runtime-healthcheck.sh: baseline interface/driver/USB/rfkill/NetworkManager checkstools/hot-switch-driver.sh: live bind switch between nativertw88_8814auand out-of-tree8814auwith pre/post snapshotstools/hotplug-issue-suite.sh: issue-oriented hot-switch regression runtools/runtime-issue-suite.sh: runtime reassessment for upstream reports focused on runtime failures (#120, #117, #115, #106)tools/injection-selftest.sh: non-destructive monitor/injection smoke test with time-windowed kernel log checks
All scripts preserve current kernel version and avoid reboot as part of normal operation.
`iw dev <if> info` missing channel/bandwidth fields
If channel fields are missing, first confirm link state:
ip -br link
iw devSome kernel/driver combinations omit channel details while the interface is DOWN.
The runtime healthcheck script prints this hint and the current interface state.
Best practices — security, channels, placement
| Setting | Recommendation |
|---|---|
| Security | WPA2-AES, WPA2/WPA3 mixed, or WPA3 — avoid WPA/TKIP |
| 2.4 GHz Width | 20 MHz fixed — avoid 40 MHz or auto |
| 2.4 GHz Channel | 1, 6, or 11 (check local congestion) — avoid auto |
| 2.4 GHz Mode | N-only if no legacy B/G devices remain |
| 5 GHz Channel | 36–48 or 149–165 for broadest device compat (US) |
| Network Names | Use different SSIDs for 2.4 GHz and 5 GHz |
| Router Placement | Centered, elevated, away from walls |
USB tips
- Try different USB ports if you encounter issues (rear ports preferred on desktops)
- Use USB 3.0 ports for USB 3 adapters
- Avoid USB 3.1 Gen 2 ports — most adapters tested with Gen 1 only
- Extension cables must match USB version; test without cable if issues arise
- RTL8814AU adapters draw significant power — a powered USB hub may help
Tx power expectations (RTL8814AU)
- Driver/module settings cannot legally override country regulatory limits.
- Reported dBm values are not a direct “watt slider”; adapter firmware, regulatory domain, and AP environment all affect effective range.
- For range improvements, prioritize antenna placement, USB 3.0 signal quality, and channel planning before changing power-related options.
Linux Mint connection stability hint
If roaming instability appears after driver upgrades, test pinning BSSID for the target network in NetworkManager and verify MAC randomization settings for that connection profile.
Community-verified distros
| Distribution | Kernel(s) |
|---|---|
| Arch Linux | 5.4, 5.11, 6.6 |
| Debian | 5.10, 5.15, 6.1, 6.6 |
| Fedora 38 | 6.2 |
| Manjaro | 5.15 |
| openSUSE Tumbleweed | 5.15 |
| Raspberry Pi OS | 2023-12-05 (ARM 32/64) |
| Ubuntu 22.04 / 22.10 | 5.15, 5.19, 6.2, 6.5 |
| Void Linux | 5.18 |
Kernels 5.4–6.18.x supported. Compilers: gcc 12, 13, 14, 15.
Original project by @morrownr
Fork maintained by @joseguzman1337 & Claude
Runtime issue-resolution engineering and validation automation by Codex (GPT-5)
Because PR auto-close keywords only close issues in the same repository, this fork includes a workflow that imports upstream issues first, then generates close-keyword lines for your single fix PR.
- Open Actions → Backlog reset (fork-safe) → Run workflow.
- Run with
dry_run=trueto preview. - Optionally set
max_issues(for phased imports), then run again withdry_run=falseto create imported issues in this fork. - Download
auto-close-keywords.mdfrom workflow artifacts and paste itsCloses #...lines into your PR description.
The workflow uses tools/import_upstream_issues.py (note the .py extension) and GITHUB_TOKEN (issues: write).
