USB WiFi Adapters - ConnectBox/connectbox-pi GitHub Wiki
This page is a work-in-progress summary of test results for various USB adapters.
Adapter Criteria
- Good support in upstream kernel (also does hostapd support imply mac80211 drivers?)
- 802.11n with 2x2 or better MIMO support
- < $15 and not EOL
Good support in upstream is almost critical so that we don't need to build - and more importantly maintain - drivers.
For 802.11n and 802.11ac, the best speeds are obtained with adapters having at least 2x2 [MIMO] (https://en.wikipedia.org/wiki/MIMO) support (this might also be notated as 2T2R). 3x3 or 4x4 is even better, but those tend to be significantly more expensive.
Mediatek
A comprehensive analysis of the drivers available in the linux kernel ~v4.12 suggests that the only good candidates among Mediatek chipsets are the RT2870, RT3072 and possibly the experimental RT3572, RT5572. Further the RT2870 is nearly 10 years old and all adapters based on the chipset appear to be EOL.
Adapter compatibility matrix:
Since there is a lot of information to summarize in the main table, the following tables are the keys for the right-hand compatibility columns:
Support Level | Description |
---|---|
0 | Not detected as a network device (e.g. no drivers) |
1 | Card is detected and functions as a WiFi client (a requires custom driver) |
2 | Master mode works (e.g. iwconfig [dev] mode master (b requires custom driver) |
3 | Full hostapd support (c requires hostapd mods) |
ex: 3abc | Card works fully, but requires custom drivers for any functionality as well as a modified hostapd |
Operating System | Kernel Version | Board Tested | Key |
---|---|---|---|
Armbian "legacy" | 3.4.113 | NanoPi Neo | A1 |
Armbian "mainline" | 4.11.0 | NanoPi Neo | A2 |
Raspbian | 4.9 | RPi 3 | R1 |
Tested adapters:
Adapter | Bands | Ant. | MIMO | Chipset | OS | ||
---|---|---|---|---|---|---|---|
Mfr. & Model | Ghz | Int/Ext | nTnR | A1 | A2 | R1 | |
ANEWKODI 600Mbps Wifi | 2.4 + 5 | E | 1T1R | RTL8821AU | 0 | 0 | 0 |
Canakit RPi WiFi | 2.4 | I | 1T1R | RT5370 | 3 | 3 | 3 |
Detroit DIY WiFi Dongle | 2.4 | E | 1T1R | RT5370 | 3 | 3 | 3 |
D-Link DWA-171 | 2.4 + 5 | I | 1T1R | RTL8811AU | 0 | 0 | 0 |
EDUP EP-MS1559 | 2.4 | E | 2T2R | RTL8192CU | 3 | 3 | 3 |
EDUP EP-DB1301 | 2.4 + 5 | I | 2T2R | RT3572 | ? | ? | ? |
Panda Wireless PAU03 | 2.4 | I | 1T1R | RT3070 | 3 | 3 | 3 |
Panda Wireless PAU06 | 2.4 | I | 2T2R | RT5372 | 3 | 3 | 3 |
Premiertek PT-8811AU | 2.4 + 5 | I | 1T1R | RTL8811AU | 0 | 0 | 0 |
Rosewill RNX-N600UB | 2.4 + 5 | I | 2T2R | RT5572 | 0 | 3 | ? |
TP-Link TL-WDN4200 | 2.4 + 5 | I | 3T3R | RT3573 | 0 | 3 | 3 |
TP-Link TL-WN725N v2 | 2.4 | I | 1T1R | RTL8188EUS | 3 | 1 | 2 |
TP-Link TL-WN821N v5 | 2.4 | I | 2T2R | RTL8192EU | 0 | 0 | 0 |
TP-Link TL-WN822N v4 | 2.4 | E | 2T2R | RTL8192EU | 0 | 1 | 0 |
MIMO notes:
MIMO configuration is not always detailed by the manufacturer, but if the card supports 802.11n, it can be probably be assumed as follows:
Advertised Speed @2.4Ghz | Probable MIMO configuration |
---|---|
150Mbit/s | 1T1R |
300Mbit/s | 2T2R |
450Mbit/s | 3T3R |
600Mbit/s | 4T4R |
Of course, marketing documents reflect ideal conditions - in practice, achievable TCP/IP data rates are about 25-30% of what is advertised. This appears to be a combination of poor driver support for wide channels and short guard intervals, as well as interference on 2.4Ghz in general.
A much more useful and detailed chart about data rates can be found on Wikipedia (see "Modulation and coding schemes" here: https://en.wikipedia.org/wiki/IEEE_802.11n-2009)
Driver notes:
WikiDevi has an excellent driver compatibility matrix that doesn't immediately show up in Google. It seems to be pretty up-to-date: https://wikidevi.com/wiki/Category:Linux_driver/802dot11
Related, a slightly out-of-date table on the same site: https://wikidevi.com/wiki/Wireless_adapters/Chipset_table
RTL8192CU chip has numerous drivers available. In particular:
- rtl8xxxu (newest, but no AP support yet)
- rtlwifi/rtl8192cu (in upstream, but poor performance)
- 8192cu (many variations of Realtek sourced drivers; usually need modified hostapd)
Raspbian maintains an out-of-stream 8192cu in their drivers that seems to work well.
On Armbian we have had success with the following configuration: https://github.com/osmc/rtl8192cu-osmc (some changes needed) https://github.com/pritambaral/hostapd-rtl871xdrv ... plus the "noscan" patch from openwrt or elsewhere.
Interface names
Until we update to using NetworkManager for wifi AP control, it's much easier to use the old wlan0
style names. To get these back: ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules && reboot