在 Workbench 上手動測試暫停/繼續作業

本指南說明如何在執行合適 Workbench 映像檔的裝置上,手動測試暫停和恢復功能。

手動暫停及恢復

含序號

  1. 透過 USB 連接裝置。

  2. 透過 ffx power 的輔助元件取得應用程式活動租約:

    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 的輔助元件取得應用程式活動租約:

    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 結束,請在背景執行,並立即叫用 cable-breaker,且 --duration 長於 --wait-time:

      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