Ричард Хьюз (Richard Hughes), создатель проекта PackageKit, активно участвующий в разработке GNOME, представил выпуск пакета fwupd 2.0.0, предлагающего фоновый процесс для организации обновления прошивок и утилиту fwupdmgr для управления прошивками, проверки появления новых версий и загрузки прошивок. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1.
Проект предоставляет OEM-производителям и разработчикам прошивок сервис для загрузки прошивок в специальный централизованный каталог LVFS (Linux Vendor Firmware Service), который можно использовать в дистрибутивах Linux при помощи инструментария fwupd. В настоящее время в каталоге предложены прошивки для более 1600 устройств от 160 производителей. Использование централизованного каталога избавляет производителей от необходимости формирования пакетов для дистрибутивов и позволяет передавать прошивки в архиве “.cab” с дополнительными метаданными, которые также применяются при публикации прошивок для Windows.
В fwupd поддерживается как режим автоматического обновления прошивок, без необходимости совершения каких-то действий со стороны пользователя, так и выполнение операции после подтверждения или запроса пользователя. Fwupd и LVFS применяются в RHEL, Fedora, Ubuntu, SUSE, Debian и многих других дистрибутивах для автоматизированного обновления прошивок, а также поддерживаются в менеджерах приложений GNOME Software и KDE Discover. При этом fwupd не ограничен настольными системами и пригоден для обновления прошивок на смартфонах, планшетах, серверах и устройствах интернета-вещей.
В новом выпуске:
- Фоновый процесс переведён с использования GObject-обвязки GUsb на прямое обращение к libusb и sysfs, что дало возможность вынести эмуляцию устройств в библиотеку libfwupdplugin и реализовать эмуляцию обновления прошивок на фиктивных устройствах hidraw и nvme по аналогии с эмуляцией с использованием фиктивных USB-устройств. Подобная возможность позволила реализовать дополнительные тесты, выявляющие проблемы с обновлением прошивок, возникающие после внесения в fwupd тех или иных изменений.
- Из зависимостей исключена библиотека GUdev, предоставляющая GObject-обвязки над libudev. Вместо GUdev процессом fwupd теперь создаётся netlink-сокет для разбора событий udev, передаваемых через netlink. Изменение привело к значительному сокращению потребления памяти и снижению нагрузки на CPU при запуске и в процессе работы, а также упростило добавление поддержки ueventd, которая в будущем позволит реализовать в fwupd поддержку платформы Android.
- Добавлены оптимизации для снижения потребления памяти в процессе потоковой передачи прошивок из архивов в устройства (вместо копирования прошивок в память теперь используется передача через файловый дескриптор).
- Добавлена поддержка новых устройств:
- Кардридеры Algoltek с интерфейсом USB
- AMD Kria SoM
- Cable Matters USB Hub
- Устройства на базе Cinterion FDL (Firmware Download Modem)
- CY6611 EZ-USB HX3PD
- Dell K2 Dock
- Биометрические датчики Elan 0C9F
- Dock-станции HP Fleetwood и Hendrix
- Huddly L1, S1 и Crew
- Jabra PanaCast
- Lenovo Legion HID2
- Lenovo ThinkSmart Bar
- Logitech Lemmy
- Logitech Sight
- Сенсорные экраны Logitech
- Конвертеры MediaTek
- Parade PS185
- Qualcomm S5gen2 BLE
- Telink Dual Keyboard
- Прекращена поддержка устаревших форматов верификации метаданных и прошивок.
- Удалены утилиты командной строки, ранее объявленные устаревшими.
- Добавлен API для загрузки отчётов в gnome-firmware.
- В системе сборки добавлена поддержка платформы Darwin.
- Добавлена поддержка вывода списка файлов из ESP в формате JSON (fwupdtool esp-list –json).
- Добавлена возможность указания в настройках эмулируемых устройств.