rk3399 usbwifi Miracast调试

本文介绍在RK3399平台上使用rtl8812au芯片实现Miracast功能遇到的问题及解决方案。针对手机无法扫描到设备的情况,通过分析上层配置、驱动及协议问题,最终通过添加特定补丁修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

在RK3399 android7.1.2平台上调试 rtl8812au完成后,客户需要实现Miracast功能,后与rk技术支持工程师调试完成此功能。


问题描述:

在RK3399平台上测试发现使用 rtl8812au usbwifi时,Miracast功能rk3399设备可以扫描到手机设备,但是手机设备扫描不到rk3399设备。

原因分析:

        1.确定是否与上层配置有关:在换用rtl8812au芯片之前,rk3399上面使用AP6359芯片,使用之前带AP6356SA的RK3399测试Miracast功能,发现MIracast功能正常,设备可以互相扫描到,同时可以进行投屏,确定上层配置没有问题。
        2.确定是否与驱动有关:由于确定与上层配置无关,猜测可能与usbwifi驱动有关,根据与wifi芯片原厂驱动工程师沟通,确定8812au usbwifi驱动没有问题,同时使用rtd1295开发板上外接8812au设备,测试Miracast功能,经验证,在rtd1295上面8812au的Miracast功能正常。
        3.经验证发现,上层配置与wifi驱动都没有问题,需重新确定调试方向,可能与RK上层应用与8812au驱动之间的协议出现问题,经RK的FAE测试发现在RK平台上,确定在rk3399平台上层配置没有实现Miracast功能,最后由RK工程师提供Miracast补丁进行添加,Miracast功能正常。


解决方案:

添加patch

diff --git a/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c
    index 5d24799..a104b64 100644
    --- a/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c
    +++ b/bcmdhd/wpa_supplicant_8_lib/driver_cmd_nl80211.c
    @@ -168,5 +168,51 @@ int wpa_driver_set_ap_wps_p2p_ie(void *priv, const struct wpabuf *beacon,
 				 const struct wpabuf *proberesp,
 				 const struct wpabuf *assocresp)
     {
    -        return 0;
    +
    +
    +        char *buf;
    +	const struct wpabuf *ap_wps_p2p_ie = NULL;
    +
    +	char *_cmd = "SET_AP_WPS_P2P_IE";
    +	char *pbuf;
    +	int ret = 0;
    +	int i, buf_len;
    +	struct cmd_desc {
    +		int cmd;
    +		const struct wpabuf *src;
    +	} cmd_arr[] = {
    +		{0x1, beacon},
    +		{0x2, proberesp},
    +		{0x4, assocresp},
    +		{-1, NULL}
    +	};
    +
    +	wpa_printf(MSG_DEBUG, "%s: Entry", __func__);
    +	for (i = 0; cmd_arr[i].cmd != -1; i++) {
    +		ap_wps_p2p_ie = cmd_arr[i].src;
    +		if (ap_wps_p2p_ie) {
    +			buf_len = strlen(_cmd) + 3 + wpabuf_len(ap_wps_p2p_ie);
    +			buf = os_zalloc(buf_len);
    +			if (NULL == buf) {
    +				wpa_printf(MSG_ERROR, "%s: Out of memory",
    +					   __func__);
    +				ret = -1;
    +				break;
    +			}
    +		} else {
    +			continue;
    +		}
    +		pbuf = buf;
    +		pbuf += snprintf(pbuf, buf_len - wpabuf_len(ap_wps_p2p_ie),
    +				 "%s %d",_cmd, cmd_arr[i].cmd);
    +		*pbuf++ = '\0';
    +		os_memcpy(pbuf, wpabuf_head(ap_wps_p2p_ie), wpabuf_len(ap_wps_p2p_ie));
    +		ret = wpa_driver_nl80211_driver_cmd(priv, buf, buf, buf_len);
    +		os_free(buf);
    +		if (ret < 0)
    +			break;
    +	}
    +	
    +	return ret;
    +
    }

文件修改及编译路径

    分别编译下面目录
    hardware/broadcom/wlan/bcmdhd/wpa_supplicant_8_lib
    external/wpa_supplicant_8/
    重新打包文件升级

rk3399是一款高性能的处理器芯片,常用于嵌入式系统中。调试wifi模块时,我们首先需要确保芯片的硬件连接正确,例如接好天线和电源线。其次,我们需要使用适当的驱动程序和固件来支持wifi模块的工作。在进行驱动程序和固件的配置时,需要注意与rk3399处理器的兼容性,保证驱动程序能够正常识别和运行wifi模块。 在确认硬件连接和驱动程序配置正确之后,我们就可以通过命令行或者图形界面来打开和配置wifi模块。通过命令行工具,我们可以使用一系列的指令来扫描周围的wifi信号、连接指定的wifi网络以及设置IP地址和DNS等网络参数。通过图形界面工具,我们可以更直观地进行wifi模块的配置,例如在操作系统的网络设置界面中进行wifi网络的选择和连接。 在调试过程中,还需要注意一些常见的问题,例如信号强度不足、网络连接不稳定等。可以通过设置不同的天线位置、调整天线方向和增加信号中继设备等方法来改善信号质量。此外,还可以通过升级固件和驱动程序的方式来解决一些稳定性问题。 总而言之,调试rk3399上的wifi模块需要注意硬件连接、驱动程序和固件的配置,以及信号质量和连接稳定性等方面的问题。只有充分理解这些方面,并根据实际情况进行调试和优化,才能让wifi模块在rk3399上得到稳定和高效的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值