fwupd/plugins/synaptics-rmi
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
..
fuzzing Add a plugin to update Synaptics RMI4 devices 2019-10-02 10:45:13 +01:00
fu-dump.c Add a plugin to update Synaptics RMI4 devices 2019-10-02 10:45:13 +01:00
fu-plugin-synaptics-rmi.c Set the protocol per-device not per-plugin 2019-11-25 18:01:54 +00:00
fu-synaptics-rmi-common.c Add a plugin to update Synaptics RMI4 devices 2019-10-02 10:45:13 +01:00
fu-synaptics-rmi-common.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-synaptics-rmi-device.c Use the FuUdevDevice ->to_string() output 2020-09-03 16:50:41 +01:00
fu-synaptics-rmi-device.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-synaptics-rmi-firmware.c trivial: Allow setting an ID of NULL for the FuFirmwareImage 2020-01-16 11:24:55 -06:00
fu-synaptics-rmi-firmware.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-synaptics-rmi-v5-device.c Do not conditionalize attach() and detach() on IS_BOOTLOADER 2020-04-09 09:55:30 +01:00
fu-synaptics-rmi-v5-device.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-synaptics-rmi-v6-device.c synaptics-rmi: Do as little as possible in device setup 2019-10-03 15:14:10 +01:00
fu-synaptics-rmi-v6-device.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-synaptics-rmi-v7-device.c synaptics-rmi: Add a missing error enum value 2020-02-07 15:16:39 +00:00
fu-synaptics-rmi-v7-device.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
meson.build Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
README.md trivial: Document the use of vendor-id in each plugin 2019-12-11 18:10:44 +00:00
synaptics-rmi.quirk synaptics-rmi: Essentially blacklist Dell K12A 2020-05-14 13:14:39 +01:00

Synaptics RMI4 Support

Introduction

This plugin updates integrated Synaptics RMI4 devices, typically touchpads.

GUID Generation

The HID DeviceInstanceId values are used, e.g. HIDRAW\VEN_06CB&DEV_4875.

These devices also use custom GUID values constructed using the board ID, e.g.

  • SYNAPTICS_RMI\TM3038-002
  • SYNAPTICS_RMI\TM3038

Vendor ID Security

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

Firmware Format

The daemon will decompress the cabinet archive and extract a firmware blob in a proprietary (but docucumented) file format.

This plugin supports the following protocol ID:

  • com.synaptics.rmi