Wi-Fi RTT(IEEE 802.11mc、IEEE 802.11az)

Android 9 中的 Wi-Fi 往返时间 (RTT) 功能让支持此功能的设备可以测量与其他支持此功能的设备(无论是接入点 (AP) 还是 Wi-Fi Aware 对等设备,前提是设备支持 Wi-Fi Aware)之间的距离。此功能基于 IEEE 802.11mc 和 IEEE 802.11az 协议(Android 15 及更高版本提供),让应用可以使用更高的位置精确度和感知能力。

示例和源代码

要使用此功能,请实现供应商 HAL 接口。在 Android 14 及更高版本中,供应商 HAL 接口是使用 AIDL 定义的。在 Android 13 及更低版本中,供应商 HAL 接口是使用 HIDL 定义的。在 Android 8.0 中,HIDL 取代了之前的硬件抽象层 (HAL) 结构,该结构通过指定收集到接口和软件包中的类型和方法调用来简化实现。

按照 Wi-Fi 接口来使用 Wi-Fi RTT 功能。根据实现的接口,此接口为:

  • AIDL:hardware/interfaces/wifi/aidl
  • HIDL:hardware/interfaces/wifi/1.0 或更高版本。

您可以参考旧版 Wi-Fi HAL,了解它与 AIDL 和 HIDL 接口的关联方式:hardware/libhardware_legacy/+/main/include/hardware_legacy/rtt.h

实现

要实现 Wi-Fi RTT,您必须提供框架和 HAL/固件支持

  • 框架

    • AOSP 代码
    • 启用 Wi-Fi RTT:需要功能标志
  • Wi-Fi RTT (IEEE 802.11mc 或 IEEE 802.11az) HAL 支持(这意味着固件支持)

要实现此功能,请实现 Wi-Fi AIDL 或 HIDL 接口,并启用功能标志

  • device.mk(位于 device/<oem>/<device> 中)中,修改 PRODUCT_COPY_FILES 环境变量以包含对 Wi-Fi RTT 功能的支持

    PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml
    

否则,此功能所需的一切都包含在 AOSP 中。

MAC 地址随机化

为了增强隐私性,Wi-Fi RTT 事务期间使用的 MAC 地址必须是随机的,也就是说,它不得与 Wi-Fi 接口的本机 MAC 地址匹配。但是,作为例外,当设备与 AP 关联时,对于与该 AP 或其他 AP 的任何 RTT 事务,它可以使用与之关联的 MAC 地址。

验证

Android 兼容性测试套件 (CTS) 包含此功能的测试。CTS 会检测到何时启用该功能,并自动包含相关的测试。此功能也可以使用 供应商测试套件 (VTS) 进行测试。

单元测试

Wi-Fi RTT 包测试使用以下方式执行

服务测试

atest com.android.server.wifi.rtt

管理器测试

atest android.net.wifi.rtt

CTS

Android 兼容性测试套件 (CTS) 包含此功能的测试。CTS 会检测到何时启用该功能,并自动包含相关的测试。支持 Wi-Fi RTT (IEEE 802.11mc) 的接入点必须在被测设备的范围内。

CTS 测试可以使用以下方式触发

atest WifiRttTest

校准

为了使 Wi-Fi RTT 表现良好,802.11mc 或 802.11az 协议中返回的距离应在关键性能指标 (KPI) 范围内,如下节所述。

对于 11mc 协议,在列出的带宽(80 MHz、40 MHz、20 MHz)和突发大小为 8 的情况下,范围估计的 KPI 预计在误差的第 90 个百分位数时达到以下精度。

  • 80 MHz: 2 米
  • 40 MHz: 4 米
  • 20 MHz: 8 米

对于 11az 协议,天线 MIMO 配置和长训练字段 (LTF) 重复会影响精度。对于典型的手机(使用 2 根天线)和接入点(4 根天线),系统具有 2x4 MIMO 配置。对于使用 LTF 重复因子为 2 且在列出的带宽(160 MHz、80 MHz、40 MHz、20 MHz)下的这种配置,范围估计的 KPI 预计在误差的第 90 个百分位数时达到以下精度。

  • 160 MHz: 0.5 米
  • 80 MHz: 1 米
  • 40 MHz: 2 米
  • 20 MHz: 4 米

为了确保该功能的实现正常工作,校准测试是必要的。

这可以通过比较真实距离与在不断增加的距离处的 RTT 估计距离来实现。为了基本符合性,您应该针对已知已进行 RTT 校准的设备验证您的解决方案。范围校准应在以下条件下进行测试

  1. 大型开放式实验室,或没有大量金属物体可能导致异常高发生率多径的走廊。
  2. 至少一条视线 (LOS) 轨道或路径,延伸 25 米。
  3. 从轨道一端到另一端,以 0.5 米为增量的标记。
  4. 一个用于固定 RTT 功能接入点的位置,位于轨道一端,安装在地面以上 20 厘米处;以及一个用于 Android 手机(或其他正在测试的 Android 移动设备)的可移动支架,该支架可以沿轨道移动,并与 0.5 米标记对齐,也位于地面以上 20 厘米处。

  5. 应在每个标记处记录 50 个测距结果,以及与接入点的距离。应计算每个标记位置的统计信息,例如范围均值和方差。

根据步骤 5 中的结果,可以绘制一个图表,其中 x 轴为真实距离,y 轴为估计距离,并估计最佳拟合回归线。理想的设备校准将产生一条梯度为 1.0 的线,y 轴上的偏移量为 0.0 米。如果偏差在相应带宽的 KPI 范围内,则可以接受这些值。如果结果超出 KPI,则应重新校准设备功能,以使结果符合 KPI 规范。