1. HiCar 如何交换 Wi-Fi Direct 连接参数?
在 HiCar 的连接流程中,蓝牙仅用于控制信道(Command Channel),实际的数据传输主要依赖 Wi-Fi Direct。为了完成 Wi-Fi Direct 连接,车机和手机需要交换以下关键信息:
-
Wi-Fi Direct 设备名称
-
SSID(Wi-Fi Direct 网络名称)
-
密码(P2P Group 密码)
-
Wi-Fi 频道(Channel)
-
IP 地址分配方式
这些参数必须先在 蓝牙 RFCOMM 信道上交换,然后才能让 Wi-Fi Direct 进行真正的数据传输。
2. 交换 Wi-Fi 连接参数的详细流程
整个流程通常如下:
(1) 车机与手机通过 BLE 发现并建立基础蓝牙连接
-
车机通过 BLE 广播 发送 HiCar 服务数据。
-
手机扫描到车机后,尝试连接 BR/EDR 蓝牙。
-
手机使用 SDP(Service Discovery Protocol) 发现车机上的 HiCar 服务端口。
-
手机通过 RFCOMM 连接到车机上的 HiCar 认证服务。
(2) 手机与车机通过 RFCOMM 进行 HiCar 认证
-
车机发送 HiCar 认证请求,要求手机进行身份验证。
-
手机返回 HiCar 认证数据,例如设备唯一标识、加密信息等。
-
车机验证认证数据后,确认连接。
(3) 车机通过 RFCOMM 发送 Wi-Fi Direct 连接参数
-
车机会向手机发送 Wi-Fi Direct 连接参数,包括:
-
SSID(Wi-Fi 网络名称)
-
密码(WPA2 密钥)
-
Wi-Fi 频道
-
是否作为 Group Owner(P2P GO)
-
-
手机解析这些参数,并使用 Wi-Fi Direct 连接到车机。
(4) 手机使用 Wi-Fi Direct 连接到车机
-
手机根据车机提供的 Wi-Fi 信息,主动连接 到车机的 Wi-Fi Direct 热点。
-
车机分配 IP 地址,建立 TCP 连接。
(5) HiCar 切换到 Wi-Fi Direct 进行数据传输
- 蓝牙仅用于控制命令,后续所有数据通信(如视频、音频、控制指令)都通过 Wi-Fi Direct 进行高速传输。
3. 为什么 Wi-Fi 参数要通过 RFCOMM 传输?
HiCar 选择在 RFCOMM 信道 上传输 Wi-Fi 连接参数,主要有以下几个原因:
(1) BLE 广播不适合大数据传输
-
BLE 广播的数据长度受限(31 字节 / 255 字节扩展),不适合传输复杂的 Wi-Fi 连接参数。
-
BLE 主要用于设备发现,不适合传输安全敏感数据。
(2) RFCOMM 是面向流的可靠传输
-
RFCOMM 基于 L2CAP,提供可靠的、有序的数据传输,适合传输 Wi-Fi 连接参数等关键数据。
-
如果直接使用 L2CAP(不经过 RFCOMM),会需要额外的协议来保证可靠性,而 RFCOMM 天然支持。
(3) Wi-Fi 连接参数需要加密传输
-
HiCar 认证过程中,手机和车机会进行 身份验证,并使用安全通道传输敏感数据。
-
Wi-Fi Direct SSID 和密码 属于安全敏感信息,必须通过 加密的 RFCOMM 信道 传输,防止被第三方窃取。
(4) 兼容性
-
RFCOMM 是经典蓝牙(BR/EDR)中最常用的串行通信协议,几乎所有蓝牙芯片都支持。
-
使用 RFCOMM 传输参数,可以兼容不同厂商的车机和手机,而无需依赖特殊的蓝牙功能。
4. 总结
阶段 | 技术 | 用途 |
---|---|---|
设备发现 | BLE 广播 | 车机向手机发送 HiCar 广播,提供服务信息 |
蓝牙连接 | BR/EDR 蓝牙 + RFCOMM | 手机连接车机的 RFCOMM 信道,进行认证 |
身份验证 | RFCOMM | 手机和车机交换身份验证信息 |
Wi-Fi 参数交换 | RFCOMM | 车机向手机发送 Wi-Fi Direct SSID、密码等信息 |
Wi-Fi 连接 | Wi-Fi Direct | 手机连接到车机的 Wi-Fi Direct 网络 |
数据传输 | Wi-Fi Direct | 传输 HiCar 画面、音频、控制指令等 |
核心结论
✅ Wi-Fi 连接参数确实是在 RFCOMM 信道中交换的,因为:
-
BLE 广播不能传输大数据,而 RFCOMM 可靠且支持加密。
-
RFCOMM 是 HiCar 认证通道的一部分,可以安全地交换 Wi-Fi 连接信息。
-
这样可以避免传统蓝牙配对,提高连接速度,同时保证安全性。
所以,HiCar 采用蓝牙 RFCOMM 进行认证并交换 Wi-Fi Direct 连接参数,然后切换到 Wi-Fi Direct 进行数据传输,实现了无配对的高速连接体验。