I wrote an entry about this adapter and Ubuntu 18.04.
This week my 20.04 LTS installation started to freeze randomly. I suspected several things, but through a process of elimination it ended up pointing to the Wi-Fi adapter.
I can’t rule out a hardware issue yet, but the new driver has been very stable and no freezes have happened so far. This started happening after the last Ubuntu upgrade I ran, and to be fair, the Wi-Fi adapter’s DKMS driver I was using was quite dated.
First check the hardware
Unplug and re-plug the adapter, remember that it will only work on USB 3.0 ports, and it won’t be recognised by USB 3.1 ports. Check the output of:
The following commands will also help in showing if the adapter is correctly detected.
$ lsusb Bus 004 Device 002: ID 4791:205a G-Technology ArmorATD Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 002: ID 2357:0103 TP-Link Archer T4UH wireless Realtek 8812AU Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
The Bus 003 Device 002: ID 2357:0103 entry above is the one with the USB Wi-Fi adapter on my system. You can remove the adapter and issue the command again and compare results to help you identify yours.
For non-USB adapters you can use:
More detailed information about the device can be obtained with the lshw command.
$ lshw -C network WARNING: you should run this program as super-user. *-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. [output truncated] *-network:2 description: Wireless interface physical id: 4 bus info: usb@3:1 logical name: enx18d6c70fbacc serial: 18:d6:c7:a1:22:ab capabilities: ethernet physical wireless configuration: broadcast=yes driver=rtl8812au ip=192.168.x.2 multicast=yes wireless=IEEE 802.11AC WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
This last command is really useful because it will give really important information about what driver to use.
In this case the chipset and driver to use is identified in this string driver=rtl8812au. We already knew this in any case. If yours is a different driver/adapter this solution is unlikely to work for you.
Checking the drivers
Now check that the driver is loaded, you need to look for a string that is similar to the driver string above.
$ lsmod | grep 8812 8812au 999424 0
If the module isn’t loaded you can manually load it:
# modprobe 8812au
Installing updated drivers
If all of the above seems to work but the Wi-Fi adapter isn’t detected you can install the drivers manually.
The version of the drivers is newer than the ones provided via apt.
Uninstall the system provided drivers
From the GUI:
- Go to Software & Updates
- Select Additional Drivers
- Find the entry for the Wi-Fi adapter (rtl8812-au) and select Do not use the device
Or from the CLI:
[find the installed driver] # apt list rtl8812au* [and uninstall it] # apt purge rtl8812au-dkms
Install alternative driver
Get the updated drivers from github:
$ git clone https://github.com/gordboy/rtl8812au-22.214.171.124
Move the source code to /usr/src so that DKMS can automatically build the driver when the kernel is updated.
# mv rtl8812au-126.96.36.199/ /usr/src/
Build and install the drivers:
# dkms add -m rtl8812au -v 188.8.131.52 # dkms build -m rtl8812au -v 184.108.40.206 # dkms install -m rtl8812au -v 220.127.116.11
Check that the driver is installed correctly:
# dkms status
[Make sure that in /etc/NetworkManager/NetworkManager.conf] # vim /etc/NetworkManager/NetworkManager.conf [The following entry is inserted] [device] wifi.scan-rand-mac-address=no
If the driver is recognised you can configure the wireless network as normal. Restart to make sure everything works and remains persistent.
If you ever need to uninstall the driver you can do it with:
# dkms remove -m rtl8812au -v 18.104.22.168 --all
If you edited /etc/modules you will need to revert the changes. In the previous tutorial for Ubuntu 18.04 the module had to be added manually. It isn’t the case for this version.