透過 fwupd 更新周邊裝置韌體

版本:2.4.2
上次更新時間:2024 年 10 月 18 日

總覽

本指南旨在說明如何設定 ChromeOS UI 支援的 fwupd 韌體更新。

fwupd 流程圖

背景

fwupd 是開放原始碼守護程式,可在以 Linux 為基礎的系統上執行周邊裝置和其他系統韌體更新。fwupd 是 ChromeOS 更新周邊裝置韌體的機制。

fwupd 更新酬載包含儲存在 Linux 供應商韌體服務 (LVFS) 中的 .cab 檔案。在 Linux 中,只要將 fwupd 更新檔案上傳至 LVFS,即可讓所有人使用。不過,為了在 ChromeOS 中提供更新,ChromeOS 團隊會另外驗證並核准新更新,確保提供最佳使用者體驗。

fwupd 處理程序

以下內容僅適用於已將樣本送至 Allion 的 WWCB 認證周邊裝置。

如果 ChromeOS 中目前的 fwupd 版本不支援周邊裝置,請按照使用情境 1 使用情境 2 中的指示操作。如果 ChromeOS 中目前的 fwupd 版本已支援周邊裝置,請跳至用途 2

用途 1:ChromeOS 目前的 fwupd 版本不支援周邊裝置

ChromeOS 的現行版本尚未支援週邊裝置。

圖片

  1. ODM 和原始設備製造商 (OEM) 直接與晶片組供應商合作,將外掛程式變更提交至 fwupd 程式碼集。

    1. 請參閱 fwupd Integration 手冊 (第二個步驟 - 使用 fwupd)
    2. 外掛程式變更:範例 1範例 2
    3. .quirk 檔案中的 VIDs:PIDs 相符:範例 3
      • 如要變更奇異檔案,如果現有外掛程式支援 USB 周邊裝置,您可以遵循 DS20 規格
    4. 讓 fwupd 的維護人員合併產生的外掛程式和異常變更。
    5. 等待 fwupd 的正式版本發布 (例如 1.8.4) 時,請記下版本。
  2. 定期將最新的版本複製到 ChromeOS,並採用 Chromium 發布時間表

  3. 如果在即將發布的 Chromium 版本停用功能凍結日期後,提交外掛程式變更、錯誤修正或緊急檔案變更,但下個 ChromeOS 版本的異動優先度較高,則:

    1. 前往合作夥伴問題追蹤工具
    2. 使用 Google 合作夥伴網域帳戶登入。
    3. 按一下左側選單中的「Create Issue」按鈕,即可在元件 (ChromeOS > External > WWCB > PERIPHERAL OEM > fwupd) 中建立錯誤。這樣即可通知 ChromeOS 團隊將更新版本更新至 ChromeOS。

      請在錯誤中提供下列資訊:

      1. 錯誤名稱:

        [PRODUCT NAME - fwupd]: New Plugin NAME OF THE PLUGIN requires fwupd X.Y.Z version uprev
        
      2. 錯誤說明:

        1. fwupd 版本號碼,包含外掛程式變更:
          • 這個應用程式新增哪些功能?
          • 修正了哪些錯誤?
          • 支援哪些硬體?
        2. 裝置廠牌/型號
        3. VID、PID
        4. GUID (全域專屬 ID)
      3. 螢幕截圖範例:

        Fwupd uprev 錯誤的螢幕截圖

  4. 我們會進行錯誤分類,並整合 fwupd 的特定版本,讓 Google 工程師測試 ChromeOS 映像檔。

  5. 該錯誤會指派給 Chrome OS 中的 fwupd 版本,這樣可確保更新作業不會中斷。

    • 測試團隊會挑選 5 項產品,並使用 ChromeOS 的測試映像檔升級/降級韌體。
  6. 錯誤中會提供驗證結果。

    • 如果升級期間發現錯誤而導致驗證失敗,系統會將錯誤指派回 Google 工程師。
  7. 測試完成後,當變更清單獲得核准,fwupd 的升級版就會推送至 Canary 管道。

    • 請在錯誤中留言,瞭解 ChromeOS 的哪個版本包含升級版 fwupd。您也可以使用 CL Finder 在 ChromeOS 合作夥伴主控台 (CPCon) 中搜尋版本 (需要 Google 公司合作夥伴網域帳戶,如要存取 CPCon,請與 TAM 聯絡)。

用途 2:ChromeOS 目前版本的 fwupd 支援周邊裝置

ChromeOS 目前的 fwupd 版本已支援周邊裝置,並提供新的韌體。

