Saturday, 11 March 2017

Installing ASUS USB-AC56 (chip RTL8812AU) Driver on Linux (Ubuntu)

I have a ASUS USB-AC56 WI-FI Adapter that is based on RTL8812AU chipset.
The Ubuntu kernel did not recognize the adapter automatically, so I downloaded and installed the driver from www.asus.com. However, it did not work. The reason may be that I am using Ubuntu 16.10 (kernel 4.8) and the driver provided by Asus is said to support Linux kernel 2.6 ~ 3.18.

I searched and found a newer driver compiled by Diederik de Haas on GitHub. You find it here.

You need to have git and dkms installed before proceeding.

$ sudo apt-get install git
$ sudo apt-get install dkms
The installation is a 2 step process:

1. Download a copy of the driver from GitHub
2. Install it under /usr/src which is managed by dkms. Then it should automatically be compiled into the kernel whenever it is updated.

You download the source using "git clone" and follow the given instructions when standing in the downloaded directory

$ git clone https://github.com/diederikdehaas/rtl8812AU.git

Dynamic Kernel Module Support (DKMS) is a program/framework that enables generating Linux kernel modules whose sources generally reside outside the kernel source tree. The concept is to have DKMS modules automatically rebuilt when a new kernel is installed.
Install the dkms package like this:

$ sudo -s -H
# DRV_NAME=rtl8812AU
# DRV_VERSION=4.3.14
# 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}
# exit
$

Note that in the following block of commands, the first thing I do is a sudo -s -H as I want to do all the commands as root (superuser).
Reboot the machine and check that the WI-FI adapter works.

1 comment:

Robert Bjærum said...

Has been stable for Ubuntu 16.04. Failed after upgrading to Ubuntu 17.04 with kernel 4.10.0-20-generic. Saved by rebooting with the old kernel 4.8.x.

Removed this driver

$sudo dkms remove rtl8812AU/4.3.14
$sudo rm -rf /usr/src/rtl8812AU