В начале октября 2024 года состоялся релиз открытого инструментария для загрузки прошивок Fwupd 2.0 с поддержкой больших разделов в томах EFI FFS3 и возможностью стабильной работы с большинством типов CRC-32 и CRC-16. Исходный код проекта написан на C и Python и опубликован на GitHub под лицензией GNU Lesser General Public License v2.1.

По информации OpenNET, проект Fwupd предоставляет OEM-производителям и разработчикам прошивок сервис для загрузки прошивок в специальный централизованный каталог LVFS (Linux Vendor Firmware Service), который можно использовать в дистрибутивах Linux при помощи инструментария fwupd.

В настоящее время в каталоге проекта Fwupd предложены прошивки для более 1600 устройств от 160 производителей. Использование централизованного каталога избавляет производителей от необходимости формирования пакетов для дистрибутивов и позволяет передавать прошивки в архиве *.cab с дополнительными метаданными, которые также применяются при публикации прошивок для Windows.

В проекте Fwupd поддерживается режим автоматического обновления прошивок, без необходимости совершения каких-то действий со стороны пользователя, так и выполнение операции после подтверждения или запроса пользователя.

Инструментарий Fwupd и LVFS применяются в сборках RHEL, Fedora, Ubuntu, SUSE, Debian и многих других дистрибутивах Linux для автоматизированного обновления прошивок, а также поддерживаются в менеджерах приложений GNOME Software и KDE Discover. Решение Fwupd не ограничено настольными системами и пригодно для обновления прошивок на смартфонах, планшетах, серверах и устройствах интернета-вещей.

Основные изменения и добавления в Fwupd 2.0:

• фоновый процесс переведён с использования GObject-обвязки GUsb на прямое обращение к libusb и sysfs, что дало возможность вынести эмуляцию устройств в библиотеку libfwupdplugin и реализовать эмуляцию обновления прошивок на фиктивных устройствах hidraw и nvme по аналогии с эмуляцией с использованием фиктивных USB-устройств. Подобная возможность позволила реализовать дополнительные тесты, выявляющие проблемы с обновлением прошивок, возникающие после внесения в fwupd тех или иных изменений.

• из зависимостей исключена библиотека GUdev, предоставляющая GObject-обвязки над libudev. Вместо GUdev процессом fwupd теперь создаётся netlink-сокет для разбора событий udev, передаваемых через netlink. Изменение привело к значительному сокращению потребления памяти и снижению нагрузки на CPU при запуске и в процессе работы, а также упростило добавление поддержки ueventd, которая в будущем позволит реализовать в fwupd поддержку платформы Android.

• добавлены оптимизации для снижения потребления памяти в процессе потоковой передачи прошивок из архивов в устройства (вместо копирования прошивок в память теперь используется передача через файловый дескриптор).

• прекращена поддержка устаревших форматов верификации метаданных и прошивок.

• удалены утилиты командной строки, ранее объявленные устаревшими.

• добавлен API для загрузки отчётов в gnome-firmware.

• в системе сборки добавлена поддержка платформы Darwin.

• добавлена поддержка вывода списка файлов из ESP в формате JSON (fwupdtool esp-list --json).

• добавлена возможность указания в настройках эмулируемых устройств.

• добавлена поддержка новых устройств, включая:

  • кардридеры 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.