FwupdPlugin.Device
Description: Reference for FwupdPlugin.Device

### Class

# FwupdPluginDevice

#### Description [src]

    class FwupdPlugin.Device : Fwupd.Device {
      parent_instance: FwupdDevice
    }

A physical or logical device that is exported to the daemon.

See also: `FuDeviceLocker`, `FwupdDevice`

#### Hierarchy

#### Ancestors

- FwupdDevice
- GObject

#### Descendants

- FuBluezDevice
- FuCfiDevice
- FuUdevDevice
- FuUsbDevice

#### Constructors

###### fu_device_new

Creates a new `Fudevice`.

since: 1.8.2

#### Functions

###### fu_device_internal_flag_from_string

Converts a string to an internal device flag.

since: 1.5.5

###### fu_device_internal_flag_to_string

Converts an internal device flag to a string.

since: 1.5.5

#### Instance methods

###### fu_device_activate

Activates up a device, which normally means the device switches to a new firmware version. This should only be called when data loss cannot occur.

since: 1.2.6

###### fu_device_add_child

Sets any child device. An child device is logically linked to the primary device in some way.

since: 1.0.8

###### fu_device_add_counterpart_guid

Adds a GUID to the device. If the `guid` argument is not a valid GUID then it is converted to a GUID using fwupd_guid_hash_string().

since: 1.1.2

###### fu_device_add_flag

Adds a device flag to the device.

since: 0.1.0

###### fu_device_add_guid

Adds a GUID to the device. If the `guid` argument is not a valid GUID then it is converted to a GUID using fwupd_guid_hash_string().

since: 0.7.2

###### fu_device_add_guid_full

Adds a GUID to the device. If the `guid` argument is not a valid GUID then it is converted to a GUID using fwupd_guid_hash_string().

since: 1.6.2

###### fu_device_add_instance_id

Adds an instance ID to the device. If the `instance_id` argument is already a valid GUID then `fu_device_add_guid()` should be used instead.

since: 1.2.5

###### fu_device_add_instance_id_full

Adds an instance ID with all parameters set.

since: 1.2.9

###### fu_device_add_instance_str

Assign a value for the `key`.

since: 1.7.7

###### fu_device_add_instance_strsafe

Assign a sanitized value for the `key`.

since: 1.7.7

###### fu_device_add_instance_strup

Assign a uppercase value for the `key`.

since: 1.7.7

###### fu_device_add_instance_u16

Assign a value to the `key`, which is padded as `4X`.

since: 1.7.7

###### fu_device_add_instance_u32

Assign a value to the `key`, which is padded as `8X`.

since: 1.7.7

###### fu_device_add_instance_u4

Assign a value to the `key`, which is padded as `1X`.

since: 1.7.7

###### fu_device_add_instance_u8

Assign a value to the `key`, which is padded as `2X`.

since: 1.7.7

###### fu_device_add_internal_flag

Adds a private flag that stays internal to the engine and is not leaked to the client.

since: 1.5.5

###### fu_device_add_parent_backend_id

Sets any parent device using the physical ID. An parent device is logically linked to the primary device in some way and can be added before or after `self`.

since: 1.9.7

###### fu_device_add_parent_guid

Sets any parent device using a GUID. An parent device is logically linked to the primary device in some way and can be added before or after `self`.

since: 1.0.8

###### fu_device_add_parent_physical_id

Sets any parent device using the physical ID. An parent device is logically linked to the primary device in some way and can be added before or after `self`.

since: 1.6.2

###### fu_device_add_possible_plugin

Adds a plugin name to the list of plugins that might be able to handle this device. This is typically called from a quirk handler.

since: 1.5.1

###### fu_device_add_private_flag

Adds a private flag that can be used by the plugin for any purpose.

since: 1.6.2

###### fu_device_add_problem

Prevent the device from being updated, changing it from `FWUPD_DEVICE_FLAG_UPDATABLE` to `FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN` if not already inhibited.

since: 1.8.1

###### fu_device_add_security_attrs

Adds HSI security attributes.

since: 1.6.0

###### fu_device_add_string

Add daemon-specific device metadata to an existing string.

since: 1.7.1

