fwupd/plugins
Richard Hughes dbcc8e1137 ata: Include a vendor ID for ATA hardware
Some vendors want to ship updates for ATA hardware, but there are currently no
lock-down restrictions in place for these kind of devices.

There is the OUI from the WWN block which is supposed to identify the vendor,
but this is not always set and so we have to be a little creative. We can match
90% of hardware using the vendor name prefix, and the last 10% can be detected
with a heuristic that was the result of comparing over 900 drive models.

I'm not including very old drive models, media converters, raid controllers,
or external 'portable' drives as I don't think it is useful. Also, if the drive
contains a Dell vendor block just hardcode this as Dell rather than trying to
be clever.

Also ask the user to contribute OUI values if this data is found with no quirk
data as this is the only real sane way to manage this data long term.
The list of OUIs can be found here: http://standards-oui.ieee.org/oui.txt
2020-02-20 16:02:44 +00:00
..
altos altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE 2020-02-12 17:15:48 +00:00
amt trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
ata ata: Include a vendor ID for ATA hardware 2020-02-20 16:02:44 +00:00
colorhug trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
coreboot plugins/coreboot: Add missing fu_hash dependency 2019-12-18 08:33:10 +00:00
csr trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
dell trivial: rename synapticsmst to synaptics-mst 2019-12-12 13:59:41 -06:00
dell-dock Always check for PLAIN when doing vercmp() operations 2020-02-20 15:49:27 +00:00
dell-esrt trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
dfu trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
ebitdo ebitdo: Fix the endpoint address logged in the error message 2020-02-14 06:07:37 +00:00
emmc trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
fastboot trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
flashrom trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
fresco-pd Add a plugin to update PD controllers by Fresco Logic 2020-02-07 11:46:25 +00:00
jabra trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
logitech-hidpp logitech_hidpp: Ignore detach failures (Fixes: #1183) 2020-02-11 14:14:51 +00:00
modem-manager Always check for PLAIN when doing vercmp() operations 2020-02-20 15:49:27 +00:00
nitrokey trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
nvme Don't always get the vendor ID for udev devices using the parent 2020-01-06 14:48:58 +00:00
optionrom Don't always get the vendor ID for udev devices using the parent 2020-01-06 14:48:58 +00:00
redfish trivial: Add helper fu_plugin_get_config_value_boolean() 2020-02-20 14:55:10 +00:00
rts54hid trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
rts54hub trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
solokey trivial: Fix broken commit 2020-02-07 12:04:03 +00:00
steelseries trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
superio Detect kernel lockdown status 2020-02-04 10:08:25 -06:00
synaptics-cxaudio synaptics-cxaudio: Make the verfmt match that of the existing Windows tools 2020-02-12 17:15:40 +00:00
synaptics-mst synaptics-mst: Allow MST to fall back if no PCI device is marked as parent 2020-02-12 17:15:28 +00:00
synaptics-prometheus trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
synaptics-rmi synaptics-rmi: Add a missing error enum value 2020-02-07 15:16:39 +00:00
test Allow applying all releases to get to a target version 2020-01-07 15:33:12 +00:00
thelio-io trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
thunderbolt Always check for PLAIN when doing vercmp() operations 2020-02-20 15:49:27 +00:00
thunderbolt-power Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
tpm tpm: Optimize the string parsing and fix the boolean logic 2020-02-07 15:16:39 +00:00
tpm-eventlog trivial: add some better descriptions for man pages 2020-02-20 09:34:10 -06:00
uefi trivial: add some better descriptions for man pages 2020-02-20 09:34:10 -06:00
uefi-recovery trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
upower upower: Move battery threshold declaration into a configuration file 2020-02-13 09:52:20 -08:00
vli vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child 2020-02-12 08:51:24 +00:00
wacom-raw trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
wacom-usb trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
meson.build Add a plugin to update PD controllers by Fresco Logic 2020-02-07 11:46:25 +00:00
README.md trivial: plugins: clarify stance on afuefi.efi 2019-08-23 10:54:58 -05:00

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.

You can use the fwupd developer documentation to assist with APIs available to write the plugin.

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.

We will not accept plugins that upgrade hardware using a proprietary Linux executable, proprietary UEFI executable, proprietary library, or DBus interface.

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/fwupd/fwupd/blob/master/src/fu-device-metadata.h

All interactions between plugins should have the interface defined in that file.