terça-feira, 27 de outubro de 2015

Review e benchmarks: Dongle Wi-Fi Tp-Link TL-WN722N USB no Raspberry Pi

raspberry pi tl-wn722n

Eu estava à procura de um dongle Wi-Fi que atendesse minhas necessidades. As características envolvidas deveriam ser no mínimo as seguintes:

- Suporte nativo no kernel do linux e ativo no Raspbian
- Suporte ao modo AP (access point)
- Suporte ao modo monitor
- Suporte a injeção de pacotes
- Antena externa
- Conector destacável da antena para substituição
- Baixo custo

Após pesquisas o modelo escolhido foi o TL-WN722N da Tp-Link.

Especificações básicas:

- Wi-Fi B/G/N
- USB 2.0
- Chipset Atheros AR9271
- Antena de 4 dBi
- Dimensões: 93,5 x 26 x 11 mm
- Acompanha cabo de extensão USB macho-fêmea
- Potência do transmissor (vide anatel):
         - 65mW (modo B)
         - 106mW (G)
         - 138mW (N 20Mhz)
         - 97mW (N 40Mhz)

cabo tl-wn722n

Configuração do TL-WN722N no Raspberry Pi


No Raspbian mais recente não há muito o que fazer, como o dongle já é detectado automaticamente, na interface gráfica basta ir no botão do lado direito da tela para achar sua rede e inserir a senha (caso tenha).

Se preciso poderá configurar manualmente a rede no arquivo "/etc/wpa_supplicant/wpa_supplicant.conf" :

É possível desligar o LED do dongle caso queira, para isso basta utilizar o seguinte comando:

sudo echo none > /sys/class/leds/ath9k_htc-phy0/trigger

Há outras opções de configuração para esse led que incluem:

[none] mmc0 timer oneshot heartbeat backlight gpio cpu0 cpu1 cpu2 cpu3 default-on input rfkill0 phy0rx phy0tx phy0assoc phy0radio phy0tpt

Para quem tem o modelo B+, A+ ou 2B, recomendo ativar o aumento de corrente nas portas USB, principalmente para aqueles que irão utilizar outros periféricos além do dongle Wi-Fi.

Para isso basta adicionar ao arquivo /boot/config.txt a linha;

max_usb_current=1


Desempenho do TL-WN722N


Realizei alguns testes básicos tanto de download quanto upload. Como a velocidade real pode variar em cada cenário devido a uma série de fatores como a velocidade do cartão MicroSD, realizei os testes com a ferramenta iperf3, que não envolve operações no cartão. Testes realizados no Raspberry Pi 2 Modelo B.

Os testes foram feitos entre 40 e 60cm do roteador.

A maior velocidade (150Mbps) só será atingida caso seu roteador suporte o padrão N com HT40. Para verificar se o dongle está conectado a essa velocidade utilize o comando:

$ sudo iw wlan0 link | grep bitrate
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI

Como estamos trabalhando com radiofrequência é esperado que a velocidade nem sempre seja estável como em cabos de rede. A interferência de RF que inclui inclusive outras redes ao redor podem degradar o sinal, portanto é normal que testes realizados por outras pessoas possam ter resultados diferentes. A distância e obstáculos também influenciam.

Embora tenha realizado testes diversos em vários dias, os resultados abaixo são dos últimos testes. A média de Download e Upload foi feita por meio de 5 testes com 15 segundos de duração cada, utilizando o comando "iperf -s -i 0.3" no servidor com Raspberry Pi e "iperf -c ipdoservidor -i 0.3 -t 15" no cliente. A base dos resultados tanto de upload quanto download foram retiradas do iperf3 no Raspberry Pi. Os resultados relacionados ao pico máximo foram retirados em meio a diversos testes além dos 15 segundos de duração.

Os primeiros testes foram realizados com o roteador Dlink DIR-615 com DD-WRT, Wi-Fi configurado para misto BGN com 40Mhz e WPA2. A máquina cliente estava conectada por cabo ethernet e limitada aos 100Mbps do roteador.

benchmark raspberry pi wifi tl-wn722n e dir-615

O segundo teste foi realizado com o roteador Belkin AC900 DualBand AC+ com portas Gigabit. Ele foi conectado a uma porta ethernet do PC também Gigabit com velocidade confirmada. O Wi-Fi foi configurado para padrão N com 40Mhz e WPA2. Esse modelo de roteador possui uma antena interna e dependendo da posição em que era colocado os resultados eram um pouco melhores ou piores.

benchmark raspberry pi wifi tl-wn722n e belkin ac900

As taxas tanto de download quanto upload tiveram uma leve melhora sem a limitação (100Mbps via cabo) de transferência do roteador anterior.

