最近要更換平板電腦中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進行操作,導致平均電流較高。