Como calcular parâmetros para 'iw set freq'

2

Foi-me pedido que resolvesse um problema com uma rede sem fios 802.11ac com largura de canal de 80MHz. Ao configurar um dispositivo sem fio no modo monitor, estou tendo problemas para especificar a largura do canal de 80Mhz para iw .

Eu verifiquei que meu domínio regulador permite canais de 80 MHz

iw reg get
country US: DFS-FCC
    (2402 - 2472 @ 40), (N/A, 30), (N/A)
    (5170 - 5250 @ 80), (N/A, 17), (N/A)
    (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
    (5490 - 5730 @ 160), (N/A, 23), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57240 - 63720 @ 2160), (N/A, 40), (N/A)

Mas quando eu emito os seguintes comandos iw para usar o Canal 40, acabei de receber mensagens de erro.

# iw dev <devname> set freq <control freq> [20|40|80|80+80|160] [<center freq 1>] [<center freq 2>]
$ sudo iw wlo1 set freq 5200 80
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5210 80
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5200 80 5210
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5210 80 5210
command failed: Invalid argument (-22)
$ sudo iw wlo1 set freq 5210 80 5200
command failed: Invalid argument (-22)
$ sudo iw wlo1 set channel 42
command failed: Invalid argument (-22)

Também estou um pouco confuso sobre a distinção entre freqüência de controle e frequência central e sua relação com o número do canal. A Wikipedia [1] diz que o canal 40 com uma largura de canal de 20 MHz abrange as freqüências 5190-5210 MHz. Parece implicar que, se estou usando uma largura de canal de 80 MHz, estou realmente usando o canal 42, mas isso também não funciona. Esta ilustração [2] faz um bom trabalho ilustrando os canais. Se eu interpretar "freqüência central" para significar "a freqüência a meio caminho entre a maior e a menor frequência" então isso seria 5210 MHz, mas então qual é a freqüência de controle? É 5200 MHz para o canal 40? 5210 MHz para o canal 42?

O único comando iw que funciona é set channel 40 , o que resulta em uma largura de canal de 20 MHz.

[1] link

[2] link

    
por Huckle 23.07.2017 / 22:36

1 resposta

4

Talvez seja tarde demais para o OP, mas para as pessoas que chegam pelo Google ...

No 802.11ac, o canal de 80 MHz cobre 4 canais de 20 MHz. Um dos canais de 20 MHz é designado como o canal de controle. A figura citada pelo OP mostra isso muito bem. Ao usar o canal 40 como o canal de controle, o canal de 80 MHz cobrirá os canais 36, 40, 44 e 48. O canal 36 compartilha os mesmos canais de 40 MHz e 80 MHz com 40 MHz. Se um host transmite um quadro no Canal 36, sua rede no Canal 40 ainda pode transmitir usando o Canal 40 de 20 MHz, em vez de ter que esperar pelo tráfego no Canal 36 para limpar.

A frequência central iw <dev> set freq quer no centro do canal de 80 MHz. A freqüência central pode ser calculada a partir dos limites do canal de 80 MHz na figura como (5170 MHz + 5250 MHz) / 2 = 5210 MHz, ou das freqüências centrais subcanais (5180 MHz + 5240 MHz) / 2 = 5210 MHz.

Se você não tiver o gráfico à mão por algum motivo, outra forma de obter o canal para o mapeamento de frequência é através de iw list , que lista os canais suportados e suas freqüências centrais de 20 MHz na seção "Frequências". / p>

O canal 40 é de 5200 MHz, então sudo iw wlo1 set freq 5200 80 5210 deveria ter funcionado.

Você menciona o uso de uma NIC da Intel, mas não de qual modelo. Várias coisas para verificar:

  1. O VHT deve estar listado na seção 'recursos' da saída de iw list . Eu tenho um AC7265, e ele suporta VHT RX & TX para MCS 0-9 com até dois fluxos.
  2. Verifique se você tem o firmware mais recente. Se você adquiriu seu kernel através do Ubuntu e está no LTS mais recente, provavelmente tem um firmware bem atualizado, a menos que tenha a plataforma mais recente. Se você tiver a plataforma mais recente (por exemplo, Skylake em 2017), convém experimentar a pilha de ativação de hardware . O indicador de que o firmware é um problema estaria em dmesg mensagens de inicialização quando o driver for carregado. Supondo que a sua placa de rede Intel usa iwlwifi, você deve ver algo como "iwlwifi 0000: 03: 00.0: versão de firmware carregada 22.391740.0 op_mode iwlmvm". Não se preocupe se houver várias mensagens de falha antes da mensagem final bem-sucedida. Apenas certifique-se de que eventualmente seja carregado. A página do driver iwlwifi, seção de firmware descreve como obter o firmware mais recente se você quiser verifique se não há uma versão mais recente.
  3. Ative as opções do módulo para 802.11ac. Em /etc/modprobe.d/iwlwifi.conf , tenho o seguinte:

    # /etc/modprobe.d/iwlwifi.conf
    # iwlwifi will dyamically load either iwldvm or iwlmvm depending on the
    # microcode file installed on the system. When removing iwlwifi, first
    # remove the iwl?vm module and then iwlwifi.
    remove iwlwifi \
    (/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) \
    && /sbin/modprobe -r mac80211
    
    options iwlwifi 11n_disable=8 amsdu_size=3
    

A opção amsdu_size=3 aumenta o tamanho do buffer de entrada o suficiente para receber agregados de 12 KB . Aumenta a pegada de memória do driver, mas sem ele o sniffer perderá agregados maiores.

A opção 11n_disable=8 permite a agregação de pacotes na transmissão, o que não é estritamente necessário para o modo monitor, mas é um aumento significativo de desempenho se você usar o Wi-Fi fora do modo monitor.

    
por 11.08.2017 / 07:59

Tags