项目场景:
在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/
重新打包文件升级