fwupd/plugins/synaptics-prometheus
Richard Hughes 41400a8cc6 Allow contructing a firmware with multiple images
At the moment there are commands to convert one file format to another, but not
to 'merge' or alter them. Some firmware files are containers which can store
multiple images, each with optional id, idx and addresses.

This would allow us to, for instance, create a DfuSe file with two different
raw files that are flashed to different addresses on the SPI flash. It would
also allow us to create very small complicated container formats for fuzzing.

This can be used by writing a `firmware.builder.xml` file like:

   <?xml version="1.0" encoding="UTF-8"?>
   <firmware gtype="FuBcm57xxFirmware">
     <version>1.2.3</version>
     <image>
       <version>4.5.6</version>
       <id>header</id>
       <idx>456</idx>
       <addr>0x456</addr>
       <filename>header.bin</filename>
     </image>
     <image>
       <version>7.8.9</version>
       <id>payload</id>
       <idx>789</idx>
       <addr>0x789</addr>
       <data>aGVsbG8=</data>
     </image>
   </firmware>

...and then using something like:

   # fwupdtool firmware-convert firmware.builder.xml firmware.dfu builder dfu
2020-09-21 18:11:13 +01:00
..
data Install the installed tests 2020-08-28 10:10:43 -05:00
fu-dump.c
fu-plugin-synaptics-prometheus.c
fu-self-test.c Install the installed tests 2020-08-28 10:10:43 -05:00
fu-synaprom-common.c
fu-synaprom-common.h
fu-synaprom-config.c trivial: Set FWUPD_STATUS_DECOMPRESSING when preparing firmware 2020-09-08 14:18:46 +01:00
fu-synaprom-config.h
fu-synaprom-device.c trivial: Set FWUPD_STATUS_DECOMPRESSING when preparing firmware 2020-09-08 14:18:46 +01:00
fu-synaprom-device.h
fu-synaprom-firmware.c
fu-synaprom-firmware.h
meson.build Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
README.md
synaptics-prometheus.quirk

Synaptics Prometheus

Introduction

This plugin can flash the firmware on the Synaptics Prometheus fingerprint readers.

Firmware Format

The daemon will decompress the cabinet archive and extract a firmware blob in an unspecified binary file format. The binary file has a vendor-specific header that is used when flashing the image.

This plugin supports the following protocol ID:

  • com.synaptics.prometheus

GUID Generation

These devices use the standard USB DeviceInstanceId values, e.g.

  • USB\VID_06CB&PID_00A9&REV_0001
  • USB\VID_06CB&PID_00A9
  • USB\VID_06CB&PID_00A9-cfg
  • USB\VID_06CB&PID_00A9&CFG1_3483&CFG2_500

Vendor ID Security

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