一. 问题描述:

    rk3568打开miracast投屏。手机可以搜索到该设备并且能成功投屏。但是windows 11 pc无法发现该设备。

二.问题分析过程:

    手机能搜索到,但是pc搜索不到却能搜索到别的设备。说明rk3568向外发送的beacon帧和probe response帧的某些字段和别的设备发送的对应的帧的某些字段有差异!导致pc在处理的时候有差异!所以需要抓取空口包!

 1.确认rk3568做sink端创建Go时选择的工作信道

        通过使用wifi墨盒的找ap功能,可以看到rk3568的Go工作在149信道

        

2,在149信道上抓取空口,查看rk3568向外发送的beacon帧和probe response帧

     通过分析抓取的wifi空口,发现了一个很奇怪的现象。没有抓到rk3568发送的任何报文packet,一个beacon帧都没有抓到!---当时陷入了迷茫!完全颠覆以往的认知!

     遂做了以下 尝试:

        实验:
            1.华为mate60开启手机热点工作在5G 149信道上
            2.小米路由器关闭wifi双频合一,设置5G的wifi也工作在5G 149信道上。 2.4G的wifi工作在11信道 
            3.用这个rk3568去分别连接这3个热点,并同时抓包!
        结果
            1.连接小米路由器工作在149信道的5G wifi      ---失败! 抓包也抓包不到rk3568发送的Associate req报文!
            2.连接mate60开启的工作在149信道的5G热点 ---成功! 抓包也只能抓到mate60的发出的Associate response报文,抓不到rk3568的Associate req报文!
            3.连接小米路由工作在11信道的2G wifi            ---成功! 抓包也能抓到rk3568发的Associate req报文!
        结论:
            rk3568在5G信道上发送的wifi信号,部分网卡可能解析不了,无法接收!

        查阅资料可能性最大的原因:
            rk3568在149信道上发送的wifi信号 非标准前导码:GO可能使用了极短的、非标准的、或与网卡不兼容的前导码。

3.修改逻辑,让rk3568创建Go的时候工作信道选择在2.4G的信道

    windows pc依然无法发现rk3568设备。但在2.4G信道成功抓到了rk3568发送的beacon帧和probe response帧!然后对比其它windows pc能扫描到的设备发送的beacon帧。发现有如下典型的差异!

rk3568的beacon帧中,Primary Device Type为0!根据经验判断这出明显的差异可能就是windows pc无法扫描到!

4.增加配置Primary Device Type验证PASS。windows pc能发现rk3568设备

三.最终解决方案

    1.创建p2p组时,频率选择2.4G频率:

    具体修改文件:foundation\CastEngine\castengine_wifi_display\services\impl\scene\wfd\wfd_sink_scene.cpp

    2.wpa_supplicant.conf中配置device_type:

     具体修改文件:foundation\communication\wifi\wifi\relation_services\etc\init\unix_socket\wpa_supplicant.conf

3.rk3568在5G信道发送的wifi信息部分网卡接收不到的问题跟硬件强相关!可暂不关注!因为其它产品的硬件大概率不会有此问题!

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