Обновление прошивки периферийных устройств через fwupd

Версия: 2.4.3
Последнее обновление: 23.07.2025

Обзор

Целью данного руководства является описание настройки обновлений прошивки fwupd, поддерживаемых пользовательским интерфейсом ChromeOS.

блок-схема fwupd

Фон

fwupd — это демон с открытым исходным кодом, который выполняет обновление прошивок периферийных устройств и других систем в системах на базе Linux. fwupd — это механизм, с помощью которого ChromeOS обновляет прошивку периферийных устройств.

Полезные данные обновления fwupd состоят из .cab -файлов, хранящихся в Linux Vendor Firmware Service (LVFS). В Linux обновления fwupd могут быть доступны широкому кругу пользователей после загрузки в LVFS. Однако для того, чтобы обновления стали доступны в ChromeOS, команда ChromeOS будет отдельно проверять и добавлять новые обновления в разрешённый список, чтобы обеспечить оптимальную работу пользователей.

Процесс fwupd

Следующее применимо только к периферийным устройствам, сертифицированным WWCB, образцы которых были отправлены в Allion.

Если текущая версия fwupd в ChromeOS еще не поддерживает периферийное устройство, то следуйте инструкциям, приведенным в вариантах использования 1 и 2. Если текущая версия fwupd в ChromeOS уже поддерживает периферийное устройство, то перейдите к варианту использования 2 .

Вариант использования 1: Текущая версия fwupd в ChromeOS не поддерживает периферийное устройство

Текущая версия fwupd в ChromeOS пока не поддерживает периферийное устройство.

изображение

  1. Производители оригинального оборудования (ODM) и оригинального оборудования (OEM) будут напрямую работать с поставщиками чипсетов для отправки изменений плагинов в кодовую базу fwupd.

    1. См. Руководство по интеграции fwupd (Второй шаг — использование fwupd) .
    2. Изменения плагина: пример 1 , пример 2
    3. Сопоставление VIDs:PIDs в файле .quirk : пример 3
      • В качестве альтернативы изменению файла quirk, если периферийное устройство USB поддерживается существующим плагином, вы можете следовать спецификации DS20 .
    4. Объединение полученных изменений плагина и особенностей силами сопровождающих fwupd.
    5. Дождитесь официального релиза fwupd (например, 1.8.4), запишите версию.
  2. Релизы fwupd регулярно отражаются в ChromeOS и будут соответствовать графику выпусков Chromium .

  3. Если вы отправляете изменения плагина, исправления ошибок или изменения файла особенностей после даты окончания заморозки функций предстоящего выпуска Chromium, но изменения имеют высокий приоритет для следующего выпуска ChromeOS, то:

    1. Перейдите в раздел «Отслеживание проблем партнеров» .
    2. Войдите в систему, используя свою учетную запись домена партнера Google.
    3. Нажмите кнопку «Создать проблему» в меню слева, чтобы создать ошибку в компоненте ( ChromeOS > External > WWCB > PERIPHERAL OEM > fwupd ). Это даст команде ChromeOS сигнал о необходимости обновить версию fwupd в 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 (глобальный уникальный идентификатор)
      3. Пример скриншота:

        снимок экрана с ошибкой fwupd uprev

  4. Ошибка будет рассмотрена, и инженеры Google включат выборочную версию fwupd в ChromeOS.

  5. Предыдущая версия fwupd будет перемещена на канал canary после одобрения списка изменений.

    • Оставьте комментарий к ошибке, чтобы узнать, какая версия сборки ChromeOS содержит более раннюю версию fwupd. Вы также можете использовать CL Finder для поиска версии сборки в консоли партнёра ChromeOS (CPCon) (требуется учётная запись домена партнёра Google Corp., для доступа к CPCon обратитесь к TAM).

Вариант использования 2: Текущая версия fwupd в ChromeOS поддерживает периферийное устройство

Текущая версия fwupd в ChromeOS уже поддерживает периферийное устройство, и доступна новая прошивка.

изображение

  1. Создайте файл .cab .

    Все прошивки загружаются в виде архива CAB. LVFS ожидает, что помимо двоичного файла прошивки, архив будет содержать как минимум один файл .metainfo.xml , описывающий целевое устройство и прошивку. Вы можете создать архив CAB с помощью gcab (библиотеки для создания CAB-файлов) в Linux.

  2. Загрузите протестированное и финальное обновление прошивки (файл .cab ) в LVFS.

    1. Убедитесь, что обновление доступно на стабильном пульте ДУ.

      Если он доступен на закрытом , эмбарго или тестовом удаленном сервере, он не будет добавлен в зеркало ChromeOS.

    2. Обновления отмечены как проверенные в LVFS с помощью подписанного отчета .

      Убедитесь, что тесты устройства добавлены.

      • Пример файла JSON , поддерживаемый тестовой платформой для тестирования устройств
    3. Если это первая загрузка прошивки, то убедитесь, что в стабильной удаленной версии LVFS доступны как минимум две прошивки: базовая (для проверки понижения версии) и новая (для проверки повышения версии).

  3. Обновление прошивки должно быть протестировано на ChromeOS с помощью подписанного отчета .

    1. Загрузите сертификаты в LVFS, чтобы связать DUT с вашей учетной записью.

      1. Войдите в LVFS , используя свою учетную запись.
      2. Нажмите значок «Персона» в правом верхнем углу или нажмите https://fwupd.org/lvfs/profile{:.external}.
      3. Нажмите «Настройки профиля» .
      4. Найдите сертификат клиента на вашем Chromebook.

        • Примечание : Chromebook должен находиться в режиме разработчика.
        • Запустите оболочку разработчика ChromeOS, нажав ctrl + alt + t.
        • Тип:

          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 и объект. См. пример .
      • Убедитесь, что в поле Release Gating отображается зеленая галочка «Доступно пользователям ChromOS».
    5. Начиная с версии M126 обновления прошивки будут доступны пользователям ChromeOS только при наличии у прошивки подписанных отчетов (протестировано с ChromeOS) на LVFS.

      • Через 24 часа пользователи смогут подключить периферийное устройство к Chromebook и обновить прошивку через интерфейс ChromeOS. Перейдите в раздел «Настройки» > «О ChromeOS» > «Обновления прошивки» .
      • Примечание: обновления прошивки будут доступны при условии, что все требуемые изменения плагинов доступны в ChromeOS для данного этапа.

