Updating firmware on a device is, in general, tricky. Most vendors ask to boot into BIOS mode, or a DOS/custom environment and apply the update files which typically come as binary files. In short, there’s no standard procedure. Things change a bit with UEFI where the specification and the stakeholders target standardizing many of the associated processes too. For example, Microsoft has decided to allow only .cab files accompanied by .inf files as UEFI firmware update packages from hardware vendors. This applies to devices which support capsule firmware updates.
fwupd is a new Linux daemon process that utilizes this. Internally it uses the fwupdate package, a set of tools for using the ESRT and UpdateCapsule() to apply firmware updates. Linux already identifies .cab files and the tool creates a replacement metainfo file from the .inf files. There are two actions associated to an update process:
- Providing metadata about what vendor updates are available (with AppStream 0.9 as interchange format)
- A mechanism to actually apply the file onto specific hardware (this project)
The tool is designed for desktops but has the potential to scale to phones, tablets and servers. To test it easily, the developer has added a ColorHug provider, which should work with ColorHug devices. The daemon exposes APIs and DBUS hooks so that it can be used from a GUI software manager like GNOME Software to view and apply updates, the cmdline tool or the system D-Bus interface directly.
On GitHub: fwupd