存在传感器(人体邻近感应)

以下部分详细介绍了供 OEM 选择存在传感器等组件来为上面详述的内置设备体验提供支持的准则。 它涵盖了所有传感器的一般要求,以及针对特定设备体验的具体指南。 存在传感器是“人体”类型的邻近感应传感器。 阅读本部分之前,请先查看设备体验和存在感测的相关术语。

本部分旨在为希望在系统上安装存在传感器硬件的 OEM 提供指导。 这些准则表示最简可行传感器设置。 Microsoft 鼓励安装性能优于此处标准的硬件。

Microsoft 不会测量范围、延迟、距离和功率,但 OEM 和 ODM 应根据 HLK 要求验证功能。 如果系统报告了距离,则应测量其准确性。

所有人体存在传感器的重要设计详细信息和一般要求

如果邻近感应传感器支持人体存在功能,则必须支持以下检测类型:

DEFINE_PROPERTYKEY(DEVPKEY_Sensor_HumanPresenceDetectionType,0xd4247382, 0x969d, 0x4f24, 0xbb, 0x14, 0xfb, 0x96, 0x71, 0x87, 0xb, 0xbf, 81); //[VT_UI4]

下面列出了当前定义的检测类型:

用法名称 使用类型 用法说明
人体存在检测类型:供应商定义的非生物识别 Sel 使用供应商定义的非生物识别方法检测是否存在(一人或多人)。 这用于明确证实传感器正在使用与下文定义的生物识别无关的检测。 如果没有明确证实,主机就无法假设设备未使用生物识别。
人体存在检测类型:供应商定义的生物识别 Sel 使用供应商定义的生物识别方法检测是否存在(一人或多人)。 这一类适用于利用下面尚未定义的生物识别的人体存在传感器。
人体存在检测类型:面部生物识别 Sel 通过扫描(例如,通过低分辨率摄像机)人脸来检测是否存在人体(例如,使用 Viola-Jones 目标检测)。 不执行人脸辨别或面部特征检测。 这种检测类似于现有数码相机的检测,可在人脸周围放置边界框。
人体存在检测类型:音频生物识别 Sel 通过扫描(例如,通过麦克风)人类声音(例如预定义的关键字、普通谈话、吵嚷声、掌声)来检测是否存在人体。 不执行声音或用户辨别或音频特征检测。

重要

所有存在传感器必须准确报告上述检测类型。

1 类人体存在传感器要求

度量值 指标 注释
传感器范围 .2 - 1.2 米。注意:这是最小可行范围。允许具有更佳范围的传感器。 直接测量(如上定义)时,用户必须能够在 1.2 米处触发唤醒。
传感器延迟 <.33 秒 这与 II 类传感器延迟相同。 此要求定义从固件识别是否存在人体到操作系统收到该消息的时间。 众所周知,从传感器收到信号后,操作系统的唤醒延迟时间不定。
传感器功率 - 使用中 <80 兆瓦(对于内部传感器);外部传感器的功耗取决于总线的功率限制;所有测量均取平均值。 此测量封装整个传感器子系统,包括仅根据唤醒和锁定场景使用的发射器、接收器以及任何 LED。
传感器功率 - 待机 <25 兆瓦(对于内部传感器);外部传感器的功耗取决于总线的功率限制;所有测量均取平均值。 注意,这是最大峰值耗用功率。
准确性 - 距离报告 +/- 5 厘米 测量位置:45 厘米(12 英寸)、75 厘米(29.5 英寸)和 120 厘米(47.2 英寸)。 仅当此传感器支持距离时才需要。

2 类人体存在传感器要求

度量值 指标 注释
传感器范围 .2 - 1.2 米。注意:这是最小可行范围。允许具有更佳范围的传感器。 直接测量(如上定义)时,用户必须能够在 1.2 米处触发唤醒。
传感器延迟 <.33 秒 此要求定义从固件识别是否存在人体到 HID 驱动程序收到该消息的时间。 众所周知,从传感器收到信号后,操作系统的唤醒延迟时间不定。
传感器功率 - 使用中 <65 兆瓦(对于内部传感器);外部传感器的功耗取决于总线的功率限制;所有测量均取平均值。 此测量封装整个传感器子系统,包括仅根据唤醒和锁定场景使用的发射器、接收器以及任何 LED。
传感器电源 - 待机 <5 兆瓦;外部传感器的功耗取决于总线的功率限制;所有测量均取平均值。 当系统处于新式待机状态时,将通过传感器的耗用功率来测量。 此测量封装整个传感器子系统,包括仅根据唤醒和锁定场景使用的发射器、接收器以及任何其他硬件。
准确性 - 距离报告 +/- 5 厘米 测量位置:45 厘米(12 英寸)、75 厘米(29.5 英寸)和 120 厘米(47.2 英寸)。 仅当此传感器支持距离时才需要。

