How to fix the Realtek 8812AU WiFi card on Linux
The Realtek 8812AU is a wireless chipset that can handle network connections in AC (5Ghz,) and lesser 2GHz connections too. The chipset is most notable in use in the Netgear A6100 USB WiFi adapter. By default, this wireless chipset doesn’t work on Linux via open-source drivers in the kernel. It does have support for Ubuntu Linux though, as there are non-free drivers that the operating system will set up during the initial installation process. Aside from Ubuntu’s support for the A6100, other Linux distributions have virtually no support.
Since there isn’t very good support for the Netgear A6100 USB WiFi adapter by default on Linux, users looking to use the Realtek 8812AU WiFi card on Linux must manually install the drivers into their own Linux kernel. Given how hard it can be to install drivers on Linux, we’ll show you an easy, step-by-step process on how to enable it.
Note: these instructions work with all USB WiFi devices that use the Realtek 8812AU chipset.
Set up the building environment
The Realtek 8812AU WiFi driver for Linux requires that it be built from source code. So, before downloading the driver, you must install the necessary build-time software packages.
Installing the build-time packages on Linux requires the terminal. To open up a terminal window, press Ctrl + Alt + T or Ctrl + Shift + T on the keyboard. Then, once you have access to the command-line, follow the installation instructions that correspond with your Linux distribution below.
Ubuntu
Click on “Software & Updates” and select “Additional Drivers.” From there, you’ll be able to easily install the WiFi drivers for this device, with no need to build the code from source.
Debian
sudo apt-get install build-essential git dkms -y
Arch Linux
sudo pacman -S dkms base-devel
Fedora
sudo dnf install dkms kernel-devel kernel-headers git sudo dnf groupinstall "Development Tools"
OpenSUSE
sudo zypper in -t pattern devel_C_C++ devel_kernel sudo zypper install dkms git
Download the driver files
Realtek’s 8812AU driver files are on the internet, hosted via GitHub. To get the driver files necessary to make WiFi cards with the Realtek 8812AU chipset work on Linux, use the git clone command below.
git clone https://github.com/gnab/rtl8812au.git /usr/src/8812au-4.2.2/
Let the files download to the “/usr/src/8812au-4.2.2/” directory. They must go to this directory, or the driver, once installed, will not work with DKMS. After everything is done downloading, use the CD command to move your terminal session into the “/usr/src/8812au-4.2.2/” directory.
cd /usr/src/8812au-4.2.2/
Building drivers and installing them on Linux requires root privileges. To gain root privileges with your current user, make use of the sudo -s command, as it will keep the command-line shell in the current working directory, but switch to root for the user.
sudo -s
Using the cp command, copy the included ” 8812au.ko” driver file to the module directory of the Linux kernel you currently run. To make this easy, we’ve added the $uname -r command. It’ll auto-detect the kernel information.
cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/
Once the driver file is in the correct location, run the depmod command.
depmod
Running depmod should take a couple of seconds, and no output should print into the terminal. When it’s done, the terminal is useable again.
At this point, the USB driver should be up and running, and there’s no need to go further if you do not require DMKS. However, please understand that skipping the DKMS steps means that the driver needs to be manually re-installed after each kernel update.
DKMS setup
DKMS (Dynamic Kernel Module Support) is a framework for the Linux kernel that allows third-party Linux kernel modules (like this WiFi driver) to be automatically re-installed every time the Linux kernel receives a new update.
Setting up this driver in DKMS is an excellent idea, and it will take a lot of the headache of setting up your Netgear AC1600 USB device, or any other WiFi USB device using the Realtek 8812AU chipset.
To start the DMKS setup, add the 8812au module to the DKMS system with the dkms add command.
dkms add -m 8812au -v 4.2.2
After adding the module with the add command, it’s time to build it into the Linux kernel. Building through DKMS is done with the dkms build command.
dkms build -m 8812au -v 4.2.2
Building shouldn’t take a long time, as the module is already installed on the system. If you run into any errors in the terminal during the build, reboot your Linux PC and try the dkms build command again, and everything should work fine.
When the module is built with dkms, you can install it using dkms.
sudo dkms install -m 8812au -v 4.2.2
With all of the DMKS stuff out of the way, use the echo command below to ensure that the driver automatically loads up at boot.
echo 8812au | sudo tee -a /etc/modules
Assuming you’ve followed all of the steps correctly, your Realtek 8812AU WiFI card should work perfectly on Linux!
thank you!
The information you provided has successfully solved the problem! Thank you!
By the way, the personal computer solved by your information is Toshiba’s corporate laptop B450 / C.
I tried those steps but it didn’t work. I’m running Centos 8.1.
Everything went fine until I did the “git clone” which went fine, but the “8812au.ko” wasn’t in that downloaded directory. I found this after getting a copy error during this step “cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/”. No such file or directory. When I “ls -la”, the “8812au.ko” file wasn’t to be found. I looked within the folders, but nada.
I do show the Realtek USB wifi when doing “lsusb”, but nothing under:
“ifconfig -a”
“iwconfig”
“iw dev”
This was after spending all weekend looking to make this card work THIS TIME, as I have spent weekends before this, lol. Just ranting a little. You directions have been the best I’ve seen so far, until I got there. So when trying to run DKMS, it gave me an error also, so I rebooted as you suggested in your notes. Same thing since the file “8812au.ko” wasn’t in the git clone directory.
Any help would be appreciated.
Seems like you omitted the shell script.