This allows us to 'nest' firmware formats, and removes a ton of duplication. The aim here is to deprecate FuFirmwareImage -- it's almost always acting as a 'child' FuFirmware instance, and even copies most of the vfuncs to allow custom types. If I'm struggling to work out what should be a FuFirmware and what should be a FuFirmwareImage then a plugin author has no hope. For simple payloads we were adding bytes into an image and then the image into a firmware. This gets really messy when most plugins are treating the FuFirmware *as* the binary firmware file. The GBytes saved in the FuFirmware would be considered the payload with the aim of not using FuFirmwareImage in the single-image case. |
||
|---|---|---|
| .. | ||
| data | ||
| fastboot.quirk | ||
| fu-fastboot-device.c | ||
| fu-fastboot-device.h | ||
| fu-plugin-fastboot.c | ||
| meson.build | ||
| README.md | ||
Fastboot Support
Introduction
This plugin is used to update hardware that uses the fastboot protocol.
Firmware Format
The daemon will decompress the cabinet archive and extract a firmware blob in
ZIP file format. Inside the zip file must be all the firmware images for each
partition and a manifest file. The partition images can be in any format, but
the manifest must be either an Android flashfile.xml format file, or a QFIL
partition_nand.xml format file.
For both types, all partitions with a defined image found in the zip file will be updated.
This plugin supports the following protocol ID:
- com.google.fastboot
GUID Generation
These devices use the standard USB DeviceInstanceId values, e.g.
USB\VID_18D1&PID_4EE0&REV_0001USB\VID_18D1&PID_4EE0USB\VID_18D1
Update Behavior
A fastboot device usually presents in runtime mode (or with no interface), but if the user puts the device into fastboot mode using a physical button it then enumerates with a USB descriptor. On attach the device reboots to runtime mode which may mean the device "goes away".
For this reason the REPLUG_MATCH_GUID internal device flag is used so that
the bootloader and runtime modes are treated as the same device.
Quirk use
This plugin uses the following plugin-specific quirk:
| Quirk | Description | Minimum fwupd version |
|---|---|---|
FastbootBlockSize |
Block size to use for transfers | 1.2.2 |
Vendor ID Security
The vendor ID is set from the USB vendor, for example USB:0x18D1
External interface access
This plugin requires read/write access to /dev/bus/usb.