Более подробную информацию о подписанных отчетах можно найти на сайте LVFS .

Часто задаваемые вопросы

В: Какой Chromebook поддерживает fwupd?

Все устройства ChromeOS версии M101 или более поздней.

В: Как узнать, какая версия fwupd интегрирована с ChromeOS?

  1. Откройте chrome://system через браузер (M109 или более позднюю версию).
    1. Перейдите к fwupd_version .
  2. Или через режим разработчика, консоль root,
    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 + Refresh .
    • Чтобы вернуться в режим браузера, нажмите ctrl + alt + (клавиша со стрелкой влево).
  9. Более подробную информацию можно найти в [Режиме разработчика]

В: Как перевести Chromebook в обычный режим (т. е. отключить режим разработчика)?

Перезагрузите устройство и нажмите пробел на экране прошивки.

Более подробную информацию можно найти в [Режиме разработчика].

В: Поддерживает ли ChromeOS понижение версии через fwupd?

Нет. Если рабочая версия fwupd или прошивки выйдет из строя, вам придётся удалить подписанный отчёт через https://fwupd.org/lvfs/dashboard. Важно проводить тестирование каждый раз, когда вы вносите изменения в плагин и/или выпускаете новую прошивку. Убедитесь, что базовая версия прошивки всегда доступна на стабильном удалённом сервере LVFS.

В: Как узнать, какие версии ChromeOS будут поддерживать те или иные обновления fwupd?

Вы можете оставить комментарий к ошибке, указав, в какую версию сборки внесены изменения, и инженеры Google должны предоставить вам эту информацию. Вы также можете использовать CL Finder для поиска версии сборки в консоли партнёра ChromeOS (CPCon) (требуется учётная запись домена партнёра Google Corp — обратитесь к TAM для доступа к CPCon). Можно использовать перекрестную ссылку на версию сборки в ChromeOS Partner Frontend (CPFE), чтобы узнать, к какому этапу она относится.

В: Как создать учетную запись LVFS?

Обратитесь к документации « Получение учетной записи LVFS».

В: Как загрузить cab-файлы в LVFS?

См. документацию по загрузке прошивки LVFS.

В: Как убедиться, что прошивка предназначена для конкретного периферийного устройства?

Это возможно с помощью файла наиболее известной конфигурации. Подробнее см. в файле наиболее известной конфигурации fwupd.

В: Как я могу протестировать обновление fwupd перед загрузкой в LVFS?

После отправки изменений плагина и включения выборочной версии fwupd в тестовый образ ChromeOS вы сможете получить доступ к тестовому образу через ChromeOS Partner Frontend (CPFE) (требуется учетная запись домена партнера корпорации Google — обратитесь к TAM для доступа к CPFE).

См. документацию LVFS по тестированию прошивки в ChromeOS . Также можно запустить тесты fwupd с помощью Moblab .

В: Как пользователь будет уведомлен о наличии обновления прошивки для его периферийного устройства?

Пользователь получит уведомление о наличии обновления в зависимости от срочности, указанной в LVFS. Поведение будет следующим:

Срочность Поведение уведомлений
Низкий Пользователь не будет уведомлен, ему придется вручную проверять наличие обновлений.
Середина
Высокий
Критический Уведомление будет появляться при каждой загрузке до завершения обновления.

В: Обновления fwupd происходят автоматически?

Нет. Все обновления fwupd инициируются пользователем и не будут выполняться во время загрузки или автоматически.

В: В чем преимущество спецификации DS20?

В настоящее время проверено только для периферийных устройств USB. Если вы используете тот же протокол, что и на другом оборудовании, он будет работать только с дескриптором DS20.

Поставщики могут поместить данные файла quirk в USB-дескриптор, а не в проект fwupd. Таким образом, USB-устройство подключается, fwupd считывает данные дескриптора, сопоставляет плагин и получает информацию об устройстве, не требуя от поставщика отправки патча в fwupd и ожидания выполнения fwupd uprev.

В: Является ли DS20 альтернативой только изменению файлов Quirk?

Да; в большинстве случаев для будущего оборудования достаточно просто добавить VID и PID в существующий плагин, а не вносить изменения в код. Если требуется изменение кода, поставщик должен отправить изменения плагина в fwupd.

Приложения

  1. Руководство разработчика
  2. Поддержка разработчиков
  3. Введение в Git и Gerrit для участников CrOS
  4. Внесение изменений в исходный код
  5. Процесс рассмотрения/утверждения Gerrit
  6. Руководство по интеграции fwupd

История изменений

Дата Версия Примечания
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 uprev (вариант использования 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 Первоначальная публикация на сайте партнера