TP-Link TL-WN822N (WiFi, USB, 300Mbps)

Network 802.11n, TP-Link, USB, WiFi, Wireless

TP-Link TL-WN822N (WiFi, USB, 300Mbps)
Linux compatibility:
8 votes, average: 2.5 out of 58 votes, average: 2.5 out of 58 votes, average: 2.5 out of 58 votes, average: 2.5 out of 58 votes, average: 2.5 out of 5
  ( 2.5 with 8 ratings)

Price: $ 14.00 (on stock)
(without shipping costs)

 Buy from

Price trend
TP-Link TL-WN822N 
Minimum: $ 13.02 
Maximum: $ 39.20  
Updated: 09/11/2016 19:30

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

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:

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 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:



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"

This way after an update of the Linux kernels a new and compatible version of the 8192cu driver will be created and installed.

Similar Linux Hardware

scroll left scroll right


  • acb on said:

    Version 4:

    Technically, the website says this device is compatible for older kernels. I can’t verify this. For newer kernels, there is no compatibility. When I tried to use the ndiswrapper driver work-around, it still didn’t work.

    This website isn’t letting me give 2 stars. I keep clicking it and it isn’t updating from 2 and a half. I’d give 2 stars though. It’s annoying that the older kernels this device works for weren’t advertised on the box (or in the written instructions that the device came with). By just writing on the box that it was compatible with “Linux”, I was given the impression that they were actually working on releasing new drivers with new kernel updates. I guess that’s my fault, but it still feels like false advertising.

    • CptPike on said:

      I would like to add the version 4 to the hardware description. Could you please provide the card’s output of “lspci -nnk” and the relevant lines of dmesg?

  • wxm on said:

    OnDeAuth Reason code(15)
    OnDeAuth, STA:0c:37:dc:bd:9c:58, ignore = 0
    reporIC_RATE: BrateCfg(0x15d)
    rtl8192c_set_FwJoinBssReport_cmd mstatus(0)
    survey done event(1d) band:0 for wlan0
    wpa_set_auth_algs, AUTH_ALG_OPEN_SYSTEM
    set_mode = IW_MODE_INFRA

    0xdd 0×16 0×00 0×50 0xf2 0×01 0×01 0×00
    0×00 0×50 0xf2 0×04 0×01 0×00 0×00 0×50
    0xf2 0×04 0×01 0×00 0×00 0×50 0xf2 0×02
    hw_var_spmode()-4234 mode = 2
    SetHwReg85130, RCR= 700060ca
    ssid=CCTEST, len=6
    [by_bssid:0]EST][to_roaming:0] new candidateCCTEST(0c:37:dc:bd:9c:58, ch11) selP
    OnAction_back, action=0
    issue_action_BA, category=3, action=1, status=0

    ~~~~set sta key:groupkey
    ==> rtw_set_key algorithm(4),keyid(1),key_mask(0)
    SetHwReg8192CU, 5126, RCR= 700060ce

    • AMD_Fan on said:

      Hi wxm. I am not quite sure what this log output is telling me. Did you compile the rtl8192cu driver from the Realtek homepage? However, for me it looks like the driver is successfully accessing the device.

  • akshat_devil on said:

    can anyone please tell commands to install tp-link tl-wn822n v3.0 driver in backtrack 5r3
    i did’nt get anyway on youtube

    • AMD_Fan on said:

      Which version of the TL-WN822N do you have. Could you please provide the output of “lsusb”?
      Do you have tools like “make” and “gcc” already installed (I have to admit that I have never tried Backtrack and therefore do not know which package format it uses and which tools are installed by default).
      If you have the version 3 with Realtek 8192CU chipset, did you already try to download and install the Realtek driver?

    • akshat_devil on said:

      yes i have v3.0 adapter i did’nt got any drivers for it . but when i plug it it recognizer my card

    • AMD_Fan on said:

      What error messages do you get if you plug in the stick? Could you show us the output that appears by

      tail -f /var/log/dmesg

      if you plug in the WiFi adapter (i.e. first start the command then plug in the adapter).
      Or use the hardware scan script at
      It should automatically send all the relevant log output to the Linux-Hardware-Guide server.

  • The rtl8192 is now fully supported in linux, irrespective of distro used.
    It also as a 300Mbps device.
    The connection is 24/7 stable and consistent.
    Im also using a usb 3.0 adapter from sedna/vantec using the pcie lane.
    Latency has reduced by 6ms by connecting it to usb 3.0 Pcie adapter.

    The driver has been modded to work with newer kernels: 3.10/11, 3.12.6 and further..thanks to Janez Troha.

    Head over to my blog to install it on any linux:

    • I also have another one working solid stable in a server environment.
      The rtl8192cu is the second device after atheros which works on freeBSD/PC-Bsd tooo!!

    • Woek on said:

      I’ve been trying for two weeks to get a stable connection with the WN822N (v3.0), but it keeps ‘dropping’ the connecten without as much as a warning in /var/log/messages. The network-manager indicates a connection, but data transmission just stops at random moments. Tried compiling a patched driver from realtek (failed), and also other network managers, software encription, different ports, wpawpa2, all I could think of, but no difference.
      Now trying the USB3 port, see if that makes a difference.
      Running Debian Jessie, 3.12 kernel.

    • admin on said:

      Dear Woek,
      could you please also post the relevant output of dmesg after your successful installation of the rtl8192cu-fixes module. Thanks!

    • Woek on said:

      Sure, but there are a lot of lines and I’m not sure what it all means. Are you looking for anything in particular? Something I can filter on?

    • Woek on said:

      This is the relevant part I think…

      [ 13.132064] cfg80211: Calling CRDA to update world regulatory domain
      [ 13.132379] rtw_wx_set_scan: bDriverStopped=1, bup=0, hw_init_completed=0
      [ 13.132912] +871x_drv - drv_open, bup=0
      [ 13.135126] ===> FirmwareDownload91C() fw:Rtl819XFwImageArray_TSMC
      [ 13.135129] FirmwareDownload92C accquire FW from embedded image
      [ 13.135131] fw_ver=v88, fw_subver=2, sig=0x88c0
      [ 13.149463] fw download ok!
      [ 13.149467] Set RF Chip ID to RF_6052 and RF type to 2.
      [ 13.421705] IQK:Start!!!
      [ 13.426514] Path A IQK Success!!
      [ 13.428813] Path B IQK Success!!
      [ 13.432295] Path A IQK Success!!
      [ 13.434582] Path B IQK Success!!
      [ 13.439489] Path A IQK Success!!
      [ 13.441744] Path B IQK Success!!
      [ 13.443319] IQK: final_candidate is 1
      [ 13.443323] IQK: RegE94=ff RegE9C=3fe RegEA4=fb RegEAC=3fc RegEB4=105 RegEBC=13 RegEC4=fd RegECC=0
      [ 13.443323] Path A IQ Calibration Success !
      [ 13.444034] Path B IQ Calibration Success !
      [ 13.550602] pdmpriv->TxPowerTrackControl = 1
      [ 13.552108] rtl8192cu_hal_init in 420ms
      [ 13.559198] MAC Address = f8:1a:67:1c:1d:dd
      [ 13.559279] Unable to create /proc entry in this kernel version
      [ 13.559288] -871x_drv - drv_open, bup=1
      [ 13.559346] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
      [ 13.559377] cfg80211: World regulatory domain updated:
      [ 13.559381] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
      [ 13.559385] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
      [ 13.559389] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
      [ 13.559392] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
      [ 13.559395] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
      [ 13.559397] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
      [ 13.560329] (2)871x_drv - drv_close, bup=1, hw_init_completed=1
      [ 13.560741] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
      [ 13.562662] rtl8192c_set_FwJoinBssReport_cmd mstatus(0)
      [ 13.562736] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
      [ 13.563017] -871x_drv - drv_close, bup=1
      [ 13.563263] set_mode = IW_MODE_INFRA
      [ 13.563484] hw_var_set_opmode()-4234 mode = 2
      [ 13.563578] +871x_drv - drv_open, bup=1
      [ 13.563587] -871x_drv - drv_open, bup=1
      [ 13.563625] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
      [ 13.574209] r8169 0000:03:00.0: firmware: direct-loading firmware rtl_nic/rtl8168e-3.fw
      [ 13.699379] r8169 0000:03:00.0 eth0: link down
      [ 13.699469] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
      [ 13.699757] (2)871x_drv - drv_close, bup=1, hw_init_completed=1
      [ 13.700205] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
      [ 13.702139] rtl8192c_set_FwJoinBssReport_cmd mstatus(0)
      [ 13.702211] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
      [ 13.702414] -871x_drv - drv_close, bup=1
      [ 13.702594] +871x_drv - drv_open, bup=1
      [ 13.702602] -871x_drv - drv_open, bup=1
      [ 13.702635] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
      [ 13.702837] (2)871x_drv - drv_close, bup=1, hw_init_completed=1
      [ 13.703247] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
      [ 13.705176] rtl8192c_set_FwJoinBssReport_cmd mstatus(0)
      [ 13.705255] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
      [ 13.705572] -871x_drv - drv_close, bup=1
      [ 13.705772] +871x_drv - drv_open, bup=1
      [ 13.705780] -871x_drv - drv_open, bup=1
      [ 13.705820] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
      [ 13.705945] [rtw_wx_set_pmkid] IW_PMKSA_FLUSH!
      [ 13.705956] set_mode = IW_MODE_INFRA
      [ 13.706059] =>rtw_wx_set_essid
      [ 13.706064] ssid=g\xffffffc6isQ\xffffffffJ\xffffffec)\xffffffcd\xffffffba\xffffffba\xffffffab\xfffffff2\xfffffffb\xffffffe3F|\xffffffc2T\xfffffff8\x1b\xffffffe8\xffffffe7\xffffff8dvZ.c3\xffffff9f\xffffffc9\xffffff9a\xffffff9a\x01, len=32
      [ 13.706069] Set SSID under fw_state=0x00000008
      [ 13.706077] rtw_wx_set_essid
      [ 16.371877] ssid=hal900x, len=7
      [ 16.371886] Set SSID under fw_state=0x00000008
      [ 16.371895] [by_bssid:0][assoc_ssid:hal900x][to_roaming:0] new candidate: hal900x(b0:48:7a:e7:e7:80, ch4) rssi:-69
      [ 16.371902] rtw_select_and_join_from_scanned_queue: candidate: hal900x(b0:48:7a:e7:e7:80, ch:4)
      [ 16.371914] link to Artheros AP
      [ 16.371919] mlmeext_joinbss_event_callback
      [ 16.443181]
      [ 16.443181] ~~~~stastakey:unicastkey
      [ 16.443271] ~~~~set sta key:groupkey
      [ 16.443275] ==> rtw_set_key algorithm(4),keyid(1),key_mask(0)
      [ 16.445455] SetHwReg8192CU, 5126, RCR= 700060ce
      [ 21.684671] OnAction_back
      [ 21.684680] OnAction_back, action=0
      [ 21.684683] issue_action_BA, category=3, action=1, status=0
      [ 22.520641] systemd-logind[3166]: New session 2 of user wouter.
      [ 22.520744] systemd-logind[3166]: Linked /tmp/.X11-unix/X0 to /run/user/1000/X11-display.
      [ 27.764276] rtw_issue_addbareq_cmd, p=0
      [ 27.764349] issue_action_BA, category=3, action=0, status=0
      [ 27.764359] BA_starting_seqctrl = 392 for TID=0
      [ 28.891531] rtw_issue_addbareq_cmd, p=6
      [ 28.891567] issue_action_BA, category=3, action=0, status=6
      [ 28.891578] BA_starting_seqctrl = 10 for TID=6
      [ 28.898603] OnAction_back
      [ 28.898622] OnAction_back, action=1
      [ 28.898625] agg_enable for TID=6
      [ 34.004904] usblp 5-1:1.0: usblp0: USB Bidirectional printer dev 2 if 0 alt 1 proto 2 vid 0x03F0 pid 0x1204
      [ 34.004958] usbcore: registered new interface driver usblp
      [ 37.349526] Drop duplicate management frame with seq_num = 3237.
      [ 37.456949] Drop duplicate management frame with seq_num = 3239.
      [ 38.555335] survey done event(33) band:0 for wlan0

  • Hi,
    Just a note. Anything with the 8192CU chipset is poorly supported in linux and should be rated as so (very low). Its unlikely to work out of the box > kernel 3.8. Anything less than that and your best to try the realtek linux driver. Which is buggy and can crash kernel 3.8.

  • 1stCowGirl on said:

    what a bout the V3?

    there are 3 versions and here only 2/

  • John Farrar on said:

    Now using RTL8192CU in a version that is not Linux compatible.

  • Comments

    Please use the comment section to submit corrections to the article as well as relevant excerpts of lspci, lsusb, lshw, dmesg e.t.c. Furthermore, use the section for the exchange of experiences with this hardware component or search for configuration help from other owners of this hardware.
    Email address will not be published.
    Submitting comment...