通过 fwupd 进行外围设备固件更新

版本:2.4.4
上次更新时间:2026-07-23

概览

本指南旨在介绍如何配置 ChromeOS 界面支持的 fwupd 固件更新。

fwupd 流程图

背景

fwupd 是一种开源守护程序,可在基于 Linux 的系统上执行外围设备和其他系统固件更新。fwupd 是 ChromeOS 更新外围设备固件的机制。

fwupd 更新载荷由存储在 Linux 供应商固件服务 (LVFS) 中的 .cab 文件组成。在 Linux 中,fwupd 更新上传到 LVFS 后,即可广泛提供。不过,为了让 ChromeOS 中提供这些更新,ChromeOS 团队会单独验证新更新并将其列入许可名单,以确保最佳用户体验。

fwupd 进程

以下内容仅适用于已获得 WWCB 认证且已将样品发送给 Allion 的外围设备。

如果 ChromeOS 中的当前 fwupd 版本尚不支持该外围设备,请按照用例 1 和用例 2 中提供的说明操作。 如果 ChromeOS 中的当前 fwupd 版本已支持该外围设备,则跳至使用情形 2。

用例 1:ChromeOS 当前版本的 fwupd 不支持相应外围设备

ChromeOS 中的当前版本 fwupd 尚不支持该外围设备。

图片

  1. ODM 和 OEM 直接与芯片组供应商合作,将插件更改提交到 fwupd 代码库中。

    1. 请参阅 fwupd 集成手册(第二个验证步骤 - 使用 fwupd)。
    2. 插件更改:示例 1、示例 2
    3. 在 .quirk 文件中匹配 VIDs:PIDs:示例 3
      • 如果 USB 外围设备受现有插件支持,则可以按照 DS20 规范进行操作,而无需更改怪异文件。
    4. 让 fwupd 的维护人员合并生成的插件和怪异行为更改。
    5. 等待 fwupd 的官方点版本(即 1.8.4),请记下相应版本。
  2. fwupd 版本会定期镜像到 ChromeOS 中,并遵循 Chromium 发布时间表。

  3. 如果您在即将发布的 Chromium 版本的功能冻结截止日期之后提交插件更改、bug 修复或怪异文件更改,但这些更改对于下一个 ChromeOS 版本而言具有较高的优先级,则:

    1. 前往合作伙伴问题跟踪器。
    2. 使用您的 Google 合作伙伴网域账号登录。
    3. 点击左侧菜单中的 Create Issue 按钮,在您的组件中创建 bug (ChromeOS > External > WWCB > PERIPHERAL OEM > fwupd)。这会提醒 ChromeOS 团队在 ChromeOS 中升级 fwupd 版本。

      在 bug 中提供以下信息:

      1. bug 标题:

        [PRODUCT NAME - fwupd]: New Plugin NAME OF THE PLUGIN requires fwupd X.Y.Z version uprev
        
      2. 错误说明:

        1. 包含插件变更的 fwupd 版本号:
          • 它添加了哪些功能?
          • 修复了哪些 bug?
          • 它支持哪些硬件?
        2. 设备的品牌/型号
        3. VID、PID
        4. GUID(全局唯一标识符)
      3. 示例屏幕截图:

        fwupd uprev bug 的屏幕截图

  4. 该 bug 将被分类,并且 Google 工程师会将所选版本的 fwupd 纳入 ChromeOS。

  5. 在更改列表获得批准后,升级后的 fwupd 版本将提升到 canary 渠道。

    • 在 bug 上发表评论,了解哪个 ChromeOS build 版本包含升级后的 fwupd 版本。您还可以使用 CL Finder 在 ChromeOS 合作伙伴控制台 (CPCon) 中搜索 build 版本(需要 Google 公司合作伙伴网域账号,请联系 TAM 以获取 CPCon 访问权限)。

用例 2:ChromeOS 当前版本的 fwupd 支持该外围设备

ChromeOS 中的当前 fwupd 版本已支持该外围设备,并且有新固件可用。

