fwupd/plugins/cfu
Richard Hughes c4b7f42e43 Only compress one version of the builtin-quirks
Saving the quirks in the GResource section worked well, but it made the build
system very complicated and also meant the .data section was duplicated in
both `fwupd` and `fwupdtool` -- negating a lot of the hard-fought savings.

Simplify this feature so that we just `cat` all the quirk files together, then
gzip them into a single file. This means that at startup fwupd only needs to
check the mtime of one file, and weirdly it's actually faster to load a smaller
compressed file from disk that it is to load multiple uncompressed files.
2022-09-27 12:44:04 +01:00
..
cfu.quirk cfu: Add an initial outline CFU plugin 2021-10-15 18:38:36 +01:00
fu-cfu-device.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-cfu-device.h cfu: Add an initial outline CFU plugin 2021-10-15 18:38:36 +01:00
fu-cfu-module.c Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-cfu-module.h cfu: Add an initial outline CFU plugin 2021-10-15 18:38:36 +01:00
fu-plugin-cfu.c Speed up the daemon startup by ~2% by doing dlsym much less 2021-11-09 12:02:07 +00:00
meson.build Only compress one version of the builtin-quirks 2022-09-27 12:44:04 +01:00
README.md cfu: Add an initial outline CFU plugin 2021-10-15 18:38:36 +01:00

Component Firmware update

Introduction

CFU is a protocol from Microsoft to make it easy to install firmware on HID devices.

This protocol is unique in that it requires has a pre-download phase before sending the firmware to the microcontroller. This is so the device can check if the firmware is required and compatible. CFU also requires devices to be able to transfer the entire new transfer mode in runtime mode.

See https://docs.microsoft.com/en-us/windows-hardware/drivers/cfu/cfu-specification for more details.

This plugin supports the following protocol ID:

  • com.microsoft.cfu

GUID Generation

These devices use standard USB DeviceInstanceId values, as well as two extra for the component ID and the bank, e.g.

  • HIDRAW\VEN_17EF&DEV_7226&CID_01&BANK_1
  • HIDRAW\VEN_17EF&DEV_7226&CID_01
  • HIDRAW\VEN_17EF&DEV_7226

Update Behavior

The device has to support runtime updates and does not have a detach-into-bootloader mode -- but after the install has completed the device still has to reboot into the new firmware.

Vendor ID Security

The vendor ID is set from the USB vendor, in this instance set to HIDRAW:0x17EF

External Interface Access

This plugin requires read/write access to /dev/bus/usb.