###### fu_device_attach

Attaches a device from the bootloader into application mode.

since: 1.0.8

###### fu_device_attach_full

Attaches a device from the bootloader into application mode.

since: 1.7.0

###### fu_device_bind_driver

Binds a driver to the device, which normally means the kernel driver takes control of the hardware.

since: 1.5.0

###### fu_device_build_instance_id

Creates an instance ID from a prefix and some key values. If the key value cannot be found, the parent and then proxy is also queried.

since: 1.7.7

###### fu_device_build_instance_id_full

Creates an instance ID with specific flags from a prefix and some key values. If any of the key values are unset then no instance ID is added.

since: 1.9.8

###### fu_device_cleanup

Cleans up a device after an update. A different plugin can handle each of FuDevice->write_firmware(), FuDevice->attach() and FuDevice->cleanup().

since: 1.3.3

###### fu_device_close

Closes a device, optionally running a object-specific vfunc.

since: 1.1.2

###### fu_device_convert_instance_ids

Converts all the Device instance IDs added using `fu_device_add_instance_id()` into actual GUIDs, unless `FU_DEVICE_INTERNAL_FLAG_NO_AUTO_INSTANCE_IDS` has been set.

since: 1.2.5

###### fu_device_detach

Detaches a device from the application into bootloader mode.

since: 1.0.8

###### fu_device_detach_full

Detaches a device from the application into bootloader mode.

since: 1.7.0

###### fu_device_dump_firmware

Reads the raw firmware image from the device by calling a plugin-specific vfunc. This raw firmware image may contain serial numbers or device-specific configuration but should be a byte-for-byte match compared to using an external SPI programmer.

since: 1.5.0

###### fu_device_emit_request

Emit a request from a plugin to the client.

since: 1.9.8

###### fu_device_ensure_from_component

Ensure all properties from the donor AppStream component as required.

since: 1.8.13

###### fu_device_ensure_id

If not already set, generates a device ID with the optional physical and logical IDs.

since: 1.1.2

###### fu_device_get_acquiesce_delay

Returns the time the daemon should wait for devices to finish hotplugging after the update has completed.

since: 1.8.3

###### fu_device_get_alternate

Gets any alternate device. An alternate device may be linked to the primary device in some way.

since: 0.7.2

###### fu_device_get_alternate_id

Gets any alternate device ID. An alternate device may be linked to the primary device in some way.

since: 1.1.0

###### fu_device_get_backend_id

Gets the ID set for the device as recognized by the backend. This is typically a Linux sysfs path or USB platform ID. If unset, it also falls back to the physical ID as this may be the same value.

since: 1.5.8

###### fu_device_get_battery_level

Returns the battery level.

since: 1.5.8

###### fu_device_get_battery_threshold

Returns the battery threshold under which a firmware update cannot be performed.

since: 1.6.0

###### fu_device_get_children

Gets any child devices. A child device is logically “below” the current device and this may be reflected in client tools.

since: 1.0.8

###### fu_device_get_context

Gets the context assigned for this device.

since: 1.6.0

###### fu_device_get_custom_flags

Gets the custom flags for the device from the quirk system.

since: 1.1.0

###### fu_device_get_equivalent_id

Gets any equivalent ID for a device.

since: 0.6.1

###### fu_device_get_firmware_gtype

Gets the default firmware type for the device.

since: 1.7.2

###### fu_device_get_firmware_size_max

Gets the maximum size of the firmware blob.

since: 1.2.6

###### fu_device_get_firmware_size_min

Gets the minimum size of the firmware blob.

since: 1.2.6

###### fu_device_get_guids_as_str

Gets the device GUIDs as a joined string, which may be useful for error messages.

since: 1.0.8

###### fu_device_get_instance_str

Looks up an instance ID by a key.

since: 1.8.15

###### fu_device_get_internal_flags

Gets all the internal flags.

since: 1.7.1

###### fu_device_get_logical_id

Gets the logical ID set for the device, which disambiguates devices with the same physical ID.

since: 1.1.2

###### fu_device_get_metadata

Gets an item of metadata from the device.

since: 0.1.0

###### fu_device_get_metadata_boolean