图片

  1. 创建 .cab 文件。

    所有固件都以 cabinet 归档形式上传。除了固件二进制文件之外,LVFS 还要求归档文件至少包含一个 .metainfo.xml 文件,用于描述目标设备和固件。您可以在 Linux 上使用 gcab(用于创建 cabinet 文件的库)创建 cabinet 归档。

  2. 将经过测试的最终固件更新(.cab 文件)上传到 LVFS。

    1. 确保稳定版遥控器上提供相应更新。

      如果该 build 可在私有、封锁或测试远程服务器上获取,则不会添加到 ChromeOS 镜像中。

    2. 通过签名报告在 LVFS 中标记为已验证的更新。

      确保已添加设备测试。

    3. 如果这是首次上传固件,请确保 LVFS 的稳定远程中至少有 2 个固件,即基本固件(用于测试降级)和新固件(用于测试升级)。

  3. 应通过签名报告在 ChromeOS 上测试固件升级。

    1. 将证书上传到 LVFS,以将 DUT 与您的账号相关联。

      1. 使用您的账号登录 LVFS。
      2. 点击右上角的“个人”图标,或点击 https://fwupd.org/lvfs/profile{:.external}。
      3. 点击个人资料设置。
      4. 在 Chromebook 上找到客户端证书。

        • 注意:Chromebook 必须处于开发者模式
        • 按 ctrl+alt+t 启动 ChromeOS 开发者 shell
        • 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 网站上客户端证书部分中的上传证书按钮,然后上传证书。

      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,然后点击左上角首页部分下的已签名的报告。
    4. 验证 LVFS 上的固件版本是否具有已签名的报告

      • 在 LVFS 上搜索外围设备。
      • 如果上传的已签名报告是在使用 Chromebook 成功升级外围设备的固件版本后生成的,则测试者部分将显示 ChromeOS 版本、fwupd 版本和实体。请参阅示例。
      • 确保发布门控显示绿色对勾标记“可供 ChromeOS 用户使用”。
    5. 从 M126 开始,只有当固件在 LVFS 上具有已签名的报告(已通过 ChromeOS 测试)时,ChromeOS 用户才能获得固件更新。

      • 24 小时后,用户可以将外围设备连接到 Chromebook,并通过 ChromeOS 界面升级固件。依次前往“设置”>“关于 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 uprev 流程需要多长时间?

fwupd uprev 遵循 Chromium 发布时间表,请确保在分支功能冻结截止日期之前提交 fwupd uprev 请求。

问:在哪里可以详细了解 ChromeOS 发布时间表?

在 Chromium 发布时间表中。

问:如何将 Chromebook 切换到开发者模式?

  1. 关闭 Chromebook。
  2. 按住 esc+刷新键,然后按电源按钮。
    • 注意:在某些 Chromebook 上,请按 Esc+→(向右箭头键),然后按“电源”按钮。
  3. 设备开启,您应该会看到恢复界面 / 模式。
  4. 然后按 Ctrl+d,接着按 Enter 键接受。
    • 注意:如果您在按 ctrl+d 之前按了任何键,设备将不会进入开发者模式。
  5. 设备将重启并发出蜂鸣声,您会看到“您的系统正在切换到开发者模式”。
  6. 大约 30 秒后,您会看到“正在为开发者模式准备系统”。
  7. 最终(这可能需要 10 分钟到 1 个多小时,具体取决于磁盘大小),设备将重启并进入常规欢迎界面。
  8. 如需打开命令提示符,请按 Ctrl+Alt+→(向右键)。
    • 注意:在某些 Chromebook 上,快捷键是 Ctrl+Alt+刷新键。
    • 如需返回浏览器视图,请按 Ctrl+Alt+←(向左键)。
  9. 如需了解详情,请参阅 [开发者模式]

问:如何将 Chromebook 切换到正常模式(即停用开发者模式)?

重新启动设备,然后在固件界面中按空格键。

如需了解详情,请参阅 [开发者模式]。

问:ChromeOS 是否支持通过 fwupd 降级?

否。如果 fwupd 或固件的正式版出现故障,您将必须通过 https://fwupd.org/lvfs/dashboard 删除已签名的报告。每当您提交插件更改和/或有新固件可用时,都必须进行测试。确保 LVFS 的稳定远程服务器上始终提供固件的基本版本。

问:如何知道哪些 ChromeOS 版本将支持哪些 fwupd 更新?

您可以在 bug 上发表评论,询问相应更改已纳入哪个 build 版本,Google 工程师应该能够为您提供相关信息。您还可以使用 CL Finder 在 ChromeOS 合作伙伴控制台 (CPCon) 中搜索 build 版本(需要 Google 公司合作伙伴网域账号 - 请联系 TAM 以获取 CPCon 访问权限)。您可以交叉引用 ChromeOS 合作伙伴前端 (CPFE) 上的 build 版本,以查看它对应于哪个里程碑。

问:如何创建 LVFS 账号?

请参阅 Getting an Account LVFS 文档。

问:如何将 CAB 文件上传到 LVFS?

请参阅 Uploading Firmware LVFS 文档。

问:如何确保固件适用于特定外围设备?

这可以通过最常用的配置文件来实现。如需了解详情,请参阅 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 集成手册

修订历史记录

日期 版本 备注
2026-07-23 2.4.4 更新了 fwupd 集成 playbook 链接
2025-07-23 2.4.3 更新使用情形 1 工作流
2024-10-18 2.4.2 更新了 fwupd 工作流映像和上传客户端证书的步骤
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 初始合作伙伴网站发布