Adapter TL-WN722N, fotki oraz opis instalacji i konfiguracji pod linuxem

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ć? :smiley:

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

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ąć.