Wi-Fi Direct(直连)
术语背景:
Miracast 是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的 无线显示标准 。支持此标准的消费性电子产品(又称3C设备)可透过无线方式分享视频画面,例如手机可透过Miracast将影片或照片直接在电视或其他设备播放而无需任何连接线,也不需透过无线热点(AP,Access Point)。
Wi-Fi直连(英语:Wi-Fi Direct),之前曾被称为 Wi-Fi点对点(Wi-Fi Peer-to-Peer),是一套无线网络互连协议,让wifi设备可以不必透过无线热点(Access Point,AP),以点对点的方式,直接与另一个wifi设备连线,进行高速数据传输。这个协议由Wi-Fi联盟发展、支持、授与认证,通过认证的产品将可获得Wi-Fi CERTIFIED Wi-Fi Direct®标志。
无线通信技术综合对比:
基本工作原理
Wi-Fi Direct 基于 IEEE 802.11 协议族,并引入了一些新的机制来实现点对点通信:
1.Group Formation(组形成)
两个设备协商谁作为 Group Owner【群组所有者】【简称GO】 。GO 负责管理 IP 分配、信道选择、安全认证等。其他设备为 Client,连接到 GO。
- 服务发现(Service Discovery)
支持 SSDP、DNS-SD 等协议,用于查找其他设备上可用的服务(如打印机、媒体服务器)。用户可以通过搜索找到附近的设备并发起连接。
- 安全连接机制(WPS/WPA2/WPA3)
使用 WPS(Wi-Fi Protected Setup) 进行快速配对。使用 WPA2/WPA3 加密保证数据传输的安全性。
Wi-Fi Direct 的所有新增机制(P2P 发现、GO 协商、WPS 配对)都只在 wifi—802.11 的 MAC 子层(数据链路层)里完成,上层仍跑标准 TCP/IP 协议栈,不引入任何额外“传输层”。
关键概念解释
- Group Owner (简称GO) :类似临时 AP,负责管理连接和网络配置
- Client :连接到 GO 的设备
- Device Discovery :发现附近支持 Wi-Fi Direct 的设备
- Negotiation【协商】 :协商哪个设备成为 GO
- WPS(Wi-Fi Protected Setup) :快速配对机制,包括 PBC(按钮连接)、PIN 码配对等方式
- RTSP / Miracast :常见的应用层协议,用于视频投屏
WiFi Direct 主要特性:
WiFi Direct 应用场景:
Wi-Fi Alliance(Wifi联盟、WFA) 向成员厂商/芯片厂提供 Wi-Fi Direct 认证测试套件与参考 SDK(常称 Wi-Fi Direct SDK 或 P2P SDK),里面封装了:
- P2P 设备发现(Device Discovery)
- 服务发现(Service Discovery,可选)
- Group Owner 协商与 WPS 配对
- 连接建立、密钥管理(WPA2/WPA3)
- L2 层数据路径初始化(Ethernet-like)
厂商拿到 SDK 后,在驱动/固件里实现 P2P-MLME 动作帧,并向上暴露统一接口(Linux 下即 nl80211 命令与 wpa_supplicant 的 P2P_* 命令集)。Android 再把 wpa_supplicant 封装成 WifiP2pManager API,应用层直接调用即可,无需再管底层细节
Wi-Fi Display(无线显示)
Wi-Fi Display 是Wi-Fi联盟制定的一个标准协议, 简称WFD,它结合了Wi-Fi标准和H.264视频编码技术。利用这种技术,消费者可以从一个移动设备将音视频内容实时镜像到大型屏幕,随时、随地、在各种设备之间可靠地传输和观看内容。Miracast实际上就是Wi-Fi联盟对支持WiFi Display功能的设备的认证名称,产品通过认证后会打上Miracast标签
Wifi Display 涉及的技术及协议框图
Miracast使用的 应用层 技术协议栈
常见的投屏方案与协议组合
不同的投屏技术方案会选择不同的协议组合:
Android14中的WiFi—P2P
Google文档:
中文:source.android.google.cn/docs/core/c…
英文:source.android.google.cn/docs/core/c…
P2P HIDL 定义:
android14/
hardware/interfaces/wifi/1.0/***.hal
hardware/interfaces/wifi/1.1/***.hal
hardware/interfaces/wifi/1.2/***.hal
hardware/interfaces/wifi/1.3/***.hal
hardware/interfaces/wifi/1.4/***.hal
hardware/interfaces/wifi/1.5/***.hal
hardware/interfaces/wifi/1.6/***.hal
>>>android14/hardware/interfaces/wifi/1.0/IWifiP2pIface.hal
P2P AIDL 定义:
android14/
hardware/interfaces/wifi/aidl/*/***.aidl
>>>android14/hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiP2pIface.aidl
P2P Supplicant HIDL 定义:
android14/
hardware/interfaces/wifi/supplicant/1.0/***.hal
hardware/interfaces/wifi/supplicant/1.1/***.hal
hardware/interfaces/wifi/supplicant/1.2/***.hal
hardware/interfaces/wifi/supplicant/1.3/***.hal
hardware/interfaces/wifi/supplicant/1.4/***.hal
P2P Supplicant AIDL 定义:
android14/
hardware/interfaces/wifi/supplicant/aidl/*/***.aidl
>>>P2pGroupCapabilityMask.aidl
>>>ISupplicantP2pIface.aidl
>>>P2pStatusCode.aidl
>>>ISupplicantP2pNetwork.aidl
>>>P2pGroupStartedEventParams.aidl
>>>P2pClientEapolIpAddressInfo.aidl
>>>P2pProvDiscStatusCode.aidl
>>>ISupplicantP2pIfaceCallback.aidl
>>>P2pFrameTypeMask.aidl
WiFi—P2P 支持
AOSP(Android 开源项目)代码,启用 Wi-Fi Direct 的功能。具体操作是:在位于 device/<oem>/<device> 目录下的 device.mk 文件中,修改 PRODUCT_COPY_FILES 环境变量,以添加对 Wi-Fi Direct 功能的支持:
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
android.hardware.wifi.direct.xml
<!-- This is the standard feature indicating that the device includes WiFi Direct. -->
<permissions>
<feature name="android.hardware.wifi.direct" />
</permissions>
WiFi—P2P 应用创建
- WiFi—P2P 初始设置
- WiFi—P2P 发现
- WiFi—P2P 连接
- WiFi—P2P 数据传输
具体参考Google文档: developer.android.google.cn/develop/con…
本文参考学习:
Miracast技术详解(一):Wi-Fi Display | codezjx's Home