wifi sta 与 p2p共存问题总结
1、问题描述
当前大屏共建的需求是miracast功能要开机即可用。miracast会去使能wifi p2p功能,导致wifi连接概率失败。失败的原因是wifi连接时,p2p正在占用资源,导致wifi无法完成正常的扫描,最终连接超时失败
wpa_supplicant: wlan0: Delay station mode scan while P2P operation is in progress.
2、分析过程
时间:10-31 14:49:45.614-------10-31 14:49:47.642
wpa_supplicant由于p2p流程占用导致wlan0的扫描流程被阻塞
Line 40216: 10-31 14:49:45.661 4204 4205 I C05200/wpa_supplicant: wlan0: Delay station mode scan while P2P operation is in progress
延时5S再扫描
Line 40221: 10-31 14:49:45.662 4204 4205 D C05200/wpa_supplicant: wlan0: Setting scan request: 5.000000 sec
随后上层断开连接
10-31 14:49:47.642 5268 5268 I A00500/[Settings]: Settings WifiModel -> start to removeDeviceConfig{"ssid":"H151-370_AA7D_5G","bssid":"c2:c3:7f:7d:aa:9b","bssidType":1,"capabilities":"[WPA2-PSK-CCMP][WPS][ESS]","securityType":3,"rssi":-54,"band":2,"frequency":5765,"channelWidth":0,"centerFrequency0":5765,"centerFrequency1":0,"infoElems":[{"eid":61,"content":"99080400000000000000000000000000000000000000"},{"eid":192,"content":"000000faff"}],"timestamp":465805358,"supportedWifiCategory":1,"isHiLinkNetwork":false}
wlan0取消扫描任务
Line 52509: 10-31 14:49:47.657 4204 4205 I C05200/wpa_supplicant: wlan0: Cancelling scan request
wpa层断开连接
Line 52518: 10-31 14:49:47.657 4204 4205 D C05200/wpa_supplicant: wlan0: No ongoing scan/p2p-scan found to abort
Line 52519: 10-31 14:49:47.657 4204 4205 W C05200/wpa_supplicant: Request to deauthenticate - bssid=00:00:**:**:**:00 pending_bssid=00:00:**:**:**:00 reason=3 (DEAUTH_LEAVING) state=DISCONNECTED valid_links=0x0 ap_mld_addr=00:00:**:**:**:00
Line 52520: 10-31 14:49:47.657 4204 4205 I C05200/wpa_supplicant: wlan0: State: DISCONNECTED -> DISCONNECTED
执行清理动作,连接失败
Line 52529: 10-31 14:49:47.657 4204 4205 I C05200/wpa_supplicant: wlan0: CTRL-EVENT-DSCP-POLICY clear_all
3、解决方案
目前我们使用的模组在p2p模式打开时,wifi的连接会受到限制,因此我们必须在连接wifi的时候关闭p2p
方案1:在框架层连接wifi时附带p2p的disable接口,这样在wifi连接时p2p不会使能也就不会影响wifi的连接
https://gitee.com/cooperation-team-goke/vendor_aix/pulls/197

但是后来发现该方案会破坏流程与wifi状态机的一致性,导致流程完全不可控,进而衍生其它的问题,故不可取


方案2:开机即自动创建永久Go组(避免后续p2p一直扫描影响wifi连接),由应用层感知wifi连接的动作,在连接wifi时直接从最顶层关闭miracast投屏,连接完成后再打开miracast投屏。
但是此时source端无法稳定搜索到tv设备
现象:
-
、tv连接到工作在149信道AP的时候,source端(手机)能稳定搜索到tv
-
、tv连接到工作在非149信道AP的时候,source端(手机)无法搜索到tv
-
、不连接wifi的时候只打开wifi开关,source端(手机)概率无法搜索到tv
分析得知:
source能搜索到TV的时候,tv端创建GO组成功;
source不能搜索到TV的时候,tv端创建GO组失败

深入分析创建组失败的原因如下:
艾克斯采用的wifi模组不支持跨频段并发,在连接到A信道的wifi的时候不支持同时在信道B作为GO,所以创建组会失败。

我们在前面已经连接了wifi,而其信道刚好就是149(5745MHZ),因此我们只有在此信道创建GO才能成功
GO创建详细流程如下

我们在上层使用了5G的band

所以使用信道149-5745Mhz创建Go
int P2pStateMachine::GetAvailableFreqByBand(GroupOwnerBand band) const

方案3:因为当前模组不支持跨频段并发,所以还需要确保p2p和sta在同一频率上,所以在开启miracast投屏功能时,miracast框架层创建的永久p2p group还必须以连接的wifi的频率作为基准创建Go,否则以5745Mhz的默认频率创建Go。
https://e.gitee.com/kunyuan-hongke/repos/cooperation-team-goke/vendor_goke_gk6780/pulls/96

最终方案:
-
、miracast应用开机即打开,投屏开机即可用
-
、miracast框架层直接创建一个永久p2p group,直接成为Go
-
、wifi在连接上ap时,创建组的时候信道采用当前连接的wifi信道
-
、在连接wifi的时候关闭miracast,连接上之后再打开
至此,wifi的sta和p2p的共存问题解决
更多推荐
所有评论(0)