### Method

# FwupdPlugin Device read_firmware

since: 1.0.8

#### Declaration [src]

    FuFirmware*
    fu_device_read_firmware (
      FuDevice* self,
      FuProgress* progress,
      GError** error
    )

#### Description [src]

Reads firmware from the device by calling a plugin-specific vfunc. The device subclass should try to ensure the firmware does not contain any serial numbers or user-configuration values and can be used to calculate the device checksum.

The return value can be converted to a blob of memory using fu_firmware_write().

Available since: 1.0.8

#### Parameters

`progress`

  Type: `FuProgress`

  A `FuProgress`.

  The data is owned by the caller of the method.

`error`

  Type: `GError **`

  The return location for a recoverable error.

  The argument can be `NULL`.
  If the return location is not `NULL`, then you must initialize it to a `NULL` `GError*`.
  The argument will be left initialized to `NULL` by the method if there are no errors.
  In case of error, the argument will be set to a newly allocated `GError`; the caller will take ownership of the data, and be responsible for freeing it.

#### Return value

Type: `FuFirmware`

A `FuFirmware`, or `NULL` for error.

The caller of the method takes ownership of the returned data, and is responsible for freeing it.