Wifi唤醒

前言

因为项目需求,需要实现Wifi唤醒功能,所以简单记录一下

简介

​ 网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引导(Boot Loader)或运行状态。无线唤醒(Wake-on-Wireless-LAN,WoWLAN)作为WOL的补充技术,使用无线网卡去唤醒计算机。
wifi唤醒终端设备是指在终端设备通过wifi连接到路由器(AP)从而加入局域网或者Internet,在同一个网络中,通过其它终端设备(如PC)给唤醒终端设备发送唤醒数据包,从而实现远程唤醒终端。

原理

wifi唤醒主机CPU的原理是在终端设备整机进入休眠后,WIFI模块监听到符合唤醒数据包时,wifi模块恢复部分工作,给CPU一个唤醒信号。唤醒信号由HOS_WKAE GPIO给出(博通、RTL wifi模块支持唤醒功能都具备该功能引脚)。从而实现WIFI 唤醒CPU或者终端设备。

  1. wifi芯片进入休眠模式后,每隔固定的间隔(DTIM interval)起来查询AP端有没有数据到达;
  2. DTIM interval的值就是n个Beacon的间隔,取决于AP缓存数据的能力;
  3. 任何一个数据帧都可以唤醒,这是缓存在ap那边的,不会丢,ap在发给sta前会看sta的状态,如果其处于低功耗状态,ap就把数据放自己buf里面,然后通过beacon告诉sta ap侧有给其缓存数据,Sta收到beacon,看到ap通知就会醒来把数据请求下来;

如何根据Beacon帧确定有自己的数据?
每一个Beacon的帧中都有一个TIM(traffic indication message)信息,它主要用来由AP通告它管辖下的哪个STA有信息现在缓存在AP 中,而在TIM中包含一个Bitmap control 字段,它最大是251个字节,每一位映射一个STA,当为1时表示该位对应的STA在AP的缓存中有信息;

DTIM(Delivery Traffic Indication Message )
DTIM用于AP传统节电模式中,多点的应用,即由AP通过设置DTIM的间隔(缺省是一个beacon时间,100ms),根据这个间隔发送组播流量。

Beacon-Interval(信标间隔)
AP 广播Beacon 的周期,这个值变大,有助于client端省电。这个值变小,有助于提高client端连接速度。以Beacons 封包发送SSID的速率是1Mbit/S.

Listen-Interval
STA即Client接收Beacon 的周期,STA 每隔Listen-Interval 接收Beacon并解码其中的TIM,如果TIM 指示没有数据缓存,STA 就可以立刻转入Doze 状态,如果TIM 指示其有数据缓存,STA 就要向AP 发一个竞选控制包Poll,AP 在收到Poll 后就可以向该Poll 的源STA 发送一个为它缓存的数据包。

为什么主机CPU已经休眠了,Wifi还能接受到唤醒数据包并发出唤醒信号?
因为wifi芯片和主机CPU是两块独立的芯片,主机CPU休眠,而Wifi芯片依然可以工作(备注:wifi芯片通过USB与主机连接,主CPU休眠后,USB接口依然可以给wifi芯片供电)

连接AP的情况下,wifi芯片会进入休眠模式;
主机CPU已经休眠了,Wifi芯片是如何唤醒它的?
WIfi芯片发出的唤醒信号不是直接给到CPU的,唤醒信号给到MCU后,由MCU来唤醒CPU

WiFi唤醒遇到的问题(MTK7961驱动为例)

1.发送唤醒包后,wifi芯片WAKE GPIO电平没有变化

  1. 检查wifi驱动中WOW配置是否开启在这里插入图片描述

  2. 检查wifi是否正常连接AP。

  3. 检查系统正常工作时能否正常收到唤醒数据包,例如用tcpdump命令:tcpdump -i wlan0 -vnn port 9 。在这里插入图片描述
    3.系统休眠后,检查芯片供电是否存在异常,开发中遇到系统休眠后USB供电电压降低或者没有供电的情况,会导致wifi芯片无法工作

2.wifi芯片发出WAKE信号后,系统未能唤醒

  1. 检查系统WIFI唤醒功能是否开启了(这个要看具体项目了)
  2. 使用示波器检测唤醒信号间隔时间(MUC有可能是通过检测电平变化来检测唤醒信号的,如果间隔时间太短,可能会被忽略,可以通过修改固件配置来解决:GpioInterval 70000)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值