Skip to content
Mario Limonciello edited this page Jun 22, 2020 · 2 revisions

Introduction

fwupd is a GLib based project that runs with a client-server architecture. The daemon runs with elevated permissions, typically managed by systemd. The client communicates with the daemon over dbus. All web communications are handled by the client at a reduced permissions level.

To make implementing a client simple, a library library implements and abstracts a majority of the client/server communications path.

Firmware is flashed by the daemon by a variety of plugins that communicate over the appropriate bus (USB, Udev, Hidraw, I2C, etc).

Documentation

Documentation is available at https://fwupd.github.io.

Compilation

Compilation instructions are maintained at https://github.com/fwupd/fwupd/wiki/Compilation To build test packages for distros, see https://github.com/fwupd/fwupd/tree/master/contrib.

A continuous integration service is maintained across a variety of distributions and compilation configurations at https://github.com/fwupd/fwupd/tree/master/contrib/ci.

Debugging

To debug fwupd plugins, there are a few relevant debugging mechanisms built-in.

--verbose

Launch the daemon with --verbose as an argument and it will show as much debugging output as possible.

--daemon-verbose

Launching with --daemon-verbose=$Domain will show verbose output for the $Domain, which typically matches a particular plugin

--plugin-verbose

Launching with --plugin-verbose=$PLUGIN will show raw bus communication output for the $PLUGIN, which typically is very verbose.

Modifying from the frontend

Running # fwupdmgr modify-config VerboseDomains $DOMAIN will set $DOMAIN to be output in verbose mode next time the daemon is restarted.

GUIDs

All fwupd devices generate GUIDs that are built from instance-ID strings. These typically reference a logical connection to a device. To see the GUIDs for a device run fwupdmgr get-devices. To see what string was used to build the GUIDs, run sudo fwupdmgr get-devices.

As an example:

├─PC601 NVMe SK hynix 512GB:
│     Device ID:           c6a0cfba7c7d81e253fce571e1d1e9f6003ae1c7
│     Summary:             NVM Express Solid State Drive
│     Current version:     80002111
│     Vendor:              SK hynix (NVME:0x1C5C)
│     Serial Number:       SI94N052311304S07
│     Flags:               internal|updatable|require-ac|registered|needs-reboot|no-auto-instance-ids
│     GUIDs:               f5396862-8816-5437-823e-d7899a32e667 ← STORAGE-DELL-108788
│                          dff8f310-d5db-11e8-9f8b-f2801f1b9fd1

In this case STORAGE-DELL-108788 was used to build the GUID f5396862-8816-5437-823e-d7899a32e667. If you are using this for metadata, placing this GUID in the XML file will allow matching the string STORAGE-DELL-108788

Clone this wiki locally