圖片

  1. 建立 .cab 檔案。

    所有韌體都會以機櫃封存檔的形式上傳。除了韌體二進位檔之外,LVFS 預期封存檔至少會包含一個 .metainfo.xml 檔案,用於說明目標裝置和韌體。您可以在 Linux 上使用 gcab (用於建立 Cabinet 檔案的程式庫) 建立 Cabinet 封存檔。

  2. 將經過測試且最終的韌體更新 (.cab 檔案) 上傳至 LVFS。

    1. 確認可透過 stable 遙控器取得更新。

      如果該應用程式可在私人保密測試遠端上使用,就不會新增至 ChromeOS 鏡像。

    2. 透過已簽署的報表,在 LVFS 中標示為已驗證的更新。

      確認已新增裝置測試。

    3. 如果這是第一次上傳的韌體,請確保至少 2 個韌體、基本韌體 (用來測試降級) 和新韌體 (測試升級) 都可用在 LVFS 穩定版的遠端裝置上。

  3. 韌體升級應透過已簽署的報告在 ChromeOS 上進行測試。

    1. 將憑證上傳至 LVFS,將 DUT 連結至您的帳戶。

      1. 使用您的帳戶登入 LVFS
      2. 按一下右上方的「使用者」圖示,或按一下 https://fwupd.org/lvfs/profile{:.external}。
      3. 按一下「個人資料設定」
      4. 在 Chromebook 上找出用戶端憑證

        • 注意:Chromebook 必須處於開發人員模式
        • 按下 ctrl + alt + t 鍵,啟動 ChromeOS 開發人員殼層
        • Type:

          shell
        • 前往 /var/lib/fwupd/pki

          cd /var/lib/fwupd/pki
        • client.pem 複製到 Chromebook 上的資料夾,例如 Downloads

          cp client.pm /home/chronos/user/MyFiles/Downloads/
    2. 在 LVFS 網站的「Client Certificates」部分,按一下「Upload Certificate」按鈕,然後上傳憑證。

      1. 在您用於測試的每部 Chromebook 上重複執行這些步驟 (您可以為不同的電腦上傳多個憑證)。
    3. 透過 DUT 測試升級並上傳已簽署的報表。

      1. 如要測試及上傳報表,請執行下列指令,並在系統提示時進行驗證。

        fwupdmgr refresh
        fwupdmgr update
        fwupdmgr report-history --sign
      2. 注意:如果您已上傳沒有 --sign 標記的報表,可以使用 fwupdmgr report-history --sign --force 將相同的報表重新上傳至 LVFS。

        fwupdmgr report-history --sign --force
        • 您可以傳遞 --verbose 來查看伺服器回應。

          fwupdmgr report-history --force --verbose
      3. 在確認對話方塊中按一下「是」

        • 這樣就能將已簽署的報表上傳到自己的帳戶。
        • 如要確認,請前往 https://fwupd.org/lvfs/dashboard,然後按一下左上方「Home」部分下方的「Signed Reports」
    4. 確認 LVFS 上的韌體版本已簽署報告

      • 在 LVFS 上搜尋週邊裝置。
      • 如果上傳的已簽署報告在使用 Chromebook 成功升級週邊裝置的韌體版本後,「測試者」部分會顯示 ChromeOS 版本、檔案版本和實體。請參閱範例
      • 確認「Release Gating」顯示綠色勾號「可供 ChromeOS 使用者使用」。
    5. 自 M126 起,只有在韌體在 LVFS 上有已簽署的報告 (經 ChromeOS 測試) 時,ChromeOS 使用者才能取得韌體更新。

      • 24 小時後,使用者就能將周邊裝置連接至 Chromebook,並透過 ChromeOS UI 升級韌體。依序前往「設定」>「關於 ChromeOS」>「韌體更新」
      • 注意:假設在特定里程碑中,ChromeOS 上已提供所有必要的外掛程式變更,則可進行韌體更新。

如要進一步瞭解已簽署的報表,請前往 LVFS

常見問題

問:哪些 Chromebook 支援 fwupd?

搭載 M101 以上版本的所有 ChromeOS 裝置。

問:如何查看 ChromeOS 整合了哪個版本的 fwupd?

  1. 透過瀏覽器開啟 chrome://system (M109 以上版本)。
    1. 前往 fwupd_version
  2. 或者,透過開發人員模式、根控制台,
    1. 類型:fwupdmgr --version
    2. 請尋找 runtime org.freedesktop.fwupd

問:檔案更新程序需要多久的時間?

fwupd 升級要求遵循 Chromium 發布時程,請務必在分支功能凍結截止日期前提交 fwupd 升級要求。

問:我可以在哪裡進一步瞭解 ChromeOS 發布時間表?

查看 Chromium 發布時間表