设备集成

传感器放置位置对于提供最佳用户体验以及在设备之间提供一致的人体存在体验至关重要。

理想的放置位置取决于设备的外形规格,在所有情况下,OEM 都应确定其设备的最佳放置位置。 此外,对于二合一可转换笔记本电脑等多形态设备,如果在某些形态下人体存在传感器无法生成精确的测量值(即传感器未面向用户或受阻),则建议传感器固件报告数据字段 isValid = false。 传感器的实际最佳放置位置通常与显示器位于同一平面上(面向用户)。

此外,请确保设备可采用的不同配置(例如,平板电脑模式和笔记本电脑模式下的键盘位置)不会挡住光圈,也不会与传感器的视野相交。

最后,确保传感器的视野不会与任何干扰光源(相机闪光灯、键盘背景光等)相交,因为这些干扰源可能会导致额外的干扰或使得读数不准。 在斟酌与干扰源或电磁波相交的视野时,请确保考虑到设备可以采用的所有不同配置。

外形规格 人体存在传感器位置和注意事项
平板电脑 将人体存在传感器放置在设备表面附近(而不是中间)的位置,同时提供适当的防护,以确保读数准确。
敞篷车 请对变形样式系统使用最佳判断力。
翻盖 将人体存在传感器放置在盖子上显示器的上方,面向用户(推荐)。
多功能或外部监视器 将人体存在传感器放置在设备前面(例如面板区域)(推荐)。
桌面 如果要将人体存在传感器放置在桌面设备机箱上,建议将传感器放置在靠近边缘的机箱顶部。 最好在监视器中包含存在传感器或提供外部 USB 硬件保护装置。

外部人体存在传感器支持和仲裁策略

内置功能支持集成到监视器中的外部人体存在传感器。 以下部分详细介绍了应用于外部人体存在传感器的实现、要求和策略。 其他类型的外部传感器(如独立传感器)未受到全面支持,因为外形规格和用法类型差异太大,无法可靠地提供支持。 但是,此类传感器未被明确禁止,建议有兴趣生产此类传感器的供应商联系 sasensors@microsoft.com

实现

外部人体存在传感器应采用与内部传感器相同的方式向 OS 公开,但 DEVPKEY_Sensor_ConnectionType 传感器属性应标记为外部,以便 OS 知道这是外部连接。 OS 将通过与传感器关联的 PLD 信息获知传感器是否已集成到外部监视器中。 强烈建议将传感器作为 HID 设备公开,以便使用内置的 HID 类驱动程序。 这样,用户无需安装驱动程序,外部传感器即可正常运行。

外部传感器和系统之间的物理连接应是独立于显示器连接的 USB 连接。 这是因为没有任何标准显示连接类型(如 HDMI 或 DisplayPort)支持 HID。 显示器和传感器可以通过 USB-C 交替模式和 USB4 共用一个连接,但并非所有用户都有权访问此类连接器类型,因此,不应将其用作外部传感器的唯一连接器。

要求

外部人体存在传感器必须满足与内部人体存在传感器相同的要求,并通过相同的 HLK 和手动测试。

处理具有不同功能的传感器

如果有多个具有不同功能的存在传感器,例如 A 传感器仅支持接近时唤醒和离开时锁定,而 B 传感器仅支持自适应调光。 “设置”页将反映所选传感器的功能。 如果选择 A 传感器,则只会显示唤醒和锁定开关。 如果选择 B 传感器,则只会显示自适应调光开关。

默认的存在传感器选择逻辑

在 Windows 11 22H2(含)之前,默认选择最后一个连接的传感器。 从 2023 年 5 月更新版 Windows 11 22H2 及更新版本开始,选择逻辑如下所示:

Default selection logic for presence sensor

接近时唤醒和离开时锁定策略

外部传感器优先于内部传感器,当连接到系统时,完全取代内部传感器作为唤醒和锁定的输入。 “优先”意味着连接外部传感器时,它将成为系统的默认传感器。 现有的用户首选项(如超时或检测距离)将传输到外部传感器。

可在下面找到不同外部传感器配置的仲裁策略。

系统具有集成传感器 系统具有外部传感器 仲裁策略
如果系统的盖子关闭,将禁用唤醒和锁定,且无法正常工作。
功能不会显示或会被禁用。
Single 外部连接的传感器将成为唤醒和锁定功能的默认所选传感器。 用户可以选择在 Windows 设置用户界面中配置其喜欢的传感器。 仅当系统有多个传感器可用时,才会显示此设置。 在 2023 年 5 月更新版 22H2 或更高版本之后,选择逻辑遵循默认的存在感传感器选择逻辑。
Single 外部连接的传感器将成为唤醒和锁定功能的默认所选传感器。 用户可以选择在 Windows 设置用户界面中配置其喜欢的传感器。 仅当系统有多个传感器可用时,才会显示此设置。 在 2023 年 5 月更新版 22H2 或更高版本之后,选择逻辑遵循默认的存在感传感器选择逻辑。
多种 用户界面中将显示相同的用户选项。 在用户选择另一个选项之前,上次连接到系统的传感器将一直是默认传感器。 在 2023 年 5 月更新版 22H2 或更高版本之后,选择逻辑遵循默认的存在感传感器选择逻辑。
多种 用户界面中将显示相同的用户选项。 在用户选择另一个选项之前,上次连接到系统的传感器将一直是默认传感器。 在 2023 年 5 月更新版 22H2 或更高版本之后,选择逻辑遵循默认的存在感传感器选择逻辑。

提示

确定在监视器上集成的传感器是否可用时,不考虑监视器方向,假设在这些情况下传感器仍可正常运行。

虚拟人体存在传感器

人体存在传感器必须由物理设备提供支持。 换句话说,不应将虚设的软件设备作为控制唤醒、锁定或自适应调光的代理公开。 此功能仅适用于物理场景。 此要求的意图是,存在传感器必须检测并参考物理环境来确定用户存在信号。 如果虚拟 HID 传感器聚合来自其他传感器(如麦克风或其他用户输入)的数据,并且在分流的芯片(例如 NPU 或 MCU)中运行,而 OS 上的应用程序无法访问图像或音频元数据,则可以实现虚拟 HID 传感器。 对于相机,虚拟存在传感器不应在 OS 中使用或处理图像元数据。 如果 OEM 和 IHV 实现在 OS 上使用图像或元数据的虚拟传感器,则对此类实现的隐私承担所有法律责任。

本白皮书中的存在传感器电源要求适用于物理传感器。 对于运行部分其他子系统的虚拟传感器,则沿用它们运行的子系统的电源要求。 例如,如果虚拟存在传感器在新式待机系统和分流的音频子系统中运行,则应遵循新式待机平台音频子系统电源管理中列出的要求

与相机隐私快门和切断开关交互

预计隐私快门不会干扰人体存在传感器,除非正在将图像元数据传输到 OS。 如果同一物理传感器与 Windows Hello(IR 相机)或常规 RGB 相机一起使用,则建议通过与 ISP 分开的物理路径(例如通过离散的 NPU)公开人体存在传感器,在这类路径中,推理会传输到 OS,而图像元数据(包括面部签名)不会传输到 OS。 由于相机切断开关应在 ISP 固件中运行,因此物理上独立的路径可确保切断开关不会干扰人体存在功能。 如果未将单独的物理路径用于共享传感器,相机 HLK 指南就会指示隐私快门同时在 RGB 和 IR 传感器上运行,这会干扰人体存在功能,从而导致用户体验不佳,因为 Windows 不会提醒用户人体存在功能被阻止。 目前不建议在人体存在和 ISP 之间设置共享路径。 但是,在必要的情况下,ISP 会停止 HPD 检测(以节省电量),并报告 HPD 传感器不可用。

强烈建议任何物理快门通过 CT_PRIVACY_CONTROL(对于 UVC 设备)或 KSPROPERTY_CAMERACONTROL_PRIVACY(如果使用 AVStream 或 DMFT 驱动程序)向 OS 报告其状态。 有关详细信息,请参阅相机隐私快门通知

有关相机隐私快门、切断开关和 LED 功能的更多详细信息,请参阅相机隐私控件

与相机隐私 LED 交互

Microsoft 预计,在未将图像元数据传输到 OS 的情况下,相机隐私 LED 可以也应该保持关闭状态。 它要求人体存在传感器在物理上不能将面部或图像数据传输到 OS。 这可以通过各种机制来实现,例如(但不限于)专用总线或物理上独立于相机 ISP 的路径或传感器内的保险丝。 有关相机隐私 LED 功能的更多详细信息,请参阅相机隐私控件部分。

实施指南

本节的读者(如果打算开发存在传感器驱动程序)应熟悉传感器驱动程序设计指南

在硬件中,人体存在传感器作为 SensorType_Proximity 实现,并且 DEVPKEY_Sensor_ProximityType 设置为 ProximityType_HumanProximity = 1

如果传感器利用生物识别,则可以归为 SensorCategory_Biometric。

设备总线连接

在设备总线连接方面,除了 HLK 中的测试外,没有其他硬性要求(见下文)。 但建议系统构建者尽可能利用 Windows 11 中提供的内置驱动程序。 例如,有内置 HID 驱动程序(用于 I2C)和内置传感器驱动程序(用于基于 HID 的设备)。 这样的好处是 Microsoft 将维护 Windows 11 中的内置驱动程序。

电源管理

本部分包含人体存在传感器电源管理的基本概述。 有关详细信息,请参阅传感器电源管理

提示

存在传感器用于在新式待机系统上运行。 2023 年 5 月更新版 Windows 11 22H2 及更高版本中已添加对非新式待机系统接近时唤醒功能的其他支持。

HIDUSB 实现的其他要求

基于 USB 的 HID 设备的选择性挂起一文提供的一个示例演示了 OEM 或 IHV INF 如何引用内置 INPUT.INF 来启用另一项选择性挂起功能。 OEM 和 IHV 在其 INF 中可能执行类似的操作,但要引用上述部分来启用触摸唤醒。

为了简化此 INF,OEM 和 IHV 还可以考虑改为创建扩展 INF。 请参阅使用扩展 INF 文件文档。

如果设备具有多个 HID 集合,包括人体存在传感器集合、非人体存在集合,则传感器固件应仅支持从人体邻近感应集合唤醒。 如果非人体存在传感器集合也可以发出唤醒信号,设备仍将返回到 D0 状态以耗尽电量。

协议实现(概要体系结构)

本部分需要必要的驱动程序实现详细信息才能向 OS 报告人体存在传感器。 严格来讲,这是通过为生物识别传感器类别中的邻近感应类型传感器实现人体邻近感应检测类型来实现的。

下图显示了当功能正常运行时,来自传感器的数据如何沿着堆栈向上流动。 外部监视器将使用标记为“HID”的图。

驱动程序类型/传感器功能 支持距离的 HW(+/- 5 厘米) 与距离无关的 HW
HID:人机接口设备 基于 HID 的支持距离的数据流(推荐) 基于 HID 的与距离无关的数据流
CLX:Windows 传感器类扩展 基于 CLX 的支持距离的数据流 基于 CLX 的与距离无关的数据流

HID-based Distance Capable Flow chart

基于 CLX 的支持距离的数据流

CLX-based Distance-Capable Data Flow

基于 HID 的与距离无关的数据流

HID-based Distance-Agnostic Data Flow

基于 CLX 的与距离无关的数据流

CLX-based Distance-Agnostic Data Flow

高级数据流

  1. 用户通过设置 UI 修改唤醒或锁定设置,并传达给 Windows 传感器服务。
  2. Windows 传感器服务在正常操作或新式待机期间启动人体存在传感器来监视唤醒和锁定。
  3. 人体存在传感器引发一个包含人体存在、检测距离和 isValid 的新样本。
  4. 如果系统处于新式待机状态,并且新的人体存在样本报告所配置的检测范围内存在人体,则 Windows 传感器服务将向 Windows 电源堆栈发送唤醒信号。 相反,如果系统处于正常运行状态,并且未报告有人存在或超出配置的检测范围,则 Windows 传感器服务将向 Windows 电源堆栈发送超时信号。

人体存在信号

信号:

  • 用户存在信号 - 当传感器报告人体存在数据字段设置为 true 的数据样本时发生。 如果系统支持关注,则在此状态下将关注设置为参与/true。
  • 用户存在未参与信号 - 在支持关注的系统中,当传感器报告人体存在数据字段设置为 true 且关注设置为未参与或 false 的数据样本时发生。
  • 用户不存在信号 - 当传感器报告人体存在数据字段设置为 false 的数据样本时发生。
  • 用户未知信号 - 人体存在未知时发出信号。 如果传感器被不合逻辑地移除,或者传感器尚未报告有效样本,可能就会发生这种情况。

所需的 HID 描述符和顶级集合

如果实现,则使用基于 HID 的体系结构之一,下一节将介绍用于公开存在信息的数据字段。

有关通过 HID 公开设备的其他信息,请查看传感器 HID 用法

人体存在 - 存在(唤醒和锁定)
用法 ID 注释
0x04B1 HID_USAGE_SENSOR_DATA_BIOMETRIC_HUMAN_PRESENCE 该用法公开指示存在的布尔值。 将此值设置为“1”,指示存在人体。 将此值设置为“0”,指示不存在人体。
0x04B2 HID_USAGE_SENSOR_DATA_BIOMETRIC_HUMAN_PROXIMITY_RANGE 用于在输入报告中公开距离值,默认单位是米,但本文档中的示例报告描述符显示设备如何报告毫米。 这将在未来的 Windows 更新中成为可选字段。

注意

毫米报告必须精确到 +/- 5000 毫米以内。 报告的范围可以是连续的,也可以采用小于 5000 毫米的离散增量(即 2000 毫米、7000 毫米…)。此范围在未来的 Windows 更新中将成为可选字段。

验证指南 - 最低要求和测试:Windows 硬件认证计划 (WHCP)

Windows 硬件兼容性计划规范和策略中的硬件实验室工具包 (HLK) 测试中概述了证明硬件兼容的最低测试和要求。