当遇到客户测试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继续修改门限值
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