How to write a fwupd plugin
12-02, 14:00–14:40 (Europe/Berlin), Session Area

The fwupd project is an established open source project being shipped by default on almost every Linux distribution. It is responsible for deploying over 18 million firmware updates. The project supports dozens of existing standardized update protocols like ATA, NVMe, DFU, UpdateCapsule, and also supports many vendor-specific protocols from the likes of Wacom, Logitech and Synaptics. This presentation will explain how the daemon decides to offer a firmware update, and also the low level detail of the flashing process. Tasks like switching the device to and from bootloader mode will be covered, as will how to parse a custom firmware image format.

Some familiarity with how firmware is deployed would be advantageous, but detailed knowledge of how to write GLib C code is not required, but would be helpful. In the presentation I’ll be showing how to write a fictitious plugin for some toy hardware, and show how to debug and test the low level vfuncs before installing the plugin and using it as part of the installed daemon.

This talk would be really helpful for any people interested in porting custom flashing code to the generic fwupd infrastructure. It would be also interesting for anyone who wants to start building and testing the existing plugins from the development branch.

Related Projects


Richard has over 15 years of experience developing open source software. He is the maintainer of fwupd, the LVFS, GNOME Software, AppStream-glib, PackageKit, gnome-packagekit, gnome-power-manager, gnome-color-manager, colord, and UPower and also contributes to many other projects and opensource standards.

Richard graduated in 2007 from the University of Surrey with a Masters in Electronics Engineering. He now works as a principle engineer for Red Hat. Richard's outside interests include taking photos, eating good food and looking after his two daughters.

This speaker also appears in: