Realtek AlphaAWUS036H and 36NH adapters often fail on Ubuntu 20.04 due to missing or outdated kernel modules, resulting in bus errors or non-recognition. The definitive fix involves manually compiling the correct driver from source using dkms to ensure compatibility with your specific kernel version.
Diagnosing the Adapter Failure
Before attempting any software changes, you must confirm that the operating system is physically detecting the USB device but failing to load a driver. Connect the adapter to a USB port and open a terminal. Run the commandlsusb. If the Realtek adapter appears in the list, the hardware connection is valid. However, if it does not appear, check your physical connections, try a different USB port (preferably USB 2.0), or test the device on another machine to rule out hardware failure.
If the device is listed by lsusb, the next step is to verify driver status. Run dmesg | grep -i rtl8812au or dmesg | grep -i usb immediately after plugging in the adapter. You will likely see messages indicating that the module failed to load, or that there is a conflict with an existing, incorrect driver. Ubuntu 20.04 includes older versions of drivers in its repositories that may not support the newer chipsets found in the NH variant, leading to these initialization failures.
Preparing the Build Environment
Compiling drivers from source requires specific build tools and header files for your current kernel. Without these, the compilation process will fail silently or with obscure errors. Open your terminal and execute the following commands to install the necessary dependencies:sudo apt update
sudo apt install build-essential dkms git linux-headers-$(uname -r)
The dkms package is critical here. It stands for Dynamic Kernel Module Support. It allows the driver to be automatically recompiled when you update your Linux kernel, preventing breakage during system upgrades. The linux-headers package ensures that the source code matches the exact kernel version running on your system. Verify that the installation completed successfully before proceeding.
Obtaining and Compiling the Correct Driver
The most reliable driver for these adapters is thertl8812au project hosted on GitHub. There are several forks, but the one maintained by morrownr is widely regarded as stable and well-maintained for Ubuntu systems. Clone the repository into your home directory using Git:
git clone https://github.com/morrownr/8812au.git
cd 8812au
Once inside the directory, inspect the contents. You should see a Makefile and a dkms.conf file. The dkms.conf file contains the configuration parameters that tell the DKMS system how to build the module. To install the driver, run the following command:
sudo ./install.sh
This script automates the registration of the module with DKMS and initiates the build process. If successful, you will see output confirming that the module has been built and installed. The script also handles the removal of any conflicting default drivers that might have been loaded previously.
Verifying Installation and Troubleshooting
After the installation completes, reboot your computer to ensure the new module loads cleanly at startup. Upon reboot, plug in the adapter again. Check the network settings in the GUI to see if a new wireless interface appears. Alternatively, use the commandiwconfig or ip link show to verify that the interface is recognized.
If the adapter still fails to connect, check the DKMS status by running dkms status. This command lists all registered kernel modules and their build status. Look for 8812au in the list. If it shows "installed," the module is active. If it shows "failed," review the logs located in /var/lib/dkms/8812au/ for specific error messages. Common issues include mismatched kernel headers or insufficient permissions. In rare cases, you may need to blacklist the old driver by adding it to /etc/modprobe.d/blacklist.conf and running sudo update-initramfs -u.
For users managing multiple machines or dealing with similar network instability, such as issues with virtual machines or server security configurations, understanding driver management is key. For broader context on maintaining driver updates across different Linux distributions, refer to How to Maintain Compiled Linux Driver Updates for Your Realtek 5Gb Network Adapter on Debian or NixOS. Additionally, if you encounter connectivity issues specifically within virtualized environments, checking your VM network settings is advisable, as detailed in Ubuntu 22.04 VM on KVM/virt-manager Not Connecting to Internet.
Frequently Asked Questions
Why does my adapter work on Windows but not Ubuntu?
Windows often includes generic drivers or proprietary binaries that handle Realtek chips differently than the open-source Linux stack. Linux relies on kernel modules that must match your specific kernel version exactly, whereas Windows drivers are more abstracted from the underlying hardware versioning.Can I use the driver from the Ubuntu repositories instead of compiling?
While Ubuntu packages exist, they are often outdated and may not support the latest revisions of the AWUS036NH chipset. Compiling from source ensures you have the most recent fixes and optimizations tailored to your specific hardware model.What should I do if the DKMS build fails?
Check the log files in/var/lib/dkms/8812au/build/ for the last few lines of output. Most failures are due to missing linux-headers or conflicts with other installed drivers. Ensure your system is fully updated with sudo apt upgrade before retrying.
Will this driver break after a kernel update?
No, because you installed it via DKMS, the system will automatically detect the new kernel and rebuild the module for you. You do not need to manually reinstall the driver after standard Ubuntu updates, saving significant time and effort.How do I remove this driver if I want to revert?
Navigate to the original cloned directory and runsudo ./remove.sh. This script unregisters the module from DKMS and removes the compiled files. You can then purge any residual configuration files if necessary.