3

I've been asked to troubleshoot an issue with an 802.11ac wireless network that has a 80MHz channel width. When setting up a wireless device in monitor mode, I'm having trouble specifying the 80Mhz channel width to iw.

I've verified that my regulator domain allows 80 MHz channels

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)

But when I issue the following iw commands to use Channel 40, I just get error messages.

# 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)

I'm also a bit confused on the distinction between control frequency and center frequency and their relationship to the channel number. Wikipedia List of WLAN channels says that Channel 40 with a 20 MHz channel width spans the frequencies 5190-5210 MHz. It seems to imply that if I'm using an 80 MHz channel width that I'm actually using channel 42, but that also doesn't work. This illustration does a good job illustrating the channels. If I interpret "center frequency" to mean "the frequency half-way between the highest and lowest frequency" then that would be 5210 MHz, but then what is the control frequency? Is it 5200 MHz for channel 40? 5210 MHz for channel 42?

The only iw command that works is set channel 40, which results in a 20 MHz channel width.

2
  • Does your WLAN adapter support 80 MHz channel width (iw phy)?
    – dirkt
    Jul 24 '17 at 5:31
  • 1
    Right, so Intel claims it does on their site (it lists 802.11ac) but I don't see any reference to VHT (Very High Throughput) or 80 MHz in the output of iw dev. I found this SU post useful. superuser.com/questions/945517/…
    – Huckle
    Jul 26 '17 at 7:04
7

Possibly too late for the OP, but for the folks arriving through Google...

In 802.11ac, the 80 MHz channel covers 4 20 MHz channels. One of the 20 MHz channels is designated as the control channel. The figure cited by the OP shows this nicely. When using Channel 40 as the control channel, the 80 MHz channel will cover Channels 36, 40, 44, and 48. Channel 36 shares the same 40 MHz and 80 MHz channels with 40 MHz. If a host transmits a frame on Channel 36, your network on Channel 40 can still transmit using the 20 MHz Channel 40, rather than having to wait for traffic on Channel 36 to clear.

The center frequency iw <dev> set freq wants at the center of the 80 MHz channel. The center frequency can be computed from the 80 MHz channel bounds in the figure as (5170 MHz + 5250 MHz) / 2 = 5210 MHz, or from the sub-channel center frequencies (5180 MHz + 5240 MHz) / 2 = 5210 MHz.

If you do not have the chart handy for some reason, another way to get the channel to frequency mapping is through iw list, which lists both the supported channels and their 20 MHz center frequencies in the "Frequencies" section.

Channel 40 is 5200 MHz, so sudo iw wlo1 set freq 5200 80 5210 should have worked.

You mention using an Intel NIC, but not which model. Several things to check:

  1. VHT should be listed in the 'capabilities' section of iw list's output. I have an AC7265, and it supports VHT RX & TX for MCS 0-9 with up to two streams.
  2. Make sure you have the latest firmware. If you got your kernel through Ubuntu and you are on the latest LTS, you probably have pretty up to date firmware, unless you have the latest platform. If you have the latest platform (e.g., Skylake in 2017) you might want to try the hardware enablement stack. The indicator that firmware is a problem would be in dmesg boot messages when the driver loads. Assuming your Intel NIC uses iwlwifi, you should see something like "iwlwifi 0000:03:00.0: loaded firmware version 22.391740.0 op_mode iwlmvm". Do not worry if there are several failure messages preceding the final successful message. Just make sure one eventually loads. The iwlwifi driver page, firmware section describes how to get the latest firmware if you want to make sure there is not a newer version.
  3. Enable module options to for 802.11ac. In /etc/modprobe.d/iwlwifi.conf, I have the following:

    # /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
    

The amsdu_size=3 option increases incoming buffer size enough to receive 12 KB aggregates. It increases the driver's memory footprint, but without it the sniffer will drop larger aggregates.

The 11n_disable=8 option enables packet aggregation on transmit, which is not strictly needed for monitor mode, but is a significant performance increase if you ever use Wi-Fi outside of monitor mode.

2
  • So the choice of the control channel is arbitrary then?
    – Huckle
    Aug 11 '17 at 14:29
  • @Huckle Choice of control channel is important if multiple APs use the same 80 MHz channel. Only one device at a time can use the 80 MHz channel, but the two 40 MHz and four 20 MHz sub-channels can be used independently. For example, if an AP uses Control Channel 36 and another uses 44, devices on both networks can use their 40 MHz channel at the same time. A thermostat might use 11n instead of 11ac to reduce cost, and does not need 11ac bandwidth. When the thermostat is transmitting on Ch. 36, a device on the Ch. 44 AP can use the other 40 MHz channel to avoid waiting.
    – wrdieter
    Aug 11 '17 at 18:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.