在 Workbench 上手动测试暂停/恢复

本指南介绍了如何在运行合适 Workbench 映像的设备上手动测试暂停和恢复功能。

执行手动暂停和恢复

含序列号

  1. 通过 USB 连接到设备。

  2. 通过 ffx power 的辅助组件获取应用 activity 租约:

    ffx power suspend prevent
  3. 释放会话唤醒租约:

    ffx session drop-power-lease
  4. 断开 USB 连接,以消除由 USB 或充电器连接引起的持续唤醒租用。

    您可以拔下 USB 线,或者如果设备支持 cable-breaker,则可以在软件中断开 USB 连接,并安排通过串行连接自动重新连接:

    usb-cli cable-breaker --duration 15s

    确保 --duration 足够长,以便运行下一个命令,并允许设备在 USB 自动重新连接之前暂停。

  5. 使用序列,删除应用活动租约,并在延迟后重新获取:

    powerutil suspend prevent --restart --wait-time 5s

    只要没有其他唤醒租约处于活动状态,系统就可以暂停。

  6. 等待串行日志显示系统挂起的证据。日志不一定会在暂停之前刷新,因此您可能会看到日志突然停止。

  7. 重新连接 USB(或等待 cable-breaker --duration 计时器到期并自动重新连接 USB),或采取其他适当的操作(触摸、按下按钮等)来恢复设备。如果 --wait-time 已过,辅助组件将重新获取应用活动租约,并自行防止进一步暂停。

无序列号

  1. 通过 USB 连接到设备。

  2. 通过 ffx power 的辅助组件获取应用 activity 租约:

    ffx power suspend prevent
  3. 释放会话唤醒租约:

    ffx session drop-power-lease
  4. 释放应用活动租约(在延迟后重新获取),并断开 USB 连接,以消除由 USB 或充电器连接引起的持续唤醒租约:

    • 物理拔出:运行以下命令,并在 --wait-time 过去之前拔出 USB 线:

      ffx power suspend prevent --restart --wait-time 5s
    • 使用 cable-breaker:由于 ffx power suspend prevent --restart 会阻塞,直到 --wait-time 过去,因此请在后台运行它,并立即使用比 --wait-time 更长的 --duration 调用 cable-breaker:

      ffx power suspend prevent --restart --wait-time 5s &
      ffx component explore /core/usb-policy -c "usb-cli cable-breaker --duration 15s"
  5. 等待几秒钟。如果没有串行连接,您将无法确认是否已发生挂起,直到 USB 重新连接。

  6. 重新连接 USB(或等待 cable-breaker --duration 计时器到期并自动重新连接 USB)。

  7. 使用 ffx log 查找暂停证据。虽然没有规范的消息来指示这一点,但在撰写本文时,内核消息 INFO: Suspending non-boot CPUs... 是一个很好的指示。您还可以通过“检查”功能查看 suspend_stats:

    ffx inspect show bootstrap/system-activity-governor:root/suspend_stats

问题排查

查看 cable-breaker 支持

如需检查您的设备是否支持通过 usb-cli cable-breaker 进行软件 USB 断开连接,请验证 /core/usb-policy 是否公开了 fuchsia.usb.policy.Configuration:

ffx component capability fuchsia.usb.policy.Configuration

检查唤醒租约

任何活跃的唤醒租约都会阻止系统挂起。如需检查活跃的唤醒租用,请运行以下命令:

序列号

inspect show bootstrap/system-activity-governor:root/wake_leases

USB

ffx inspect show bootstrap/system-activity-governor:root/wake_leases

增加重新获取唤醒租约前的延迟时间

如需让系统有更长的时间来暂停,请使用 --wait-time 选项增加延迟时间:

powerutil suspend prevent --restart --wait-time 10s