fwupd/plugins/fastboot
Richard Hughes bf72d393fd Split up FuUsbDevice into ->open() and ->setup()
Before this change calling FuUsbDevice->open() opened the device, and
also unconditionally added various GUIDs and InstanceIDs which we
normally do in setup.
Then fu_device_setup() would call the FuSubclass->setup() vfunc which
would have no way of either opting out of the FuUsbDevice->setup()-like
behaviour, or controlling if the parent class ->setup is run before or
after the subclass setup.

Split up FuUsbDevice->open() into clear ->open() and ->setup() phases
and add the parent class calls where appropriate.

This means that ->setup() now behaves the same as all the other vfuncs.
2021-06-17 16:21:41 +01:00
..
data Add a plugin to update hardware that supports fastboot 2018-12-03 15:50:38 +00:00
fastboot.quirk Simplify the quirk file format 2021-03-03 08:30:34 +00:00
fu-fastboot-device.c Split up FuUsbDevice into ->open() and ->setup() 2021-06-17 16:21:41 +01:00
fu-fastboot-device.h trivial: fixup includes for a variety of plugins 2021-06-14 10:12:45 +01:00
fu-plugin-fastboot.c trivial: fixup includes for a variety of plugins 2021-06-14 10:12:45 +01:00
meson.build Move the plugin build logic to the plugins themselves 2021-02-18 14:46:20 +00:00
README.md Add a new internal flag to opt-in to GUID matching 2021-02-25 15:47:25 +00:00

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_0001
  • USB\VID_18D1&PID_4EE0
  • USB\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.