問:如何將 Chromebook 切換成開發人員模式?

  1. 關閉 Chromebook。
  2. 按住 esc 鍵 + 重新整理鍵,然後按下電源鍵。
    • 注意:在某些 Chromebook 上,請按下 esc 鍵 + (右鍵箭頭鍵),然後按下電源鍵。
  3. 裝置會開啟,這時應會顯示復原畫面 / 模式。
  4. 接著按下 ctrl + d,然後按下 Enter 鍵接受。
    • 注意:如果在按下 ctrl + d 之前按下任何鍵,裝置就不會轉換至開發人員模式。
  5. 該裝置會重新啟動,嗶聲並顯示「您的系統正在轉換為開發人員模式」。
  6. 大約 30 秒後,畫面上會顯示「Preparing system for Developer mode」。
  7. 最後 (視磁碟大小而定,可能需花費 10 分鐘至 1 小時以上),裝置會重新啟動並進入一般歡迎畫面。
  8. 按下 ctrl + alt + (向右鍵) 鍵,即可取得 Command Prompt。
    • 注意:在某些 Chromebook 上,則會使用 ctrl + alt + refresh 鍵。
    • 如要返回瀏覽器檢視畫面,請按 ctrl+Alt+ (向左鍵)。
  9. 詳情請參閱「[開發人員模式]」

問:如何將 Chromebook 切換為一般模式 (例如停用開發人員模式)?

重新啟動裝置,並在韌體畫面中按下空格鍵。

詳情請參閱「[開發人員模式]」。

問:ChromeOS 是否支援透過 fwupd 降級?

不會。如果 fwupd 的正式版或韌體中斷,您必須透過 https://fwupd.org/lvfs/dashboard 刪除已簽署的報告。每次提交外掛程式變更和/或推出新韌體時,都很重要要進行測試。確保基礎版本韌體一律可透過 LVFS 穩定版的遠端取得。

問:如何得知哪些 ChromeOS 版本支援哪些 fwupd 更新?

您可以在錯誤中留言,詢問納入變更的建構版本為何,Google 工程師應該就能為您提供該資訊。您也可以使用 CL Finder 在 ChromeOS 合作夥伴控制台 (CPCon) 中搜尋版本 (需要 Google 公司合作夥伴網域帳戶,如要存取 CPCon,請與 TAM 聯絡)。您可以交叉比對 ChromeOS 合作夥伴前端 (CPFE) 的版本,瞭解該版本對應的里程碑。

問:如何建立 LVFS 帳戶?

請參閱取得帳戶 LVFS 說明文件。

問:如何將計程車檔案上傳到 LVFS?

請參閱「上傳韌體」LVFS 說明文件。

問:如何確保特定週邊裝置的韌體?

您可以透過最常見的設定檔執行這項操作。詳情請參閱 fwupd Best Known Configuration (最佳已知設定)。

問:將 Fwupd 更新上傳至 LVFS 之前,該如何測試 Fwupd 更新?

在提交外掛程式變更,並將所選 fwupd 版本整合至 ChromeOS 測試映像檔後,您就可以透過 ChromeOS 合作夥伴前端 (CPFE) 存取測試映像檔 (需要 Google 公司合作夥伴網域帳戶 - 請聯絡 TAM 取得 CPFE 存取權)。

請參閱 LVFS 說明文件「ChromeOS 上的韌體測試」。您也可以使用 Moblab 執行 fwupd 測試

問:如何通知使用者周邊裝置有韌體更新可供下載?

系統會根據在 LVFS 中指派的更新緊急程度,向使用者發送通知,說明有可用的更新。行為如下:

緊急程度 通知行為
使用者不會收到通知,必須手動檢查更新。
重要 更新完成前,系統會在每次開機時顯示通知。

問:fwupd 更新是否會自動執行?

否。所有 fwupd 更新都是由使用者啟動,不會在啟動期間或自動執行。

問:DS20 規格有什麼優點?

目前僅針對 USB 周邊裝置進行驗證,如果您使用與其他硬體相同的通訊協定,則只能搭配 DS20 描述元運作。

供應商可以將異常檔案資料放入 USB 描述元,而非 fwupd 專案。這樣一來,當 USB 裝置插入時,fwupd 會讀取描述元資料,比對外掛程式,並列舉裝置,而不需要供應商將修補程式提交至 fwupd,也不需要等待 fwupd 更新。

問:DS20 是不是唯一可變更檔案替代方案的替代選項嗎?

是的。大多數時下硬體只需要將 VID&PID 新增至現有的外掛程式,而非實際的程式碼變更即可。如果需要變更程式碼,供應商必須將外掛程式變更提交至 fwupd。

附錄

  1. 開發人員指南
  2. 開發人員支援
  3. CrOS 貢獻者適用的 Git 和 Gerrit 簡介
  4. 變更原始碼
  5. Gerrit 審查/核准程序
  6. fwupd Integration 手冊

修訂版本記錄

日期 版本 注意事項
2024-10-18 2.4.2 更新工作流程圖片和上傳用戶端憑證的步驟
2024-07-23 2.4.1 格式更新。
2024-06-26 2.4 更新 fwupd 升級前工作流程 (用途 1) (與 2.4.1 一併發布)
2024-06-17 2.3 更新已簽署的報表工作流程。(與 2.4.1 一起發布)
2024-02-01 2.2 新平台的共和,小小的用語更新。
2023-10-12 2.1 在案例 1 和案例 2 中新增圖片,以及在合作夥伴網站上代管的 fwupd 整合手冊
2022-08-14 2.0 合作夥伴網站初始出版