Jak możemy przeczytać w ofercie na stronie producenta, karta TL-WN722N działa w standardzie N (pasmo 2,4GHz) i możliwe jest za jej pomocą osiągnięcie prędkości transmisji do 150 mbitów/s. Sam adapter jest wyposażony w port USB 2.0 i posiada również przycisk WPS do uzyskiwania automatycznej konfiguracji połączenia bezprzewodowego. Pod linuxem jednak, z jakichś nieznanych mi powodów, te przyciski WPS nie chcą zbytnio działać. Karta ma także doczepianą antenkę 4dBi. W zestawie jest także dołączony kabelek USB.
Tak się prezentuje karta po wyciągnięciu z pudełka:
Zobaczmy co ten adapter skrywa w sobie:
Poniżej jest wewnętrzna strona tego białego plastiku:
A niżej już wyciągnięty cały układ z obudowy:
I jego spód jeszcze:
Gniazdo na antenkę z jednej strony:
Oraz przycisk WPS z drugiej:
Podłączmy zatem ten układ do PC by sprawdzić czy działa, może wcześniej trzeba było o tym pomyśleć?
Włączamy:
Karta ma jak widać zieloną diodę, która sygnalizuje stan pracy urządzenia.
Co ciekawe ta dołączona antenka jest nieco inna niż w przypadku routerów. Poniżej ich porównanie (ta większa wzięta z routera tl-wr1043nd v2):
I jeszcze końcówki:
Nie mogłem się powstrzymać:
Nawet pasują do siebie.
Instalacja i konfiguracja
Zatem kwestię wyglądu karty i tego co ma w środku mamy z głowy. Zobaczmy jak ona działa pod linuxem. Karta jest wykrywana jako:
root:~# iw list
Wiphy phy7
max # scan SSIDs: 4
max scan IEs length: 2257 bytes
Retry short limit: 7
Retry long limit: 4
Coverage class: 0 (up to 0m)
Device supports RSN-IBSS.
Supported Ciphers:
* WEP40 (00-0f-ac:1)
* WEP104 (00-0f-ac:5)
* TKIP (00-0f-ac:2)
* CCMP (00-0f-ac:4)
* CMAC (00-0f-ac:6)
Available Antennas: TX 0x1 RX 0x1
Configured Antennas: TX 0x1 RX 0x1
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO
Band 1:
Capabilities: 0x116e
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-7
Bitrates (non-HT):
* 1.0 Mbps
* 2.0 Mbps (short preamble supported)
* 5.5 Mbps (short preamble supported)
* 11.0 Mbps (short preamble supported)
* 6.0 Mbps
* 9.0 Mbps
* 12.0 Mbps
* 18.0 Mbps
* 24.0 Mbps
* 36.0 Mbps
* 48.0 Mbps
* 54.0 Mbps
Frequencies:
* 2412 MHz [1] (20.0 dBm)
* 2417 MHz [2] (20.0 dBm)
* 2422 MHz [3] (20.0 dBm)
* 2427 MHz [4] (20.0 dBm)
* 2432 MHz [5] (20.0 dBm)
* 2437 MHz [6] (20.0 dBm)
* 2442 MHz [7] (20.0 dBm)
* 2447 MHz [8] (20.0 dBm)
* 2452 MHz [9] (20.0 dBm)
* 2457 MHz [10] (20.0 dBm)
* 2462 MHz [11] (20.0 dBm)
* 2467 MHz [12] (20.0 dBm)
* 2472 MHz [13] (20.0 dBm)
* 2484 MHz [14] (disabled)
Supported commands:
* new_interface
* set_interface
* new_key
* start_ap
* new_station
* new_mpath
* set_mesh_config
* set_bss
* authenticate
* associate
* deauthenticate
* disassociate
* join_ibss
* join_mesh
* remain_on_channel
* set_tx_bitrate_mask
* frame
* frame_wait_cancel
* set_wiphy_netns
* set_channel
* set_wds_peer
* probe_client
* set_noack_map
* register_beacons
* start_p2p_device
* set_mcast_rate
* Unknown command (104)
* connect
* disconnect
Supported TX frame types:
* IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* mesh point: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
Supported RX frame types:
* IBSS: 0x40 0xb0 0xc0 0xd0
* managed: 0x40 0xd0
* AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* mesh point: 0xb0 0xc0 0xd0
* P2P-client: 0x40 0xd0
* P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* P2P-device: 0x40 0xd0
software interface modes (can always be added):
* AP/VLAN
* monitor
valid interface combinations:
* #{ managed, P2P-client } <= 2, #{ AP, mesh point, P2P-GO } <= 2,
total <= 2, #channels <= 1
HT Capability overrides:
* MCS: ff ff ff ff ff ff ff ff ff ff
* maximum A-MSDU length
* supported channel width
* short GI for 40 MHz
* max A-MPDU length exponent
* min MPDU start spacing
Device supports TX status socket option.
Device supports HT-IBSS.
Device supports SAE with AUTHENTICATE command
Device supports low priority scan.
Device supports scan flush.
Device supports AP scan.
Device supports per-vif TX power setting
Driver supports a userspace MPM
Z logu wynika, że ten adapter WiFi można także przerobić na punkt dostępowy (AP).
Niemniej jednak, nie możemy tak od razu z tej karty skorzystać. Poniżej log jaki wyrzuca system po podłączeniu karty do portu USB:
Nov 12 21:19:33 morfikownia kernel: [18738.288728] usb 2-1.1: new high-speed USB device number 13 using ehci-pci
Nov 12 21:19:33 morfikownia kernel: [18738.397468] usb 2-1.1: New USB device found, idVendor=0cf3, idProduct=9271
Nov 12 21:19:33 morfikownia kernel: [18738.397479] usb 2-1.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
Nov 12 21:19:33 morfikownia kernel: [18738.397485] usb 2-1.1: Product: USB2.0 WLAN
Nov 12 21:19:33 morfikownia kernel: [18738.397489] usb 2-1.1: Manufacturer: ATHEROS
Nov 12 21:19:33 morfikownia kernel: [18738.397493] usb 2-1.1: SerialNumber: 12345
Nov 12 21:19:33 morfikownia kernel: [18738.398035] usb 2-1.1: ath9k_htc: Firmware htc_9271.fw requested
Nov 12 21:19:33 morfikownia kernel: [18738.398319] usb 2-1.1: firmware: failed to load htc_9271.fw (-2)
Nov 12 21:19:33 morfikownia kernel: [18738.398324] usb 2-1.1: Direct firmware load failed with error -2
Nov 12 21:19:33 morfikownia kernel: [18738.398328] usb 2-1.1: Falling back to user helper
Nov 12 21:19:33 morfikownia kernel: [18738.428503] usb 2-1.1: ath9k_htc: USB layer deinitialized
Jak można wyczytać wyżej, musimy doinstalować paczkę z firmware atherosa:
# aptitude install firmware-atheros
Po ukończeniu instalacji podłączamy ponownie adapter do portu USB:
Nov 12 21:21:24 morfikownia kernel: [18849.396716] usb 2-1.1: new high-speed USB device number 14 using ehci-pci
Nov 12 21:21:24 morfikownia kernel: [18849.505792] usb 2-1.1: New USB device found, idVendor=0cf3, idProduct=9271
Nov 12 21:21:24 morfikownia kernel: [18849.505802] usb 2-1.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
Nov 12 21:21:24 morfikownia kernel: [18849.505807] usb 2-1.1: Product: USB2.0 WLAN
Nov 12 21:21:24 morfikownia kernel: [18849.505811] usb 2-1.1: Manufacturer: ATHEROS
Nov 12 21:21:24 morfikownia kernel: [18849.505815] usb 2-1.1: SerialNumber: 12345
Nov 12 21:21:24 morfikownia kernel: [18849.506413] usb 2-1.1: ath9k_htc: Firmware htc_9271.fw requested
Nov 12 21:21:24 morfikownia kernel: [18849.506760] usb 2-1.1: firmware: direct-loading firmware htc_9271.fw
Nov 12 21:21:25 morfikownia kernel: [18849.794597] usb 2-1.1: ath9k_htc: Transferred FW: htc_9271.fw, size: 51272
Nov 12 21:21:25 morfikownia kernel: [18850.031965] ath9k_htc 2-1.1:1.0: ath9k_htc: HTC initialized with 33 credits
Nov 12 21:21:25 morfikownia kernel: [18850.296612] ath9k_htc 2-1.1:1.0: ath9k_htc: FW Version: 1.3
Nov 12 21:21:25 morfikownia kernel: [18850.296620] ath: EEPROM regdomain: 0x809c
Nov 12 21:21:25 morfikownia kernel: [18850.296624] ath: EEPROM indicates we should expect a country code
Nov 12 21:21:25 morfikownia kernel: [18850.296627] ath: doing EEPROM country->regdmn map search
Nov 12 21:21:25 morfikownia kernel: [18850.296630] ath: country maps to regdmn code: 0x52
Nov 12 21:21:25 morfikownia kernel: [18850.296633] ath: Country alpha2 being used: CN
Nov 12 21:21:25 morfikownia kernel: [18850.296635] ath: Regpair used: 0x52
Nov 12 21:21:25 morfikownia kernel: [18850.301372] ieee80211 phy6: Atheros AR9271 Rev:1
Nov 12 21:21:25 morfikownia kernel: [18850.301395] cfg80211: Calling CRDA for country: CN
Nov 12 21:21:25 morfikownia kernel: [18850.313628] cfg80211: Calling CRDA for country: CN
Nov 12 21:21:25 morfikownia kernel: [18850.319103] cfg80211: Current regulatory domain intersected:
Nov 12 21:21:25 morfikownia kernel: [18850.319110] cfg80211: DFS Master region: unset
Nov 12 21:21:25 morfikownia kernel: [18850.319111] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
Nov 12 21:21:25 morfikownia kernel: [18850.319114] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
Nov 12 21:21:25 morfikownia kernel: [18850.319116] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
Nov 12 21:21:25 morfikownia kernel: [18850.319119] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm), (0 s)
Nov 12 21:21:25 morfikownia kernel: [18850.319120] cfg80211: (57240000 KHz - 59400000 KHz @ 2160000 KHz), (N/A, 2800 mBm), (N/A)
Nov 12 21:21:25 morfikownia kernel: [18850.319122] cfg80211: (59400000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)
Nov 12 21:21:25 morfikownia kernel: [18850.319124] cfg80211: (63720000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 2800 mBm), (N/A)
Jak widzimy wyżej, karta została poprawnie rozpoznana.
Musimy jeszcze odpowiednio skonfigurować nowy interfejs sieciowy, w tym przypadku jest to wlan1. W moim linuxie interfejsy sieciowe konfiguruje się przez plik /etc/network/interfaces i muszę tam dodać poniższą zwrotkę:
#auto wlan1
#allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-driver nl80211
wpa-debug-level -1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Oczywiście w pliku /etc/wpa_supplicant/wpa_supplicant.conf musi się znajdować odpowiednia konfiguracja sieci WiFi, w przeciwnym wypadku, nie uzyskamy połączenia z siecią. Przykładowy blok dla wpasupplicanta może wyglądać np. tak:
network={
id_str="home_wifi_static"
priority=50
ssid="Winter_Is_Coming"
bssid=e8:94:f6:68:79:f0
psk="morfik-ma-kota"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
auth_alg=OPEN
scan_ssid=0
disabled=0
}
Oczywiście w zależności od konfiguracji sieci, powyższa zwrotka może się diametralnie różnić.
Jeśli już skonfigurowaliśmy parametry połączenia, podnosimy interfejs:
# ifup wlan1
Po chwili karta powinna się połączyć z siecią i pobrać adres IP via DHCP:
Nov 12 21:21:32 morfikownia kernel: [18857.003279] IPv6: ADDRCONF(NETDEV_UP): wlan1: link is not ready
Nov 12 21:21:32 morfikownia dhclient: Internet Systems Consortium DHCP Client 4.3.1
Nov 12 21:21:32 morfikownia dhclient: Copyright 2004-2014 Internet Systems Consortium.
Nov 12 21:21:32 morfikownia dhclient: All rights reserved.
Nov 12 21:21:32 morfikownia dhclient: For info, please visit https://www.isc.org/software/dhcp/
Nov 12 21:21:32 morfikownia dhclient:
Nov 12 21:21:32 morfikownia dhclient: Listening on LPF/wlan1/e8:94:f6:1e:15:e9
Nov 12 21:21:32 morfikownia dhclient: Sending on LPF/wlan1/e8:94:f6:1e:15:e9
Nov 12 21:21:32 morfikownia dhclient: Sending on Socket/fallback
Nov 12 21:21:32 morfikownia dhclient: DHCPDISCOVER on wlan1 to 255.255.255.255 port 67 interval 4
Nov 12 21:21:33 morfikownia kernel: [18858.509151] wlan1: authenticate with c4:6e:1f:95:ef:fd
Nov 12 21:21:34 morfikownia kernel: [18858.907879] wlan1: send auth to c4:6e:1f:95:ef:fd (try 1/3)
Nov 12 21:21:34 morfikownia kernel: [18858.909987] wlan1: authenticated
Nov 12 21:21:34 morfikownia kernel: [18858.915629] wlan1: associate with c4:6e:1f:95:ef:fd (try 1/3)
Nov 12 21:21:34 morfikownia kernel: [18858.919444] wlan1: RX AssocResp from c4:6e:1f:95:ef:fd (capab=0x431 status=0 aid=1)
Nov 12 21:21:34 morfikownia kernel: [18858.928078] wlan1: associated
Nov 12 21:21:34 morfikownia kernel: [18858.928917] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready
Nov 12 21:21:34 morfikownia kernel: [18858.928979] cfg80211: Calling CRDA for country: PL
Nov 12 21:21:34 morfikownia kernel: [18858.962317] cfg80211: Regulatory domain changed to country: PL
Nov 12 21:21:34 morfikownia kernel: [18858.962322] cfg80211: DFS Master region: ETSI
Nov 12 21:21:34 morfikownia kernel: [18858.962324] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
Nov 12 21:21:34 morfikownia kernel: [18858.962326] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
Nov 12 21:21:34 morfikownia kernel: [18858.962329] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
Nov 12 21:21:34 morfikownia kernel: [18858.962331] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm), (0 s)
Nov 12 21:21:34 morfikownia kernel: [18858.962333] cfg80211: (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2700 mBm), (0 s)
Nov 12 21:21:34 morfikownia kernel: [18858.962334] cfg80211: (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)
Nov 12 21:21:36 morfikownia dhclient: DHCPDISCOVER on wlan1 to 255.255.255.255 port 67 interval 10
Nov 12 21:21:36 morfikownia dhclient: DHCPREQUEST on wlan1 to 255.255.255.255 port 67
Nov 12 21:21:36 morfikownia dhclient: DHCPOFFER from 192.168.1.1
Nov 12 21:21:36 morfikownia dhclient: DHCPACK from 192.168.1.1
Nov 12 21:21:36 morfikownia dhclient: bound to 192.168.1.160 -- renewal in 35255 seconds.
Testy
Bitrate karty jest wykrywany jako 150 mbitów/s:
root:~# iw dev wlan1 link
Connected to c4:6e:1f:95:ef:fd (on wlan1)
SSID: Ever_Vigilant
freq: 2462
RX: 131065 bytes (1325 packets)
TX: 1848 bytes (15 packets)
signal: -41 dBm
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI
bss flags: short-preamble short-slot-time
dtim period: 0
beacon int: 100
Transfer przy podłączeniu do sieci, która operuje na kanale 11 (20MHz) wygląda następująco:
root:~# iperf -i 10 -t 120 -c 192.168.1.1
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 85.0 KByte (default)
[ 3] local 192.168.1.160 port 52887 connected with 192.168.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 53.5 MBytes 44.9 Mbits/sec
[ 3] 10.0-20.0 sec 53.5 MBytes 44.9 Mbits/sec
[ 3] 20.0-30.0 sec 55.0 MBytes 46.1 Mbits/sec
[ 3] 30.0-40.0 sec 55.5 MBytes 46.6 Mbits/sec
[ 3] 40.0-50.0 sec 55.6 MBytes 46.7 Mbits/sec
[ 3] 50.0-60.0 sec 55.9 MBytes 46.9 Mbits/sec
[ 3] 60.0-70.0 sec 54.9 MBytes 46.0 Mbits/sec
[ 3] 70.0-80.0 sec 55.0 MBytes 46.1 Mbits/sec
[ 3] 80.0-90.0 sec 55.5 MBytes 46.6 Mbits/sec
[ 3] 90.0-100.0 sec 54.2 MBytes 45.5 Mbits/sec
[ 3] 100.0-110.0 sec 55.1 MBytes 46.2 Mbits/sec
[ 3] 110.0-120.0 sec 55.6 MBytes 46.7 Mbits/sec
[ 3] 0.0-120.0 sec 660 MBytes 46.1 Mbits/sec
Poniżej jeszcze jeden test, ta sama sieć z tym, że zmieniona konfiguracja szerokości kanałów na HT40- (40MHz):
root:~# iperf -i 10 -t 120 -c 192.168.1.1
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 85.0 KByte (default)
[ 3] local 192.168.1.160 port 52944 connected with 192.168.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 90.1 MBytes 75.6 Mbits/sec
[ 3] 10.0-20.0 sec 93.1 MBytes 78.1 Mbits/sec
[ 3] 20.0-30.0 sec 93.6 MBytes 78.5 Mbits/sec
[ 3] 30.0-40.0 sec 93.6 MBytes 78.5 Mbits/sec
[ 3] 40.0-50.0 sec 93.0 MBytes 78.0 Mbits/sec
[ 3] 50.0-60.0 sec 94.8 MBytes 79.5 Mbits/sec
[ 3] 60.0-70.0 sec 93.8 MBytes 78.6 Mbits/sec
[ 3] 70.0-80.0 sec 94.0 MBytes 78.9 Mbits/sec
[ 3] 80.0-90.0 sec 85.8 MBytes 71.9 Mbits/sec
[ 3] 90.0-100.0 sec 90.1 MBytes 75.6 Mbits/sec
[ 3] 100.0-110.0 sec 93.6 MBytes 78.5 Mbits/sec
[ 3] 110.0-120.0 sec 92.1 MBytes 77.3 Mbits/sec
[ 3] 0.0-120.0 sec 1.08 GBytes 77.4 Mbits/sec
Więcej w moich warunkach się nie da raczej osiągnąć.