![]() In some cases firmware can only be installed with an up to date GUsb (e.g. with some STM-DFU hardware) or with a new version of fwupdate (e.g. any UEFI UpdateCapsule without a capsule header). We should be able to match against other software versions like we can the fwupd version, e.g. <requires> <id compare="ge" version="0.9.2">org.freedesktop.fwupd</id> <id compare="ge" version="11">com.redhat.fwupdate</id> </requires> Also, rather than checking each requirement we know about on the component, check each requirement on the component about things we know. This ensures we don't allow firmware to be installs that requires for instance fwupdate 22 when the runtime version is only being added in fwupdate 12 and up. This means the following is now an error that will fail to allow the firmware to be installed: <requires> <firmware>doesnotexist</firmware> <some_future_tag>also_unknown</some_future_tag> </requires> Also add a lot of self tests to test the various new failure modes. Fixes https://github.com/hughsie/fwupd/issues/463 |
||
---|---|---|
.. | ||
altos | ||
amt | ||
colorhug | ||
csr | ||
dell | ||
dfu | ||
ebitdo | ||
nitrokey | ||
steelseries | ||
synapticsmst | ||
test | ||
thunderbolt | ||
thunderbolt-power | ||
udev | ||
uefi | ||
unifying | ||
upower | ||
meson.build | ||
README.md |
Adding a new plugin
An extensible architecture allows for providing new plugin types (for reading and writing different firmware) as well as ways quirk their behavior.
You can find more information about the architecture in the developers section of the fwupd website.
If you have a firmware specification and would like to see support in this project, please file an issue and share the spec. Patches are also welcome.
Plugin interaction
Some plugins may be able to influence the behavior of other plugins. This includes things like one plugin turning on a device, or providing missing metadata to another plugin.
The ABI for these interactions is defined in: https://github.com/hughsie/fwupd/blob/master/src/fu-device-metadata.h
All interactions between plugins should have the interface defined in that file.