fwupd/src
Richard Hughes 2dea742004 Match the MEI UUID in quirk files
This allows us to be more specific when matching devices, and also means we get
more attributes 'for free' from the FuUdevDevice->probe().

This would allow us to have multiple device GTypes handling multiple MEI
interfaces in the same plugin., for instance, PTHI and MKHI.

The slight fly in the ointment is that the kernel does not set the 'dev' for
the mei_me devices, but it's always going to be just /dev/mei0, so hardcode it.
2022-10-12 13:17:42 +01:00
..
tests Add support for platform capability descriptors so devices can set quirks 2022-09-13 12:07:35 +01:00
fu-bluez-backend.c Ensure the context is set for all backends 2022-09-06 20:30:21 +01:00
fu-bluez-backend.h Ensure the context is set for all backends 2022-09-06 20:30:21 +01:00
fu-cabinet-common.c Unexport fu_common_cab_build_silo() 2022-06-14 14:36:52 -05:00
fu-cabinet-common.h Unexport fu_common_cab_build_silo() 2022-06-14 14:36:52 -05:00
fu-config.c Move the getting the ESP to the context 2022-09-22 14:31:06 +01:00
fu-config.h Move the getting the ESP to the context 2022-09-22 14:31:06 +01:00
fu-daemon.c Do not check the build hash of modular plugins 2022-09-30 14:19:56 +01:00
fu-daemon.h Pass the socket address when setting up the daemon 2022-05-14 20:47:50 +01:00
fu-debug.c Fix millisecond formatting 2022-10-09 20:33:19 +01:00
fu-debug.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-device-list.c trivial: don't show devices with inhibit id: hidden 2022-07-05 08:54:12 +01:00
fu-device-list.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-engine-helper.c trivial: Fix a memory leak when updating the device file 2022-06-30 14:23:45 +01:00
fu-engine-helper.h Cache list of devices to cache directory 2022-06-20 12:57:40 -04:00
fu-engine-request.c trivial: Fix a small memory leak when making a request 2022-07-21 21:27:24 +01:00
fu-engine-request.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-engine.c Add some more profiling to debug custom device GType creation 2022-10-07 14:41:48 +01:00
fu-engine.h Do not check the build hash of modular plugins 2022-09-30 14:19:56 +01:00
fu-history.c Set the target value on the security attribute 2022-08-01 07:12:18 +01:00
fu-history.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-idle.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-idle.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-keyring-utils.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-keyring-utils.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-main-windows.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-main.c trivial: Fix a compile warning when compiling without systemd 2022-06-26 17:28:04 -05:00
fu-offline.c Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-plugin-list.c Check for plugin conflicts slightly quicker 2022-09-09 19:23:29 +01:00
fu-plugin-list.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-polkit-agent.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-polkit-agent.h trivial: Remove a few ctags headers that snuck in 2022-06-14 17:57:38 +01:00
fu-progressbar.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-progressbar.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-release-common.c Unexport fu_common_uri_get_scheme() 2022-06-14 14:36:52 -05:00
fu-release-common.h Unexport fu_common_uri_get_scheme() 2022-06-14 14:36:52 -05:00
fu-release.c Use LVFS::UpdateRequestId to create a translated FwupdRequest 2022-10-06 10:30:31 +01:00
fu-release.h Use LVFS::UpdateRequestId to create a translated FwupdRequest 2022-10-06 10:30:31 +01:00
fu-remote-list.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-remote-list.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-security-attr-common.c trivial: Fix the Pre-boot DMA protection HSI long description 2022-09-22 16:54:26 +01:00
fu-security-attr-common.h Set the target value on the security attribute 2022-08-01 07:12:18 +01:00
fu-self-test.c trivial: Fix the self tests when building with -Dgusb=disabled 2022-10-07 08:04:06 -05:00
fu-spawn.c Unexport fu_common_spawn_sync() 2022-06-14 14:36:52 -05:00
fu-spawn.h Unexport fu_common_spawn_sync() 2022-06-14 14:36:52 -05:00
fu-systemd.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-systemd.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-tool.c Allow optionally translating request messages 2022-10-03 20:54:24 +01:00
fu-udev-backend.c Match the MEI UUID in quirk files 2022-10-12 13:17:42 +01:00
fu-udev-backend.h Ensure the context is set for all backends 2022-09-06 20:30:21 +01:00
fu-usb-backend.c Add support for platform capability descriptors so devices can set quirks 2022-09-13 12:07:35 +01:00
fu-usb-backend.h Ensure the context is set for all backends 2022-09-06 20:30:21 +01:00
fu-util-bios-setting.c trivial: Fix one -Wunused-variable warning 2022-08-26 21:18:25 +01:00
fu-util-bios-setting.h trivial: Unify ambiguity between bios-attrs and bios-settings 2022-08-24 07:20:01 -05:00
fu-util-common.c redfish: Implement updates for Supermicro machines 2022-10-06 12:49:49 +01:00
fu-util-common.h Allow optionally translating request messages 2022-10-03 20:54:24 +01:00
fu-util.c Allow optionally translating request messages 2022-10-03 20:54:24 +01:00
fwupd-windows.mc Build a dummy event message file for Windows 2022-05-13 15:08:39 +01:00
fwupd.gresource.xml Add initial build files and enough code to launch a simple D-Bus daemon 2015-02-26 18:16:40 +00:00
fwupdagent.1 trivial: fix man page sections 2022-01-04 14:17:43 -06:00
fwupdmgr.1 trivial: fix man page sections 2022-01-04 14:17:43 -06:00
fwupdtool.1 trivial: fix man page sections 2022-01-04 14:17:43 -06:00
meson.build add an rpath to things not compiled into a library 2022-10-07 14:16:37 -05:00
org.freedesktop.fwupd.xml trivial: Unify ambiguity between bios-attrs and bios-settings 2022-08-24 07:20:01 -05:00
README.md trivial: update markdown for pre-commit style 2021-07-18 14:42:47 -05:00

