> Network (216)
> Network > Ethernet (45)
> Network > PowerLAN / dLAN (1)
> Network > UMTS / GSM / HSDPA (17)
> Network > Wireless (151)
Review of Linux Compatibility
The TP-Link TL-WN822N is a WiFi adapter, which is connected to the USB port and is equipped with two external antennas. The adapter exists in three versions. Version 1 uses the Atheros AR9170 chip set while version 2 uses the Atheros AR7010 chip set. Both versions are supported by Linux, since Ubuntu 12.04 completely automatically. The third version only has a limited Linux compatibility.
Version 1 – AR9170
This version has the USB ID 0cf3:1002:
Bus 002 Device 002: ID 0cf3:1002 Atheros Communications, Inc. TP-Link TL-WN821N v2 802.11n [Atheros AR9170]
and is controlled by the kernel module ar9170. A firmware file is needed for this device. This file can be downloaded at http://linuxwireless.org/en/users/Drivers/ar9170#firmware.
Version 2 – AR7010
The second version has the USB ID 0cf3:7015
Bus 001 Device 004: ID 0cf3:7015 Atheros Communications, Inc. TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287]
and is accessed with the help of the ath9k_htc kernel module.
Also this chip set needs a firmware file. This file (if not already part of the used Linux distribution) can be downloaded at: http://linuxwireless.org/en/users/Drivers/ath9k_htc#Firmware.
Version 3 – Realtek 8192CU
A new version of the adapter has been released which uses a different chipset, i.e. the Realtek 8192CU. This adapter has the USB-ID 0bda:8178:
Bus 002 Device 003: ID 0bda:8178 Realtek Semiconductor Corp.
and hence might use internally the same hardware as the TL-WN823N and unfortunately shows the same incompatibility. The initialization of this version fails:
usb 2-5: new high-speed USB device number 3 using ehci_hcd usb 2-5: New USB device found, idVendor=0bda, idProduct=8178 usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 2-5: Product: USB WLAN usb 2-5: Manufacturer: 802.11n usb 2-5: SerialNumber: 000000000000 rtl8192cu: Chip version 0x11 rtl8192cu: MAC address: 11:22:33:44:55:66 rtl8192cu: Board Type 0 rtlwifi: rx_max_size 15360, rx_urb_num 8, in_ep 1 cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: cfg80211: 2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A mBi, 2000 mBm) cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: cfg80211: 2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A mBi, 2000 mBm) cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: .. .. .. cfg80211: Disabling freq 2484 MHz as custom regd has no rule that fits a 20 MHz wide channel rtl8192cu: Loading firmware rtlwifi/rtl8192cufw.bin cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain ieee80211 phy1: Selected rate control algorithm 'rtl_rc' rtlwifi: wireless switch is on rtl8192cu: MAC auto ON okay! rtl8192cu: Tx queue select: 0x05 IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Instead, the driver rtl8192cu from Realtek has to be used. This driver can be downloaded from www.realtek.com by searching for “rtl8192cu” on their homepage and downloading the file RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.ZIP. The driver can be installed following the instruction distributed in the downloaded file (tested with Linux kernel version 3.8.0).
In order to have a working driver after each update of the Linux kernel the Dynamic Kernel Module Support (DKMS) can be used. The source code of the Realtek driver should be placed in
A symlink shall be created (as root, or via “sudo”)
cd /usr/src/ ln -s RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911 8192cu-4.0.2_9000.20130911
The following dkms file 8192cu-4.0.2_9000.20130911/dkms.conf needs to be available:
PACKAGE_NAME=8291cu PACKAGE_VERSION=4.0.2_9000.20130911 DEST_MODULE_LOCATION=/extra DEST_MODULE_NAME=rtl8192cu BUILT_MODULE_NAME=8192cu BUILT_MODULE_LOCATION=driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/ MAKE=" 'make' -C driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/" CLEAN=" 'make' -C driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/ clean" AUTOINSTALL="yes"
This way after an update of the Linux kernels a new and compatible version of the 8192cu driver will be created and installed.