wifi 自适应failSOP
这些平台在不同频段的不同带宽均有单独的一行用于修改,哪一项fail了,就加哪一行到wifi.cfg文件里面去,里面的0xFFB2里面的B2就是触发阈值,同样如上往小了改即可。当遇到客户测试EDCCA时,出现fail情况,请客户加大干扰信号强度,看下DUT是否可以停掉TX,如果可以停掉TX,那需要按照下面的方式进行调整。注:不同的平台分成不同架构的,可以通过getprop ro.vendor.wla
·
当遇到客户测试EDCCA时,出现fail情况,请客户加大干扰信号强度,看下DUT是否可以停掉TX,如果可以停掉TX,那需要按照下面的方式进行调整。
调整EDCCA是一个比较费耐心的一件事,需要慢慢调整
注:EDCCA(Energy Detect Clear Channel Assessment)概述
EDCCA 是 Wi-Fi 自适应(Adaptivity)测试中的核心指标,直接决定设备在干扰环境下能否合规地停止 TX(发射)。
1. 工作原理
EDCCA 属于 Wi-Fi 协议中的 CSMA/CA(载波监听多址/碰撞避免)机制中的能量检测环节:
- Wi-Fi 芯片在发送数据前,会先监听信道。
- 当检测到的信道能量(Energy Detect)高于设定门限(ED Threshold)时,信道被判定为“忙”,设备不得发射。
- 当能量低于门限时,信道被判定为空闲,设备可以正常发射。
2. 测试内容
- 在不同干扰能量下,验证 Wi-Fi 模块是否能正确判定信道忙闲。
- 检查 ED 门限值是否符合标准(通常在 –62dBm 至 –82dBm 范围)。
- 避免 Wi-Fi 模块在强干扰环境下仍强行发射,从而引发共存问题。
3. 测试目的
- 确保设备能够公平共享信道,避免干扰其他设备。
- 保证设备发射行为符合相关法规要求(如 ETSI、FCC 等)。
4. 测试方式
- 使用信号源在目标频段注入不同功率的干扰信号。
- 观察 Wi-Fi 模块在 ED 门限上下的响应,判断是否停发 TX。
5. 注意事项
- EDCCA 本质上是能量检测门限(Threshold)。
- 如果门限设置过低:即使环境噪声很小,也会误判信道忙,导致 Wi-Fi 性能下降。
- 如果门限设置过高:设备在强干扰下仍发射数据,违反法规,测试可能 fail。
step1:在开始edcca测试之前要开启CTIA mode
开启方法:
iwpriv wlan0 driver "set_sw_ctrl 0xffff1234 1"
通过命令行打开CTIA mode,可以解决没有显示屏而无法操作WIFI的问题,
还可以避免UI的问题带到driver
注:如果设备上没有 iwpriv 工具,可以通过 ADB 将其推送到设备上:
adb push iwpriv /system/bin
验证是否开启成功:
a 确保实验室有两台或者两台以上AP,如果只有一台AP,可以找一台手机创建手机热点
如果下面指令执行不了请使用wpa_cli -g @android:wpa_wlan0 IFNAME=wlan0替代wpa_cli -iwlan0
注:wpa_cli 本质上是 wpa_supplicant 的命令行客户端。
- wpa_supplicant
- Linux/Android 下的 Wi-Fi 管理后台进程。
- 负责 Wi-Fi 认证(WPA/WPA2/WPA3)、加密、扫描以及连接管理。
- 与内核 Wi-Fi 驱动交互,并将 Wi-Fi 状态上报给系统框架(如 Android 的 Wi-Fi Service)。
- wpa_cli
- 一个命令行工具,用于与 wpa_supplicant 的控制接口(control socket)通信。
- 用户输入命令后,wpa_cli 通过 socket 将命令发送给 wpa_supplicant,然后接收执行结果并打印到终端。
b wpa_cli -iwlan0 bss_flush
wpa_cli -iwlan0 scan_results 确认只有当前连接的AP
示例:
tb8768tp1_64_bsp:/ # wpa_cli -iwlan0 bss_flush
OK
tb8768tp1_64_bsp:/ # wpa_cli -iwlan0 scan_results
bssid / frequency / signal level / flags / ssid
d2:00:ce:cf:62:aa 2437 -32 [WPA2-PSK-CCMP][ESS] wpa2wpa2
c wpa_cli -iwlan0 scan
wpa_cli -iwlan0 scan_results确认依然只有当前连接的AP,证明确实拦截了online scan
示例:
tb8768tp1_64_bsp:/ # wpa_cli -iwlan0 scan
OK
tb8768tp1_64_bsp:/ # wpa_cli -iwlan0 scan_results
bssid / frequency / signal level / flags / ssid
d2:00:ce:cf:62:aa 2437 -32 [WPA2-PSK-CCMP][ESS] wpa2wpa2
step2:关闭IPmonitor
1)使用cmd (需要root权限)
adb root
adb shell cmd wifi set-ipreach-disconnect disabled //关闭ipmonitor
adb shell cmd wifi get-ipreach-disconnect //查看是否修改成功
目的是为了防止上层触发断线,DUT回连导致检测到有信号漏出,从而影响测试结果。
step3:修改edcca门限值
注:不同的平台分成不同架构的,可以通过getprop ro.vendor.wlan.gen ,看下是gen4m/gen3/gen2
如mt8788平台就是gen3
:/ # getprop ro.vendor.wlan.gen
gen3
MT66xx gen4m
这些平台在不同频段的不同带宽均有单独的一行用于修改,哪一项fail了,就加哪一行到wifi.cfg文件里面去,里面的0xFFB2里面的B2就是触发阈值,同样如上往小了改即可
计算方法为B2=178-256=-78dbm,
EdccaTh2gBw20 0xFFB2
EdccaTh2gBw40 0xFFB2
EdccaTh2gBw80 0xFFB2
EdccaTh5gBw20 0xFFB2
EdccaTh5gBw40 0xFFB2
EdccaTh5gBw80 0xFFB2
MT66xx gen3/gen2
wifi_fw.cfg
EdccaTh 0xC000B5B5
注意,这里面的EdccaTh严格区分大小写!
最后面一个B5B5就是阈值,B5B5改小,改成B4B4/B3B3/B2B2/B1B1/B0B0/AFAF/AEAE…以此类推,
更改的值取决于你们差多少,cfg文件放在fw相同的路径下,push到wifi firmware路径下(vendor/firmware)重启手机再测试即可
重启之后连接测试wifi,在打流之前按照step1~step2执行并确认,如果还是fail,按照step3继续修改门限值
更多推荐
所有评论(0)