Please note that, as of June 11th 2017, there is a fairly serious bug in Ubuntu 17.04 that seems to prevent some WiFi adapters from working properly. To use WiFi reliably in Ubuntu 17.04 please follow the recommended troubleshooting steps, or scroll down to the bottom of this article for the same instructions.

NIC
Driver
Ubuntu 16.04.1
Ubuntu 16.04.2
Ubuntu 17.04
rt5372
Yes
?
?
rt2800usb
Yes
Yes
Yes
rtl8811au
No
?
?
mt7610u
No
?
?
rtl8192cu
Yes
Yes
Yes

My goal was to find a USB WiFI adapter for Ubuntu Linux that would work right out of the box. I assumed this would be a trivial task, but it seems that few WiFI USB dongles play well with Linux.

I am sure that with enough time and research, you could probably get all of the cards below working in Linux (albeit with varying levels of reliability) via the right kernel module or properietary drivers.

However, my goal was to find a device that can connect immediately with no additional configuration.

Please note that I set a very low bar for the sake of this comparison. I was looking for any card that worked out of the box, and I did not examine speed or performance.

When I say “worked”, I mean that the card connected to my 2.4Ghz Wireless N network (running DD-WRT) and a few minutes of casual browsing or an apt-get full-upgrade seemed to work without issue.

Research

My quest for Ubuntu Linux compatible WiFi nics began with an Amazon search for “WiFi USB”. I was looking for cards that worked out of the box in Ubuntu Xenial 16.04.1.

Most cards had mixed reviews when it came to Ubuntu. Some reviews might say the dongle worked in Ubuntu out of the box, while others said the same product did not work.

I figured the easiest thing to do would be to buy a bunch of cards that seemed to have at least a couple reviews reporting that they worked in Ubuntu, and cross my fingers.

In some cases I would at least try to install linux drivers if they were provided on a CD, but I learned quickly that most of these drivers and their installation scripts are geared towards machines with 2.6 kernels, which seems silly for a consumer WiFi card in 2017. So I generally gave up on trying to install custom drivers.

Drivers were determined using lshw.

ANEWKODI 600Mbps Dual Band

Amazon

There was a CD included with the drivers, and it did contain instructions and software for linux, but they did not work for me.

As an aside, the Windows user manual on the CD was geared towards XP, which seems really odd for a modern WiFi NIC.

There were a number of documents on the CD for linux. Some were txt files, some were pdfs. I found a Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf, which seemed promising.

In this document, we introduce two ways to compile and install our Wi-Fi driver: 1) Using install.sh script for PC-Linux and 2) Step by step manually. The former targets for end users who are not familiar with Linux system, while the later for engineers who want to port our Wi-Fi driver onto different platforms.

For driver compilation and installation in PC-Linux, we provide an install.sh script to do the duties automatically. If you want to use our Wi-Fi solutions to access network on PC-Linux, you can just run install.sh script and then control Wi-Fi with utilities such as Network Manager.

I copied their linux dir to my Desktop, and ran the script as root. It choked on a compilation error. At this point I gave up on it. Too much effort with little promise of working.

TP-Link Archer T1U Wireless Nano USB Adapter (AC450)

Amazon

There was a CD included, but no drivers. The Drivers for Linux.txt file on the CD simply said:

For Linux users, please visit the TP-LINK support website, find and download the compatible version of driver for your network adapter at www.tp-link.com.

I found the linux drivers and extracted them locally.

This linux install process at least had better documentation, but the install scripts were still geared towards an older machine, and the documentation was wrong. It said you can edit makefile.c to set compiation variables, but that file was not provided with the download.

Again, I ran into a compilation error, and so I gave up. This was too much effort with little promise of working.

EDUP Wifi Adapter 300Mbps Wireless N Adapter

Amazon

PAU06 300Mbps - Panda Wireless PAU06 300Mbps N USB Adapter

Amazon

PAU05 300Mbps - Panda 300Mbps Wireless N USB Adapter

Amazon

Edimax EW-7811UTC AC600 Dual-Band USB Adapter

Amazon

The goal of this article is to find cards that work out of the box. This card did not meet that requirement for the operating systems I tested, but I think it’s worth noting that this rtl8812au driver seems to work well to get this card functioning properly.

Official Raspberry Pi WiFi dongle

Amazon

I love the Raspberry Pi group, and so I hate bad-mouthing anything related to them. Unfortunately, this card did not seem to perform well for the sake of my tests.

I used the same test environment as with all my other WiFi NIC evaluations. I also tested this card several more times than usual to verify my results. Most cards I’ve seen so far either work or don’t. This one was odd. It sort of worked. It had difficulty associating on occasion in Ubuntu 16.04.2, and occasionally dropped the connection. In Ubuntu 17.04 it barely ever connected. It seemed entirely random when I could or could not get it to connect. In Ubuntu 16.04.1 it seemed to work without issue. Those variations seem highly unusual to me, and I apologize for not testing these issues in more depth.

I wish I could explain these results. Maybe my card is simply malfunctioning, or it is slightly weaker than the others so a decreased signal explains the reliability issues.

Keep in mind that I am testing this NIC against Ubuntu on an amd64 machine. However, this device was built specifically for the Raspberry Pi. So do not take my test results to mean that this card is unreliable as it pertains to the Raspberry Pi devices. Only that it seems unreliable for the parameters of my tests.


Ubuntu 17.04 WiFi Fix

source

Add the following to the bottom of /etc/NetworkManager/NetworkManager.conf.

[device]
wifi.scan-rand-mac-address=no

Restart the network manager.

sudo service network-manager restart