与android wifi 电流相关的点
最近要更换平板电脑中wifi的firmware,所以老是在和wifi连接后的电流打交道,现在总结一下。
wifi连接后,当平板电脑灭屏以后,根据Settings中配置的休眠策略,wifi可能会断开连接。
当在Settings中配置休眠策略为“始终连接”时,wifi在平板灭屏后,不会断开连接,这样可能会有app在后台进行通信,
导致平板无法休眠,电流就比较高。
当在Settings中配置的休眠策略为“断开连接”时,wifi会在平板灭屏17分钟后断开连接,这17分钟是这么定下来的,在
第15分钟的时候,wifi service会判断当前是不是“紧急呼叫模式”(电话会有),如果是,就立即断开连接;如果不是,
则在2分钟后断开连接。但是是否能够断开连接还需要看当前是否有app会拿着wifi wake lock,如果有app持有这个锁,
当前也无法断开连接。这样也会导致电流比较高。
在灭屏与断开连接之间的十几分钟内,如果是正常情况下,当平板的cpu休眠后,平均电流应该只比不打开wifi的情况高
1ma(这个值是wifi芯片休眠电流);但是经常在这种情况下测量的平均电流值会比1ma要高,这就需要我们分析原因了。
在此记录下与此时电流有关的一些点,可能还不完全,以后如果再发现了,再进行补充。
1.wifi firmware
wifi firmware 是与wifi休眠时候电流高关系最大的一个,而且由于我们无法知道里面的逻辑,所以只能请求厂家
进行支持。
2.dtim值
dtim值会影响wifi firmware起来接收beacon报文的行为,它代表wifi芯片会每隔几个beacon的时间间隔醒来接收
一次beacon报文,一般设置为3。如果dtim值设置较小,比如为1,wifi芯片就会醒来比较频繁,导致电流比预计的要高;
如果dtim值设置较大,比如5,可能会导致当wifi休眠后丢包比较严重,比如你去ping平板,可能会有ping不通的现象。
3.SDIO引脚
wifi芯片的SDIO引脚配置错误也会导致在休眠后电流较高,所以需要检查SDIO是否配置正确,当休眠的时候,
引脚是不是错误的被拉高或者拉低。(这一项我也不太明白,需要以后再学习一下)
4.gsf
gsf是google的服务框架,它在wifi连接和未连接两种情况下的行为是不一样的。如果wifi连接,它会每隔一段时
间就唤醒一次cpu,尝试去连接google的服务器,也会导致平均电流较高。
5.其他app
如果有app持有rtc_wakeup的定时器,此app也会唤醒cpu进行操作,导致平均电流较高。
补充:移动开发 , Android ,