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的频率值;

相关推荐
wgego1 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
jieyucx1 小时前
【高级利用】条件竞争与逻辑漏洞:与服务器赛跑的艺术
android·运维·服务器·web安全·文件上传
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
山峰哥3 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
wangjialelele3 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
Awna3 小时前
Golang 大小写可见性规范
开发语言·后端·golang
叶辞树4 小时前
死锁问题分析
android
AI科技星4 小时前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
TimeFine4 小时前
让 Codex “用上”Android Studio:JetBrains MCP Server 接入与实践
android