Wi-Fi STA低功耗指南

省电流程

Based on DTIM

Based on DTIM

典型省电流程如上图所示:

  • STA连接AP时, 与AP交换与休眠相关的关键参数:
    • Beacon周期 - AP周期性广播beacon, beacon中会携带指示已休眠的STA是否有单播包要接收

    • DTIM周期 - 为beacon interval的整数倍, DTIM beacon中会指示是否有广播包要发送, 并在随后的beacon周期中发送广播包

    • Listen Interval - STA在睡眠状态时, 需要AP为STA缓存单播包的最长时间

  • 当睡眠条件具备时(通常是STA没有包要收发时)STA通知AP自己将要进入休眠模式

  • 得到AP确认后, STA关闭RF/MAC电源或时钟, 进入休眠状态

  • 当STA处于休眠状态时, AP会缓存发向STA的单播包; 如果AP有广播包要发送,会在随后的DTIM beacon中通知STA

  • STA在DTIM周期醒来, 查看是否需要接收广播包; 如果有广播, 则醒来接收广播包, 如果有单播包要接收, 则通知AP自己已醒, 随后AP向STA发送单播包

STA定期睡眠和唤醒, 在睡眠状态下, RF、MAC和MODEM理论上处于关闭状态, 在Wi-Fi与BLE共存模式下, RF可能无法关闭.

进一步降低功耗

省电流程 可以看到, 在休眠模式下, STA每个DTIM周期都必须醒来, 这在某些场景下可能成为耗电的主要原因, 特别是当DTIM值很小时(如DTIM为1时)为降低STA醒来频率, BK 提供了一种机制: 仅在listen interval间隔醒来.流程如下:

Based on Listen Interval

Based on Listen Interval

应用可以通过 power_save_set_listen_int(10) 设置listen interval。

通常listen interval越大,节能效果越好, 但listen interval越大, 性能与连接稳定性越差.

注解

  1. 因为AP会在DTIM间隔发送广播帧, 因此”仅在 listen interval醒来”机制使能时, STA可能会错失广播包;

  2. 如果listen interval设置过长, 可能会导致AP为STA缓存过多的单播包, 当AP内存不足时, 可能会引起丢包; 这两种情况都会影响Wi-Fi性能, 连接稳定性。

  3. 这种机制尽适合那些对性能要求不高, 但对功耗要求特别高的应用。

关闭省电模式

默认STA休眠开启, 用户可通过 bk_wlan_mcu_ps_mode_disable()bk_wlan_dtim_rf_ps_mode_disable() 关闭休眠, 通过 bk_wlan_dtim_rf_ps_mode_enable()bk_wlan_mcu_ps_mode_enable() 使能休眠.要注意, 某些特定应用中, STA休眠有特定的要求, 如:

重要

  1. 当STA与AP共存时, 由于AP存在, 即使开启, 实际上也不会进入低功耗

  2. 当STA与BLE共存时, 休眠模式必须开启. 因为STA RF在切向BLE时, 应该先进入休眠状态, 否则可能造成丢包

  3. 对功耗不敏感的设备, 如冰箱, 电饭煲等, 为获取最佳性能, 可选择关闭休眠

wifi 保活测试

wifi 保活测试可参考 wifi 低压保活DTIM 休眠测试