TP-Link TL-WN823N on Arch Linux

Unfortuntately, Arch doesn’t support the TP-Link TL-WN823N by default, so you have to install the drivers by hand.

Fortunately, you can find the drivers on Github. You’ll need build-essential, linux-headers-generic and dkms installed.

Installing after upgrade

If you’re run pacman -Syu and your wifi has stopped working, run the following commands:

git clone
cd rtl8192eu-linux-driver
sudo dkms add .
sudo dkms install rtl8192eu/1.0

This will copy the driver into a system directory and register it with DKMS (Dynamic Kernel Module Support). This means that if you upgrade your kernel in the future, the driver will automatically be rebuilt.

Installing on a clean machine

If the machine that you need wifi on doesn’t have these packages installed, you can build the drivers on another machine and copy the built driver over via USB.

If the two machines have the same kernel installed, it’s as easy as following these instructions:

On the machine with build-essential

git clone
cd rtl8192eu-linux-driver
cd ..
cp -r rtl8192eu-linux-driver /media/YOUR_USB

On the machine that needs wifi

cp -r /media/YOUR_USB/rtl8192eu-linux-driver .
cd rtl8192eu-linux-driver
sudo make install

At this point, reboot and you should have wifi. Once you have wifi, follow the DKMS instructions above to ensure that kernel upgrades don’t break your wifi.


If the two Arch machines that you have don’t have the same kernel version, you can edit the Makefile to build for a different kernel. You’ll need to get the correct headers from the Arch archive and install them with pacman -U.

Then edit the Makefile so that anywhere it runs uname -r e.g. here, you replace it with the correct string. You can obtain the string by running uname -r on the machine you want to install the driver on.

Once the Makefile is updated, run make and copy to a USB stick as normal.

Michael is a polyglot software engineer, committed to reducing complexity in systems and making them more predictable. Working with a variety of languages and tools, he shares his technical expertise to audiences all around the world at user groups and conferences. You can follow @mheap on Twitter

Thoughts on this post

This is a great guide, thank you! How can I confirm it worked successfully after a reboot?

michael 2017-04-14

You’ll be able to use `netctl` to configure and start a network connection

Guilherme Nanini 2017-04-25

it didn’t work with netctl

michael 2017-05-09

I use `netctl`, and it seems to work for me

Sudeep Mukherjee 2017-05-31

On my Arch installation the kernel modules fails to load automatically. I have blacklisted the default one the kernel was loading, rtl8xxxu.

If I modprobe manually it works! How to automatically load 8192eu at boot?

michael 2017-07-10

Create a file named /etc/modules-load.d/8192eu.conf with the contents “8192eu”

Reboot, and it should be loaded automatically

Yongky 2017-08-04

Great tips. It really solve my headeache with rtl8xxxu (using 4.9 kernel). Finally network manager working fine. Thank you @MICHAEL.

Guilherme Nanini 2017-06-21

it did work with dhcpcd and wpa_supplicant

Leave a comment?

Leave a Reply