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

Android 9 中的 Wi-Fi 往返时间 (RTT) 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 Wi-Fi 感知对等设备(如果设备支持 Wi-Fi 感知功能)。此功能基于 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

实现

要实现 WLAN RTT,您必须提供框架和 HAL/固件支持:

  • 框架:

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

如需实现此功能,请实现 Wi-Fi AIDL 或 HIDL 接口,另外还要启用功能标志:

  • 在位于 device/<oem>/<device>device.mk 中,修改 PRODUCT_COPY_FILES 环境变量,以便支持 WLAN 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 相关联,则此设备可能会使用与其相关联的 MAC 地址来处理与此 AP 或其他 AP 之间的任何 RTT 事务。

验证

这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测何时启用了这项功能,并会自动包含相关测试。您也可以使用供应商测试套件 (VTS) 来测试此功能。

单元测试

使用以下测试执行 WLAN RTT 软件包测试:

服务测试:

atest com.android.server.wifi.rtt

Manager 测试:

atest android.net.wifi.rtt

CTS

这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测何时启用了这项功能,并会自动包含相关测试。支持 WLAN 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 估算距离基本一致,则您应该针对已知已进行 RTT 校准的设备验证解决方案。距离校准应在下列条件下进行测试:

  1. 大型开放实验室或没有大量金属物体(金属物体可能会导致多路径异常高发)的走廊。
  2. 视线 (LOS) 路线或路径至少要延长 25 米。
  3. 从路线一端到另一端以每次增加 0.5 米的方式标记。
  4. 选择一个位于路线一端的位置来安装支持 RTT 的接入点(位于地面以上 20 厘米处);一个可移动支架(也位于地面上方 20 厘米处),用于沿路线移动 Android 手机(或接受测试的其他 Android 移动设备),可移动支架应与每隔 0.5 米出现的标记对齐。

  5. 每个标记处应记录 50 个距离结果,同时应记录相应标记距离接入点的距离。应在每个标记位置处计算统计信息(例如距离均值和方差)。

您可以根据第 5 步中的结果绘制一个图表,其中 X 轴为真实距离,Y 轴为估算距离,以及一条估算出的最合适的回归路线。理想的设备校准会产生一条梯度为 1.0 的线,且 Y 轴的偏差为 0.0 米。如果这些值的偏差落在相应带宽的 KPI 范围内,则这些偏差是可接受的。如果结果超过 KPI 范围,则应该重新校准设备功能,使结果符合 KPI 规范。