Gets an item of metadata from the device.

since: 0.9.7

###### fu_device_get_metadata_integer

Gets an item of metadata from the device.

since: 0.9.7

###### fu_device_get_order

Gets the device order, where higher numbers are installed after lower numbers.

since: 1.0.8

###### fu_device_get_parent

Gets any parent device. An parent device is logically “above” the current device and this may be reflected in client tools.

since: 1.0.8

###### fu_device_get_parent_backend_ids

Gets any parent device IDs. If a device is added to the daemon that matches the physical ID added from `fu_device_add_parent_backend_id()` then this device is marked the parent of `self`.

since: 1.9.7

###### fu_device_get_parent_guids

Gets any parent device GUIDs. If a device is added to the daemon that matches any GUIDs added from `fu_device_add_parent_guid()` then this device is marked the parent of `self`.

since: 1.0.8

###### fu_device_get_parent_physical_ids

Gets any parent device IDs. If a device is added to the daemon that matches the physical ID added from `fu_device_add_parent_physical_id()` then this device is marked the parent of `self`.

since: 1.6.2

###### fu_device_get_physical_id

Gets the physical ID set for the device, which represents the electrical connection used to compare devices.

since: 1.1.2

###### fu_device_get_possible_plugins

Gets the list of possible plugin names, typically added from quirk files.

since: 1.3.3

###### fu_device_get_priority

Gets the device priority, where higher numbers are better.

since: 1.1.1

###### fu_device_get_private_flags

Returns all the private flags that can be used by the plugin for any purpose.

since: 1.6.2

###### fu_device_get_proxy

Gets any proxy device. A proxy device can be used to perform an action on behalf of another device, for instance attach()ing it after a successful update.

since: 1.4.1

###### fu_device_get_proxy_guid

Gets the proxy GUID device, which is set to let the engine match up the proxy between plugins.

since: 1.4.1

###### fu_device_get_proxy_with_fallback

Gets the proxy device if `FU_DEVICE_INTERNAL_FLAG_USE_PROXY_FALLBACK` is set, falling back to the device itself.

since: 1.6.2

###### fu_device_get_remove_delay

Returns the maximum delay expected when replugging the device going into bootloader mode.

since: 1.0.2

###### fu_device_get_request_cnt

Returns the number of requests of a specific kind. This function is only useful to the daemon, which uses it to synthesize artificial events for plugins not yet ported to `FwupdRequest`.

since: 1.6.2

###### fu_device_get_results

Gets the results of the last update operation on the device by calling a vfunc.

since: 1.6.2

###### fu_device_get_root

Gets the root parent device. A parent device is logically “above” the current device and this may be reflected in client tools.

since: 1.4.0

###### fu_device_get_specialized_gtype

Gets the specialized type of the device.

since: 1.3.3

###### fu_device_get_update_request_id

Gets the update request ID as specified from `LVFS::UpdateRequestId`.

since: 1.8.6

###### fu_device_has_guid

Finds out if the device has a specific GUID.

since: 1.2.2

###### fu_device_has_inhibit

Check if the device already has an inhibit with a specific ID.

since: 1.8.0

###### fu_device_has_internal_flag

Tests for a private flag that stays internal to the engine and is not leaked to the client.

since: 1.5.5

###### fu_device_has_parent_backend_id

Searches the list of parent IDs for a string match.

since: 1.9.7

###### fu_device_has_parent_guid

Searches the list of parent GUIDs for a string match.

since: 1.0.8

###### fu_device_has_parent_physical_id

Searches the list of parent IDs for a string match.

since: 1.6.2

###### fu_device_has_private_flag

Tests for a private flag that can be used by the plugin for any purpose.

since: 1.6.2

###### fu_device_has_problem

Query if a device has a specific problem.

since: 1.8.11

###### fu_device_incorporate

Copy all properties from the donor object if they have not already been set.

since: 1.1.0

###### fu_device_incorporate_flag

Copy the value of a specific flag from the donor object.

since: 1.3.5

###### fu_device_inhibit

Prevent the device from being updated, changing it from `FWUPD_DEVICE_FLAG_UPDATABLE` to `FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN` if not already inhibited.

since: 1.6.0

###### fu_device_open

Opens a device, optionally running a object-specific vfunc.

since: 1.1.2

###### fu_device_poll

Polls a device, typically querying the hardware for status.

since: 1.1.2

###### fu_device_poll_locker_new

Returns a device locker that prevents polling on the device. If there are no open poll lockers then the poll callback will be called.

since: 1.8.1

###### fu_device_prepare

Prepares a device for update. A different plugin can handle each of FuDevice->prepare(), FuDevice->detach() and FuDevice->write_firmware().

since: 1.3.3

###### fu_device_prepare_firmware

Prepares the firmware by calling an optional device-specific vfunc for the device, which can do things like decompressing or parsing of the firmware data.

since: 1.1.2

###### fu_device_probe

Probes a device, setting parameters on the object that does not need the device open or the interface claimed. If the device is not compatible then an error should be returned.

since: 1.1.2

###### fu_device_probe_complete

Tell the device that all probing has finished. This allows it to release any resources that are only valid during coldplug or hotplug.

since: 1.8.12

###### fu_device_probe_invalidate

Normally when calling `fu_device_probe()` multiple times it is only done once. Calling this method causes the next requests to `fu_device_probe()` and `fu_device_setup()` actually probe the hardware.

since: 1.1.2

###### fu_device_read_firmware

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.

since: 1.0.8

###### fu_device_register_private_flag

Registers a private device flag so that it can be set from quirk files and printed correctly in debug output.

since: 1.6.2

###### fu_device_reload

Reloads a device that has just gone from bootloader into application mode.

since: 1.3.3

###### fu_device_remove_child

Removes child device.

since: 1.6.2

###### fu_device_remove_flag

Removes a device flag from the device.

since: 1.6.0

###### fu_device_remove_internal_flag

Removes a private flag that stays internal to the engine and is not leaked to the client.

since: 1.5.5

###### fu_device_remove_metadata

Removes an item of metadata on the device.

since: 1.3.3

###### fu_device_remove_private_flag

Removes a private flag that can be used by the plugin for any purpose.

since: 1.6.2

###### fu_device_remove_problem

Allow the device from being updated if there are no other inhibitors, changing it from `FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN` to `FWUPD_DEVICE_FLAG_UPDATABLE`.

since: 1.8.1

###### fu_device_replace

Copy properties from the old (no-longer-connected) device to the new (connected) device.

since: 1.9.2

###### fu_device_report_metadata_post

Collects metadata that would be useful for debugging a failed update report.

since: 1.5.0

###### fu_device_report_metadata_pre

Collects metadata that would be useful for debugging a failed update report.

since: 1.5.0

###### fu_device_rescan

Rescans a device, re-adding GUIDs or flags based on some hardware change.

since: 1.3.1

###### fu_device_retry

Calls a specific function a number of times, optionally handling the error with a reset action.

since: 1.4.0

###### fu_device_retry_add_recovery

Sets the optional function to be called when `fu_device_retry()` fails, which is possibly a device reset.

since: 1.4.0

###### fu_device_retry_full

Calls a specific function a number of times, optionally handling the error with a reset action.

since: 1.5.5

###### fu_device_retry_set_delay

Sets the recovery delay between failed retries.

since: 1.4.0

###### fu_device_security_attr_new

Creates a new `FwupdSecurityAttr` for this specific device.

since: 1.8.4

###### fu_device_set_acquiesce_delay

Sets the time the daemon should wait for devices to finish hotplugging after the update has completed.

since: 1.8.3

###### fu_device_set_alternate

Sets any alternate device. An alternate device may be linked to the primary device in some way.

since: 0.7.2

###### fu_device_set_alternate_id

Sets any alternate device ID. An alternate device may be linked to the primary device in some way.

since: 1.1.0

###### fu_device_set_backend_id

Sets the backend ID on the device. This is designed to disambiguate devices with the same physical ID. This is typically a Linux sysfs path or USB platform ID.

since: 1.5.8

###### fu_device_set_battery_level

Sets the battery level, or `FWUPD_BATTERY_LEVEL_INVALID`.

since: 1.5.8

###### fu_device_set_battery_threshold

Sets the battery level, or `FWUPD_BATTERY_LEVEL_INVALID` for the default.

since: 1.6.0

###### fu_device_set_context

Sets the optional context which may be useful to this device. This is typically set after the device has been created, but before the device has been opened or probed.

since: 1.6.0

###### fu_device_set_custom_flags

Sets the custom flags from the quirk system that can be used to affect device matching. The actual string format is defined by the plugin.

since: 1.1.0

###### fu_device_set_equivalent_id

Sets any equivalent ID for a device.

since: 0.6.1

###### fu_device_set_firmware_gtype

Sets the default firmware type for the device.

since: 1.7.2

###### fu_device_set_firmware_size

Sets the exact allowed size of the firmware blob.

since: 1.2.6

###### fu_device_set_firmware_size_max

Sets the maximum allowed size of the firmware blob.

since: 1.1.2

###### fu_device_set_firmware_size_min

Sets the minimum allowed size of the firmware blob.

since: 1.1.2

###### fu_device_set_id

Sets the ID on the device. The ID should represent the connection of the device, so that any similar device plugged into a different slot will have a different `id` string.

since: 0.7.1

###### fu_device_set_internal_flags

Sets the internal flags.

since: 1.7.1

###### fu_device_set_logical_id

Sets the logical ID on the device. This is designed to disambiguate devices with the same physical ID.

since: 1.1.2

###### fu_device_set_metadata

Sets an item of metadata on the device.

since: 0.1.0

###### fu_device_set_metadata_boolean

Sets an item of metadata on the device. When `value` is set to `TRUE` the actual stored value is `true`.

since: 0.9.7

###### fu_device_set_metadata_integer

Sets an item of metadata on the device. The integer is stored as a base-10 string internally.

since: 0.9.7

###### fu_device_set_name

Sets the name on the device. Any invalid parts will be converted or removed.

since: 0.7.1

###### fu_device_set_order

Sets the device order, where higher numbers are installed after lower numbers.

since: 1.0.8

###### fu_device_set_parent

Sets any parent device. An parent device is logically “above” the current device and this may be reflected in client tools.

since: 1.0.8

###### fu_device_set_physical_id

Sets the physical ID on the device which represents the electrical connection of the device to the system. Multiple `FuDevices` can share a physical ID.

since: 1.1.2

###### fu_device_set_poll_interval

Polls the hardware every interval period. If the subclassed `->poll()` method returns `FALSE` then a warning is printed to the console and the poll is disabled until the next call to fu_device_set_poll_interval().

since: 1.1.2

###### fu_device_set_priority

Sets the device priority, where higher numbers are better.

since: 1.1.1

###### fu_device_set_private_flags

Sets private flags that can be used by the plugin for any purpose.

since: 1.6.2

###### fu_device_set_progress

Sets steps on the progress object used to write firmware.

since: 1.7.0

###### fu_device_set_proxy

Sets any proxy device. A proxy device can be used to perform an action on behalf of another device, for instance attach()ing it after a successful update.

since: 1.4.1

###### fu_device_set_proxy_guid

Sets the GUID of the proxy device. The proxy device may update `self`.

since: 1.4.1

###### fu_device_set_quirk_kv

Sets a specific quirk on the device.

since: 1.8.5

###### fu_device_set_remove_delay

Sets the amount of time a device is allowed to return in bootloader mode.

since: 1.0.2

###### fu_device_set_update_request_id

Sets the update request ID as specified in `LVFS::UpdateRequestId`.

since: 1.8.6

###### fu_device_set_update_state

Sets the update state, clearing the update error as required.

since: 1.6.2

###### fu_device_set_vendor

Sets the vendor name on the device.

since: 1.6.2

###### fu_device_set_version

Sets the device version, sanitizing the string if required.

since: 1.2.9

###### fu_device_set_version_bootloader

Sets the device bootloader version, sanitizing the string if required.

since: 1.4.0

###### fu_device_set_version_format

Sets the device version format.

since: 1.4.0

###### fu_device_set_version_lowest

Sets the device lowest version, sanitizing the string if required.

since: 1.4.0

###### fu_device_set_version_raw

Sets the raw device version from a integer value and the device version format.

since: 1.9.8

###### fu_device_set_version_u16

Sets the device version from a integer value and the device version format.

since: 1.9.8

###### fu_device_set_version_u24

Sets the device version from a integer value and the device version format.

since: 1.9.8

###### fu_device_set_version_u32

Sets the device version from a integer value and the device version format.

since: 1.9.8

###### fu_device_set_version_u64

Sets the device version from a integer value and the device version format.

since: 1.9.8

###### fu_device_setup

Sets up a device, setting parameters on the object that requires the device to be open and have the interface claimed. If the device is not compatible then an error should be returned.

since: 1.1.2

###### fu_device_sleep

Delays program execution up to 100 seconds, unless the device is emulated where no delays is performed.

since: 1.8.11

###### fu_device_sleep_full

Delays program execution up to 1000 seconds, unless the device is emulated where no delays is performed.

since: 1.8.11

###### fu_device_to_string

This allows us to easily print the device, the release and the daemon-specific metadata.

since: 0.9.8

###### fu_device_unbind_driver

Unbinds the driver from the device, which normally means the kernel releases the hardware so it can be used from userspace.

since: 1.5.0

###### fu_device_uninhibit

Allow the device from being updated if there are no other inhibitors, changing it from `FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN` to `FWUPD_DEVICE_FLAG_UPDATABLE`.

since: 1.6.0

###### fu_device_write_firmware

Writes firmware to the device by calling a plugin-specific vfunc.

since: 1.0.8

##### Methods inherited from FwupdDevice (113)

Please see FwupdDevice for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

#### Properties

###### FwupdPlugin.Device:backend-id

The device backend ID.

since: 1.5.8

###### FwupdPlugin.Device:context

The `FuContext` to use.

since: 1.6.0

###### FwupdPlugin.Device:internal-flags

The device internal flags.

since: 1.9.1

###### FwupdPlugin.Device:logical-id

The device logical ID.

since: 1.1.2

###### FwupdPlugin.Device:parent

The device parent.

since: 1.0.8

###### FwupdPlugin.Device:physical-id

The device physical ID.

since: 1.1.2

###### FwupdPlugin.Device:private-flags

The device private flags.

since: 1.9.1

###### FwupdPlugin.Device:proxy

The device proxy to use.

since: 1.4.1

##### Properties inherited from FwupdDevice (14)

###### Fwupd.Device:battery-level

The device battery level in percent.

since: 1.5.8

###### Fwupd.Device:battery-threshold

The device battery threshold in percent.

since: 1.5.8

###### Fwupd.Device:flags

The device flags.

since: 0.9.3

###### Fwupd.Device:parent

The device parent.

since: 1.0.8

###### Fwupd.Device:percentage

The current device percentage.

since: 1.8.11

###### Fwupd.Device:problems

The problems with the device that the user could fix, e.g. “lid open”.

since: 1.8.1

###### Fwupd.Device:protocol

The device protocol.

deprecated: 1.5.8 since: 1.3.6

###### Fwupd.Device:status

The current device status.

since: 1.4.0

###### Fwupd.Device:update-error

The device update error.

since: 0.9.8

###### Fwupd.Device:update-image

The update image for the device.

since: 1.4.5

###### Fwupd.Device:update-message

The device update message.

since: 1.2.4

###### Fwupd.Device:update-state

The device update state.

since: 0.9.8

###### Fwupd.Device:version

The device version.

since: 1.8.15

###### Fwupd.Device:version-format

The version format of the device.

since: 1.2.9

#### Signals

###### FwupdPlugin.Device::child-added

The ::child-added signal is emitted when a device has been added as a child.

since: 1.0.8

###### FwupdPlugin.Device::child-removed

The ::child-removed signal is emitted when a device has been removed as a child.

since: 1.0.8

###### FwupdPlugin.Device::request

The ::request signal is emitted when the device needs interactive action from the user.

since: 1.6.2

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct FwupdPluginDeviceClass {
      FwupdDeviceClass parent_class;

    }

No description available.

###### Class members

`parent_class: FwupdDeviceClass`
  No description available.