Richard Hughes
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.
Why LVFS is Essential for OEMs
The Linux Vendor Firmware Service is a webapp used by OEMs, ODMs and ISVs to distribute firmware updates safely and securely to millions of Linux users. In this talk I will give a quick overview of what the LVFS actually is, the extra services it provides and describe the ways the Linux client communicates with the server. I’ll explain how the LVFS is essential for OEMs and why ignoring the LVFS and Linux users is short-sighted from a technical and business point of view.
In the talk I’ll show lots of pictures and graphs, which will make some vendors feel good, and make other vendors feel bad. I’ll include lots of technical details that might be interesting to OEMs and Linux users who are deploying firmware updates at scale.
During the talk I’ll also hint at a future specification we’re working on, designed to raise the level of firmware security across the entire ecosystem. The talk will finish with a look to the future.
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.