2.4G信道宽度自动选择

2.4G channel bandwidth

2.4G信道信道图:

20MHz

当bandwidth为20MHz时,即以当前信道为中心向上10MHz,向下10Mh共20MHz

例如:

  1. channel 1为2412,则20MHz使用的是2402~2422
  2. channel 6为2437,则20MHz使用的是2427~2447
  3. channel 13为2472,则20MHz使用的是2462~2482

当有13个channel时,最低频率是2402MHz,最高为2482MHz

40MHz

当bandwidth为40MHz是,以当前的20MHz,加上向上或向下20Mhz,共40MHz

例如:

  1. channel 6的20MHz使用24272447,加上前面的20MHz,即24072447
  2. channel 6的20MHz加上后面的20MHz,即2427~2467
  3. channel 1的20MHz使用24022422,只能向下,即24022442
  4. channel 11的20MHz使用24522472,只能向上,即24322472

动态切换

当开机时,如果2.4G WiFi bandwidth 设定为auto,则会使用ACS来决定是否可以到40MHz,具体演算法:

1.读取各个信道,查看是否有overlap
2.当前信道的副信道是否有overlap
3.如果副信道有overlap,则选择20MHz,如果没有overlap则选择40MHz

主信道:当前选择的channel的20MHz,例如:

  1. channel 1的20MHz,2402~2422
  2. channel 6的20MHz,2427~2447

副信道:向上或向下的20MHz,例如:

  1. channel 1向下20MHz,2422~2442
  2. channel 6向上20MHz,2407~2427
  3. channel 6向下20MHz,2447~2467

根据channel list我们可以知道,channel 3是2422,channel 7是2442,所以如果channel为1,当channel 3~7没有overlap就能选到40MHz,反之20MHz

当channel为6时,当channel 14没有overlap(向上)或channel 812没有overlap(向下),就可以选到40MHz,反之只能到20MHz

同理,当channel为11时,当channel 3~9没有overlap就能选到40MHz,反之20MHz

实现方式

HT20/HT40 coexistence

打开此功能WiFi在检测到另一个WiFi在使用HT40时,会主动降到HT20,避免对另一个WiFi产生干扰,指令:

1
2
cfg80211tool athN g_disablecoext
cfg80211tool athN disablecoext [0/1]

ACS

开机时会进行一次ACS扫描,根据周围的其他WiFi的信息来决定,选择那channel以及是否使用HT40,ACS默认只有打开WiFi时会进行扫描

Back ground ACS/OBSS scan

运行时的检查要靠后台扫描来完成,当没有设备连接的时候,可以触发后台扫描,进行信道和频宽的选择,打开指令:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 开关
cfg80211tool wifiN get_acs_bkscanen
cfg80211tool wifiN acs_bkscanen [0/1]

// 间隔,默认1分钟
cfg80211tool wifiN get_acsscanintvl
cfg80211tool wifiN acsscanintvl <value>

// Background scan ACS control flags
// 0x1 – Full ACS check
// 0x2 -Only OBSS check this is used for manual configuration of channel.
cfg80211tool wifiN get_acs_ctrlflags
cfg80211tool wifiN acs_ctrlflags

2.4G信道宽度自动选择
https://carl-5535.github.io/2024/07/17/WiFi/2.4G信道宽度自动选择/
作者
Carl Chen
发布于
2024年7月17日
许可协议