练习 4 - 确定 USB 设备问题

USB 主控制器仅在与其连接的所有设备都进入低功耗状态时才会关闭电源。 这意味着 USB 设备在现代待机设备上必须支持选择性暂停,才能够确保 SoC 在屏幕处于关闭状态时可以进入 DRIPS。

第 1 部分:使用 SleepStudy 报告确定问题

  1. 此处下载预生成的 sleepstudy-report_2.html 报告。

  2. 使用常用的浏览器打开 sleepstudy-report_2.html。

    • 请注意,系统在待机期间仍会消耗至少 120 mW(例如,请参阅待机会话 6)。

    屏幕截图:显示系统能耗的示例数据,包括时间、mWh、电池百分比和排出状态

  3. 单击会话 10。 系统在 11 分钟时长内消耗电量 2.83 瓦,DRIPS % 为 0。

    屏幕截图:显示已连接待机会话 10 的示例数据,包括开始时间、持续时间、能量变化、更改率和电源状态时间百分比

  4. 查看首要诱因表。

    1. USB 主控制器 (_SB.PCI0.XHC) 在会话持续期间的活动时间百分比为 99%。

    2. XHC 为 USB 3.0 主控制器。

屏幕截图:显示首要诱因的示例表。

当现代待机中的 USB 总线控制器处于活动状态的时间以分钟为单位时,则通常意味着与总线相连的一台 USB 设备并未进入选择性暂停,原因可能是它不支持选择性暂停。 合乎逻辑的下一步是通过查看 ETL 跟踪来确定哪台 USB 设备处于 D0 状态。

有关选择性暂停的详细信息,请参阅 MSDN 上的 USB 选择性暂停主题。

第 2 部分:使用 ETL 跟踪来确定问题

为进一步进行 USB 调查,在生成 SleepStudy 的同一个系统上捕获 ETL 跟踪。

若要调查 USB 问题,你可以使用 DState 图和表。

  1. 此处下载预生成的 USBProblem.etl 跟踪。

  2. 使用 WPA 打开 USBProblem.etl。

  3. 将 DRIPS 图拖放到“分析”选项卡中。

  4. 查看 Non-Drips Reasons,并查找阻止系统进入 DRIPS 的设备中是否存在 USB xHCI 主控制器。

    • 你会看到跟踪设备的活动状态百分比为 98%(如 % Reason time 列中所示)。

      屏幕截图:使用 WPA 的示例数据。

  5. 放大 USB xHCI 主控制器处于活动状态的区域。

    1. 选择表中的设备。

    2. 右键单击图中浅蓝色间隔,然后选择“缩放”。

    3. % Reason time 现在应该为 100%。

    屏幕截图:“负责组件”列上放大的 WPA

  6. 在 Graph Explorer 的电源类别下查找设备 Dstate 图。

    屏幕截图:电源、CPU 频率、CPU 空闲状态和设备 Dstate 图上放大的 WPA

  7. 将设备 Dstate 图拖放到“分析”选项卡中。

    • 设备 DState 图显示随时间推移设备的有效 D 状态。 你可以使用该数据来确定在系统处于现代待机状态时,特定设备是否进入相应的 D 状态。

      • PoFx 类型:适用于受 Windows 电源管理框架管理的设备。

      • 非 PoFx 类型:适用于连接 USB 的设备。

  8. DState 列向右移动到 Type 列的旁边。 该视口应如下所示:

    屏幕截图:显示示例 DState 数据。

  9. 展开 Non-PoFX 类别。

  10. 展开具有 0x0 值(即 D0 状态或活动状态)的 Dstate 行。

  11. Name 列排序,然后查找 USB 设备。

    屏幕截图:显示基于 USB 设备的示例 DState 数据。

D 状态表中的数据表明:系统处于待机状态时,USB 复合设备仍处于状态 D0(时间百分比为 100%)。 复合设备的硬件 ID 为 USB\VID_0BB4&PID_0BA1\00000015B42EE80F0000000000000000。 这就是曾阻止 XHCI 控制器关闭的设备。

如果设备由 Microsoft 编写的驱动程序进行管理,请将该问题报告给 Microsoft。 如果不是,则必须将此信息报告给拥有该驱动程序的硬件供应商,以找到解决方案并确保设备可以进入选择性暂停。