Quirk use

Quirks are defined by creating an INI style file in the compiled in quirk location (typically /usr/share/fwupd/quirks.d).

The quirk is declared by creating a group based upon the DeviceInstanceId or GUID and then mapping out values to keys.

All plugins

All fwupd devices support the following quirks:

Plugin

Sets the plugin to use for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the plugin name, e.g. csr
  • Minimum fwupd version: 1.1.0

Flags

Assigns optional quirks to use for a 8bitdo device

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the quirk, e.g. is-bootloader
  • Supported values:
    • none: no device quirks
    • is-bootloader: device is in bootloader mode
  • Minimum fwupd version: 1.0.3

Summary

Sets a summary for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • the device summary, e.g. An open source display colorimeter
  • Minimum fwupd version: 1.0.2

Icon

Adds an icon name for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the device icon name, e.g. media-removable
  • Minimum fwupd version: 1.0.2

Name

Sets a name for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the device name, e.g. ColorHug
  • Minimum fwupd version: 1.0.2

Guid

Adds an extra GUID for a specific hardware device. If the value provided is not already a suitable GUID, it will be converted to one.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the GUID, e.g. 537f7800-8529-5656-b2fa-b0901fe91696
  • Minimum fwupd version: 1.0.3

CounterpartGuid

Adds an counterpart GUID for a specific hardware device. If the value provided is not already a suitable GUID, it will be converted to one. A counterpart GUID is typically the GUID of the same device in bootloader or runtime mode, if they have a different device PCI or USB ID. Adding this type of GUID does not cause a "cascade" by matching using the quirk database.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the GUID, e.g. 537f7800-8529-5656-b2fa-b0901fe91696
  • Minimum fwupd version: 1.1.2

ParentGuid

Adds an extra GUID to mark as the parent device. If the value provided is not already a suitable GUID, it will be converted to one.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the GUID, e.g. 537f7800-8529-5656-b2fa-b0901fe91696
  • Minimum fwupd version: 1.1.2

Children

Adds one or more virtual devices to a physical device. To set the object type of the child device use a pipe before the object type, for instance: FuRts54xxDeviceUSB\VID_0763&PID_2806&I2C_01 If the type of device is not specified the parent device type is used. If the values provided are not already suitable GUIDs, they will be converted.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: The virtual device, delimited by a comma
  • Minimum fwupd version: 1.1.2

Vendor

Sets a vendor name for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the vendor, e.g. Hughski Limited
  • Minimum fwupd version: 1.0.3

VendorId

Sets a vendor ID for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: the vendor, e.g. USB:0x123A
  • Minimum fwupd version: 1.1.2

Version

Sets a version for a specific hardware device.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: Version number, e.g. 1.2
  • Minimum fwupd version: 1.0.3

FirmwareSizeMin

Sets the minimum allowed firmware size.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: A number in bytes, e.g. 512
  • Minimum fwupd version: 1.1.2

FirmwareSizeMax

Sets the maximum allowed firmware size.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: A number in bytes, e.g. 1024
  • Minimum fwupd version: 1.1.2

InstallDuration

Sets the estimated time to flash the device

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: A number in seconds, e.g. 60
  • Minimum fwupd version: 1.1.3

VersionFormat

Sets the version format the device should use for conversion.

  • Key: the device ID, e.g. USB\VID_0763&PID_2806
  • Value: The quirk format, e.g. quad
  • Minimum fwupd version: 1.2.0

Plugin specific

Plugins may add support for additional quirks that are relevant only for those plugins. View them by looking at the README.md in plugin directories.

Example

Here is an example as seen in the CSR plugin.

[USB\VID_0A12&PID_1337]
Plugin = dfu_csr
Name = H05
Summary = Bluetooth Headphones
Icon = audio-headphones
Vendor = AIAIAI
[USB\VID_0A12&PID_1337&REV_2520]
Version = 1.2

Additional samples can be found in other plugins.