How to write a fwupd plugin
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.