Android WiFi 热点 Channel 信道 和 Frequency 频率 转换总结

Android WiFi 热点 Channel 信道 和 Frequency 频率 转换总结

文章目录

  • [Android WiFi 热点 Channel 信道 和 Frequency 频率 转换总结](#Android WiFi 热点 Channel 信道 和 Frequency 频率 转换总结)
    • [一、标准计算公式(IEEE 802.11 规范)](#一、标准计算公式(IEEE 802.11 规范))
      • [1. 2.4GHz ISM 频段](#1. 2.4GHz ISM 频段)
      • [2. 5GHz U-NII 频段](#2. 5GHz U-NII 频段)
    • [二、2.4GHz 信道 - 频率完整对照表](#二、2.4GHz 信道 - 频率完整对照表)
    • [三、5GHz 信道 - 频率完整对照表 + DFS 标记](#三、5GHz 信道 - 频率完整对照表 + DFS 标记)
      • UNII-1(Non-DFS,优先热点使用)
      • [UNII-2A(DFS 信道)](#UNII-2A(DFS 信道))
      • [UNII-2C(DFS 信道)](#UNII-2C(DFS 信道))
      • [UNII-3(Non-DFS 5.8G 高频段)](#UNII-3(Non-DFS 5.8G 高频段))
    • [四、Android 开发关键注意事项(SoftAP 热点专用)](#四、Android 开发关键注意事项(SoftAP 热点专用))
      • [1. 信道与频段 band 映射(cmd wifi start-softap 参数)](#1. 信道与频段 band 映射(cmd wifi start-softap 参数))
      • [2. frequency 与 channel 在 Android 命令的区别](#2. frequency 与 channel 在 Android 命令的区别)
      • [3. DFS 信道在热点上的限制](#3. DFS 信道在热点上的限制)
      • [4. 调试命令(验证当前管制域可用信道)](#4. 调试命令(验证当前管制域可用信道))
      • [5. 常见踩坑点](#5. 常见踩坑点)
    • 五、快速查询工具公式-代码
    • 六、热点异常分析示例
    • 七、术语总结

Android 热点日志分析过程中,有些信道值channel可能导致热点打不开,

有些logcat只打印了频率frequency的值,所以需要了解转换关系。

一、标准计算公式(IEEE 802.11 规范)

1. 2.4GHz ISM 频段

公式:

复制代码
中心频率 Freq = 2407 + 5 × Channel
信道 Channel = (Freq - 2407) ÷ 5

✅ 示例验证:

  • Channel 6 → 2407 + 5×6 = 2432 MHz
  • Channel 1 → 2407+5×1 = 2412 MHz

⚠️ 注意:信道 14 仅日本支持(2484MHz),绝大多数国家禁用

2. 5GHz U-NII 频段

公式:

复制代码
中心频率 Freq = 5000 + 5 × Channel
信道 Channel = (Freq - 5000) ÷ 5

✅ 示例验证:

  • Channel 44 → 5000 + 5×44 = 5220 MHz
  • Channel 48 → 5000 + 5×48 = 5240 MHz(日志常用 5G 非 DFS 信道)

重要规则:5G 信道常用步长为 4(36/40/44/48、52/56/60/64),源于 4 个信道捆绑 80MHz 带宽,数学公式依然 5MHz 基础步进

二、2.4GHz 信道 - 频率完整对照表

表格

信道 Channel 中心频率 Freq (MHz) 中国大陆 (CN) 北美 US/FCC 欧盟 EU/ETSI 日本 JP 备注
1 2412 √ √ √ √ 通用
2 2417 √ √ √ √ 通用
3 2422 √ √ √ √ 通用
4 2427 √ √ √ √ 通用
5 2432 √ √ √ √ 通用
6 2437 √ √ √ √ 通用,首选非重叠信道
7 2442 √ √ √ √ 通用
8 2447 √ √ √ √ 通用
9 2452 √ √ √ √ 通用
10 2457 √ √ √ √ 通用
11 2462 √ √ √ √ 通用,首选非重叠信道
12 2467 √(STA) ❌(SoftAP 热点) 低功率可用 √ √ Android 热点经常被厂商策略屏蔽
13 2472 √(STA) ❌(SoftAP 热点) 低功率可用 √ √ 国内热点默认无法启用(你日志出现 total=11 来源)
14 2484 ❌ ❌ ❌ √ 仅 802.11b,禁止 g/n/ac

📌 结合日志:

复制代码
Regulatory channel list for band 2Ghz : total=11 non-DFS=11 DFS=0

原因:Android SoftAP 热点策略主动剔除信道 12、13,仅保留 1~11,不是国标强制,是平台厂商 wlan regulatory 配置。
补充:2.4G不存在 DFS 信道,所有信道均为 non-DFS。

三、5GHz 信道 - 频率完整对照表 + DFS 标记

区分:非 DFS 信道(无需雷达检测) / DFS 信道(启用前必须 CAC 雷达监听)

UNII-1(Non-DFS,优先热点使用)

信道 Channel 频率 Freq (MHz) DFS 标识 CN US EU JP
36 5180 非 DFS √ √ √ √
40 5200 非 DFS √ √ √ √
44 5220 非 DFS √ √ √ √
48 5240 非 DFS √ √ √ √

下面两个DFS信道基本不用管,安卓设备默认都是不支持的。

UNII-2A(DFS 信道)

信道 Channel 频率 Freq (MHz) DFS 标识 CN US EU JP
52 5260 DFS √ √ √ √
56 5280 DFS √ √ √ √
60 5300 DFS √ √ √ √
64 5320 DFS √ √ √ √

UNII-2C(DFS 信道)

信道 Channel 频率 Freq (MHz) DFS 标识 CN US EU JP
100 5500 DFS ❌ √ √ √
104 5520 DFS ❌ √ √ √
108 5540 DFS ❌ √ √ √
112 5560 DFS ❌ √ √ √
116 5580 DFS ❌ √ √ √
120 5600 DFS ❌ √ √ √
124 5620 DFS ❌ √ √ √
128 5640 DFS ❌ √ √ √
132 5660 DFS ❌ √ √ √
136 5680 DFS ❌ √ √ √
140 5700 DFS ❌ √ √ √
144 5720 DFS ❌ √ √ √

UNII-3(Non-DFS 5.8G 高频段)

信道 Channel 频率 Freq (MHz) DFS 标识 CN US EU JP
149 5745 非 DFS √ √ √ √
153 5765 非 DFS √ √ √ √
157 5785 非 DFS √ √ √ √
161 5805 非 DFS √ √ √ √
165 5825 非 DFS √ √ ❌ √

📌 国内 Android 热点开发重点:

中国大陆 CN 国家码:禁用 100~144 全部 DFS 信道

对应日志 Regulatory channel list for band 5Ghz : total=9 non-DFS=9 DFS=0 可用信道:36,40,44,48,149,153,157,161,165(合计 9 个,和日志完全吻合)

四、Android 开发关键注意事项(SoftAP 热点专用)

1. 信道与频段 band 映射(cmd wifi start-softap 参数)

  • band=1 → 2.4GHz
  • band=2 → 5GHz

不要混淆:很多驱动内部定义 band=3 代表 5GHz,属于平台私有映射,命令行参数标准不使用 band=3

2. frequency 与 channel 在 Android 命令的区别

cmd wifi start-softap 支持两种传参:

  1. 指定 channel=XX:框架内部自动换算中心频率
  2. 指定 frequency=XXXX:直接使用中心频点,框架反向换算信道

底层 hostapd 最终接收中心频率参数

示例完整热点命令(5G 信道 48)

复制代码
cmd wifi start-softap MyHotspot wpa2 12345678 -b 5 -c 48
等价于
cmd wifi  start-softap MyHotspot wpa2 12345678 -b 5 -f 5240

上面命令 -c -f 其实没有,测试了,信道值是随机的,估计系统源码已经没有完善这个逻辑。

3. DFS 信道在热点上的限制

  1. Android SoftAP大部分平台不支持自动 CAC 雷达检测,热点无法正常拉起 DFS 信道;

  2. 开发调试热点优先选择非 DFS 信道(36/40/44/48、149~165);

  3. 切换国家码会动态刷新可用信道列表,命令设置国家码:

    //获取国家码
    cmd wifi get-country-code
    //设置国家码
    cmd wifi force-country-code enabled CN

4. 调试命令(验证当前管制域可用信道)

复制代码
# 查询热点AP允许信道信息
cmd wifi get-allowed-channel

具体显示如下;

复制代码
console:/ # cmd wifi get-allowed-channel
Allowed ch in STA mode: //tation 站点模式,日常手机连接家里路由器
2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 5260 5280 5300 5320 
Allowed ch in SAP mode: //Soft AP 软件接入点,本机发射热点
2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 
Allowed ch in WiFi-Direct GC mode: // Group Client,直连客户端
2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 
Allowed ch in WiFi-Direct GO mode: //Group Owner,直连群主(P2P 热点)
2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 
Allowed ch in WiFi-Aware mode: //Neighbor Awareness Networking 邻居感知网络
2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 
Allowed ch in TDLS mode:

console:/ #  //Tunnel Direct Link Setup 隧道直连链路

启动 SoftAP 热点时,系统读取的是 SAP mode 频点清单 。

上面显示的数据并不正确,本机设备切换到CN或者US,36G应该支持很多个的,上面只打印了4个;

估计是系统源码没判断正常。

5. 常见踩坑点

  1. ❌ 直接硬编码信道 12、13 开启 2.4G 热点:CN 国家码下 ApConfigUtil 会过滤,热点启动失败;
  2. ❌ 使用 5G 信道 100~144 开启热点:国内管制域直接剔除;
  3. ❌ 混淆信道号和频率:日志 ApConfigUtil 打印 frequency,不要直接填入 channel 参数;
  4. ACS 自动信道选择:部分设备不支持 ACS,日志打印Ignoring Allowed ACS channels since ACS is not supported,必须手动指定信道。

五、快速查询工具公式-代码

复制代码
//2.4G 信道→频率
public static int channel2Freq2G(int ch){
    return 2407 + 5 * ch;
}
public static int freq2Channel2G(int freq){
    return (freq - 2407)/5;
}

//5G 信道→频率
public static int channel2Freq5G(int ch){
    return 5000 + 5 * ch;
}
public static int freq2Channel5G(int freq){
    return (freq - 5000)/5;
}

六、热点异常分析示例

比如埃及EG不支持5G的149,我先把热点信道值设置成149,切换到埃及EG语言就会打开失败:

复制代码
08-04 10:20:24.114   949  1325 D WifiActiveModeWarden: Starting SoftApModeManager config = null

//打印channel为149,国家码为埃及EG
08-04 10:20:24.207   949  1325 D SoftApManager[wlan1]: startSoftAp: channels {2=149} iface wlan1 country EG


08-04 10:20:24.255   949  2712 W HostapdHalAidlImp: Failure on iface wlan1, instance: wlan1
08-04 10:20:24.329   949  1325 E HostapdHalAidlImp: IHostapd.addAccessPoint failed: android.os.ServiceSpecificException:  (code 1)

//热点打开失败
08-04 10:20:24.330   949  1325 E WifiNative: Failed to add softAp
08-04 10:20:24.330   949  1325 E SoftApManager[wlan1]: Soft AP start failed

//关闭节点
08-04 10:20:24.374   949  1325 I WifiNative: Successfully torn down Iface:{Name=wlan1,Id=6,Type=AP}
08-04 10:20:24.374   949  1325 I WifiNative: Successfully initiated teardown for iface=wlan1
08-04 10:20:24.374   949  1325 D SoftApManager[wlan1]: Soft AP is stopped

//热点打开失败的其他信息
08-04 10:20:24.374   949  1325 E WifiActiveModeWarden: SoftApManager start failed!SoftApManager{id=929992 iface=wlan1 role=ROLE_SOFTAP_TETHERED}
08-04 10:20:24.383   949  1325 D ApConfigUtil: Filtered channel list for band 2Ghz : 2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462
08-04 10:20:24.391   949  1325 D ApConfigUtil: Filtered channel list for band 5Ghz : 5180,5200,5220,5240
08-04 10:20:24.392   949  1325 W HostapdHalAidlImp: Handle IHostapd/IHostapd died.

打开失败会有关闭热点的日志。

从上层日志估计很难看出哪里导致热点失败的原因,

但是看主要日志其实可以简单确认:

复制代码
//打印channel为149,国家码为埃及EG
08-04 10:20:24.207   949  1325 D SoftApManager[wlan1]: startSoftAp: channels {2=149} iface wlan1 country EG

08-04 10:20:24.383   949  1325 D ApConfigUtil: Filtered channel list for band 2Ghz : 2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462
08-04 10:20:24.391   949  1325 D ApConfigUtil: Filtered channel list for band 5Ghz : 5180,5200,5220,5240

后面打印目前的国家码语言只支持四个信道范围,换算后分别是:36、40、44、48;

其他语言是不支持的,所以打开失败。

如果要详细确认,可以查看整个logcat日志,具体看看底层日志的 hostapd 打印:

复制代码
//热点节点加载
08-04 10:37:09.267 11112 11112 I hostapd : Add interface 'wlan1'

//这里打印当前支持的信道信息,需要慢慢看
08-04 10:37:09.303 11112 11112 D hostapd : nl80211: Mode IEEE 802.11g: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484[DISABLED]
08-04 10:37:09.303 11112 11112 D hostapd : nl80211: Mode IEEE 802.11a: 5170[DISABLED] 5180 5190[DISABLED] 5200 5210[DISABLED] 5220 5230[DISABLED] 5240 5250[DISABLED] 5260[NO_IR][RADAR] 5270[DISABLED] 5280[NO_IR][RADAR] 5290[DISABLED] 5300[NO_IR][RADAR] 5310[DISABLED] 5320[NO_IR][RADAR] 5500[DISABLED] 5510[DISABLED] 5520[DISABLED] 5530[DISABLED] 5540[DISABLED] 5550[DISABLED] 5560[DISABLED] 5570[DISABLED] 5580[DISABLED] 5590[DISABLED] 5600[DISABLED] 5610[DISABLED] 5620[DISABLED] 5630[DISABLED] 5640[DISABLED] 5650[DISABLED] 5660[DISABLED] 5670[DISABLED] 5680[DISABLED] 5690[DISABLED] 5700[DISABLED] 5710[DISABLED] 5720[DISABLED] 5745[DISABLED] 5755[DISABLED] 5765[DISABLED] 5775[DISABLED] 5785[DISABLED] 5795[DISABLED] 5805[DISABLED] 5815[DISABLED] 5825[DISABLED] 5835[DISABLED] 5845[DISABLED] 5855[DISABLED] 5865[DISABLED] 5875[DISABLED] 5885[DISABLED] 5905[DISABLED]
08-04 10:37:09.303 11112 11112 D hostapd : nl80211: Mode IEEE 802.11b: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484[DISABLED]

//这里就是报错的关键信息,149信道对应的 5745 frequency 的值不支持
08-04 10:37:09.303 11112 11112 I hostapd : Frequency 5745 (primary) not allowed for AP mode, flags: 0x871
08-04 10:37:09.303 11112 11112 E hostapd : Primary frequency not allowed

//热点节点关闭
08-04 10:37:09.386 11112 11112 I hostapd : Remove interface 'wlan1'

热点日志中,有些异常打印并没有打印channel的值,但是有打印frequency的值,也是可以拿来分析确认的。

七、术语总结

  1. Non-DFS 信道:无需雷达检测,Android 热点首选,启动速度快;安卓设备都是默认这个。

  2. DFS 信道:与气象雷达共享频谱,设备需要 60s CAC 监听,国内热点基本不可用;

  3. Regulatory domain(管制域):由 wifi 国家码 (country code) 决定可用信道列表,ApConfigUtil 依据该表过滤信道;

  4. SoftAP 信道过滤 = 国标管制域 + 厂商平台策略双重限制。

  5. 频率Frequency的值和信道channel的对应值:

    2.4GFreq = 2407 + 5 × Channel ;5GFreq = 5000 + 5 × Channel;

    2.4GChannel = (Freq - 2407) ÷ 5;5GChannel = (Freq - 5000) ÷ 5

    Frequency的值:2.4G是2412起 对应1,5G是5180起对应36;

    大于5000的Frequency值就是5G的频率值;

相关推荐
宇卿.17 小时前
C#语句:
开发语言·c#
ComPDFKit17 小时前
用 ComPDF DocSlight 提取 PDF 表格:三种样本实测与 Python 接入
开发语言·python·pdf·pdf表格提取
蜗牛互联网18 小时前
Java Agent 工具调用的 allowlist、参数校验与调用预算
java·开发语言·人工智能·后端·oracle
大文说跨境18 小时前
多账号环境隔离方案技术选型:指纹浏览器、VPS 与云手机的三种架构对比
java·开发语言·前端
chenbingjie_c18 小时前
手撕 C++ priority_queue:二叉堆 + 模板仿函数 + 模板特化(保姆级逐函数拆解)
开发语言·c++
ZHOUPUYU18 小时前
PHP 8.2 的核心高级特性,包括只读类、类型系统增强
android·性能优化·php
ttwuai18 小时前
Go后台管理系统开源项目有哪些?如何按交付形态筛掉不合适的仓库
开发语言·golang·开源
ZHOUPUYU18 小时前
PHP 8.0 高级技术实战:从新特性到性能优化
android·性能优化·php
不爱说话郭德纲18 小时前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
yuniko-n18 小时前
【Java】关于容器选型:Deque、PriorityQueue、LinkedList
java·开发语言