Realtek 8812AU USB WiFi driver
C C++ Other
diederikdehaas Fixed 'implicit-fallthrough' warning.
By adding an explict comment saying 'Intentional fallthrough' you hint
at the compiler that it isn't an error/omission, but you explicitly want
that (feature).
Latest commit ee592f8 Mar 14, 2018


This repository contains drivers for the rtl8812AU and rtl8821AU/rtl8811AU chipsets.

It started out because I found a newer driver then I found elsewhere, namely version 4.3.8. But since then I found even newer versions released by Realtek and decided to use/update those too.
If you find a newer version then I have, I'd appreciate it if you would share it.

Currently there are the following branches, named after the initial Realtek driver version.

The driver (versions) are primarily targetted at Debian and Raspbian, but I have no reason to assume it won't work for other distrubutions. If fixes are needed for other distrubution with no negative effect on Debian or Raspbian, I'll gladly incorporate those into my repository.

I have currently successfully compiled the driver on Debian kernel 3.2, 3.16, 4.1-4.15 and on Raspbian with kernel 3.18, 4.1 and 4.4.

Raspberry Pi

There is a section added for compilation on the Raspberry Pi, but it is not enabled by default.
To enable it, make the following change in the Makefile:




And then it should compile succesfully on the Raspberry Pi.
Keep in mind that when using dkms on the Raspberry Pi you need to make the above change before running the dkms installation commands.


DKMS is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the dkms package, which on Debian (based) systems is done like this:

# apt-get install dkms

Where '#' denotes that it should be executed as root or with sudo, but don't type that character.

To make use of the DKMS feature with this project, do the following as root:

# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.20
# mkdir /usr/src/${DRV_NAME}-${DRV_VERSION}
# git archive driver-${DRV_VERSION} | tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
# dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
# dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
# dkms install -m ${DRV_NAME} -v ${DRV_VERSION}

and the instructions with sudo are:

$ DRV_NAME=rtl8812AU
$ DRV_VERSION=4.3.20
$ sudo mkdir /usr/src/${DRV_NAME}-${DRV_VERSION}
$ git archive driver-${DRV_VERSION} | sudo tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
$ sudo dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
$ sudo dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
$ sudo dkms install -m ${DRV_NAME} -v ${DRV_VERSION}

Whereby it is assumed you're in the cloned project directory and the current branch is driver-4.3.20 (the default). If you want to use another driver version, adjust DRV_VERSION accordingly.

If you later on want to remove it again, do the following as root:

# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.20
# dkms remove ${DRV_NAME}/${DRV_VERSION} --all

or with sudo:

$ DRV_NAME=rtl8812AU
$ DRV_VERSION=4.3.20
$ sudo dkms remove ${DRV_NAME}/${DRV_VERSION} --all