É bom lembrar que a velocidade declarada de 150Mbps trata-se do máximo teórico em dados RAW, sem interferências e o overhead de protocolos por exemplo. Levando isso em conta é plausível dizer que a velocidade média de download à 96,58Mbps e upload 94,58Mbps do último teste são razoavelmente boas.

Em testes preliminares à uma distância com cerca de 5 metros do roteador (Belkin), uma parede de 15cm e o fundo de uma estante com 4mm o download e upload tiveram velocidades médias entre 85mbps e 90,8mbps. Minutos depois realizando testes novamente a velocidade média ficou variando entre 45mbps e 76mbps com picos de 80-90 e poucos Mbps. A variação parece ser devido a interferências. O nível de sinal ficava variando de -48 à -53dBm, enquanto que o nível quando estava perto do roteador variava de -23 à -30dBm. O ping fica na faixa de 1ms, enquanto que via cabo ethernet 0.3ms.

A utilização de cpu por parte do iperf3 no Raspberry Pi em boas taxas de transferência, ficou em cerca de 21,3% à 30% no download com alguns picos até 39,7%, enquanto que em upload de 6.2 à 15.1%.


Consumo de energia do dongle Wi-Fi no Raspberry Pi


O consumo gerado adicionalmente por esse modelo de dongle Wi-Fi é significativo, principalmente em uploads, pois é normal o gasto maior de energia para enviar do que receber.



É bom lembrar que o consumo foi medido entre a fonte e o Raspberry Pi 2B. Portanto o gráfico que menciona o consumo do dongle envolve também uma pequena parte do consumo pela utilização da cpu e do chip LAN9514 responsável também pelo hub USB. Nos testes havia somente o dongle Wi-Fi conectado. A média do consumo total em upload foi de 560mA (2,8W).


Desvantagens e alguns problemas importantes


Nos testes acima o dongle se saiu relativamente bem fora por um problema recorrente. Na realização dos vários testes durante diversos dias foi notado que as vezes há uma queda inesperada na transferência que geralmente tende a 0 rapidamente e alterna em alguns segundos.

No gráfico abaixo é possível ver o que aconteceu em vários testes realizados, da queda de transferência, variação e à normalização posterior:

problema tl-wn722n gap

Após alguns testes realizados com dongle conectado em um netbook e em ambos os roteadores, foi constatado que o problema não é do Raspberry Pi e nem dos roteadores. Fiz testes inclusive com a placa Wi-Fi N de chipset AR9285 PCIE desse netbook que utiliza o mesmo driver base ath9k e o problema não ocorria.

O que aparenta é que esse problema deve estar ligado a alguns bugs relacionados ao USB no firmware opensource para esse chip. Se alguém tiver esse mesmo dongle e uma máquina linux seria interessante realizar testes com o iperf3 para ver se ocorre o mesmo. Caso futuramente corrigidos com firmware atualizado irei realizar novos testes e atualizar esse artigo.

No modo access point o dongle é capaz de segurar somente até 7 clientes, isso é uma limitação conhecida do firmware e que poderá ser resolvida no futuro, o fato é que não é uma questão de somente alterar o limite.

Outra questão que já era conhecida e que realizei testes para confirmar é que conectar o dongle no antigo Raspberry Pi Modelo B faz com que ele reinicie. Isso não acontece no Raspberry Pi 2B por exemplo. É necessário ligar o modelo antigo já com o dongle conectado.

Uma última observação é em relação ao tamanho do dongle. Ao conectar ele diretamente no Raspberry Pi B+ ou 2B perde-se uma porta USB. A solução é utilizar o cabo de extensão USB incluso na caixa.

tl-wn722n conexao raspberry pi

Quando o dongle é conectado nas portas USB do lado esquerdo, o conector RJ45 encaixa perfeitamente caso não tenha capas.

tl-wn722n conexao raspberry pi


Conclusão


Apesar de alguns problemas, o modelo apresentado tem até agora atendido minhas necessidades. Alguns dos bugs poderão ser consertados futuramente.

Esse modelo é encontrado facilmente em diversas lojas nacionais e internacionais.

Caso esse modelo não seja apropriado para você, há diversos outros menores. Mas antes verifique sempre a compatibilidade com o Raspberry Pi

Referências:
http://www.tp-link.com.br/products/details/?categoryid=3958&model=TL-WN722N#spec
https://github.com/qca/open-ath9k-htc-firmware/wiki/usb-related-issues 
https://wireless.wiki.kernel.org/en/users/drivers/ath9k_htc

4 comentários:

  1. Comprei um TL-WN723N e eu passo mal com ele. Primeiro que não identificou o drive imediatamente, tive que procurar e instalar, Quando a net cai ele não reconecta sozinho. entre outros.

    ResponderExcluir
  2. Uso o mesmo modelo aqui com meu Raspberry Pi B+, nunca tive problemas

    ResponderExcluir