本指南介绍了如何在运行合适 Workbench 映像的设备上手动测试暂停和恢复功能。
执行手动暂停和恢复
含序列号
通过 USB 连接到设备。
通过
ffx power的辅助组件获取应用 activity 租约:ffx power suspend prevent释放会话唤醒租约:
ffx session drop-power-lease断开 USB 连接,以消除由 USB 或充电器连接引起的持续唤醒租用。
您可以拔下 USB 线,或者如果设备支持
cable-breaker,则可以在软件中断开 USB 连接,并安排通过串行连接自动重新连接:usb-cli cable-breaker --duration 15s确保
--duration足够长,以便运行下一个命令,并允许设备在 USB 自动重新连接之前暂停。使用序列,删除应用活动租约,并在延迟后重新获取:
powerutil suspend prevent --restart --wait-time 5s只要没有其他唤醒租约处于活动状态,系统就可以暂停。
等待串行日志显示系统挂起的证据。日志不一定会在暂停之前刷新,因此您可能会看到日志突然停止。
重新连接 USB(或等待
cable-breaker--duration计时器到期并自动重新连接 USB),或采取其他适当的操作(触摸、按下按钮等)来恢复设备。如果--wait-time已过,辅助组件将重新获取应用活动租约,并自行防止进一步暂停。
无序列号
通过 USB 连接到设备。
通过
ffx power的辅助组件获取应用 activity 租约:ffx power suspend prevent释放会话唤醒租约:
ffx session drop-power-lease释放应用活动租约(在延迟后重新获取),并断开 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"
等待几秒钟。如果没有串行连接,您将无法确认是否已发生挂起,直到 USB 重新连接。
重新连接 USB(或等待
cable-breaker--duration计时器到期并自动重新连接 USB)。使用
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_leasesUSB
ffx inspect show bootstrap/system-activity-governor:root/wake_leases增加重新获取唤醒租约前的延迟时间
如需让系统有更长的时间来暂停,请使用 --wait-time 选项增加延迟时间:
powerutil suspend prevent --restart --wait-time 10s