fwupd/plugins/thunderbolt
Richard Hughes b6f79556f1 Use a SHA1 hash for the internal DeviceID
It's actually less scary to see a SHA1 hash than it is to see a path like
/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.2. It's also way easier to
copy and paste into the various fwupdmgr command that require a device ID and
also means we can match a partial prefix much like git allows.

If we also move to a model where plugins can be changed during different stages
of the update (e.g. during detach) then the device might change connection type
and then the sysfs path not only becomes difficult to paste, but incorrect.

Session software doesn't care about the format of the device ID (it is supposed
to be an implementation detail) and so there's no API or ABI break here. A few
plugins also needed to be ported, but nothing too worrying.
2017-11-16 07:18:36 +00:00
..
fu-plugin-thunderbolt.c Use a SHA1 hash for the internal DeviceID 2017-11-16 07:18:36 +00:00
fu-plugin-thunderbolt.h thunderbolt: plugin for new tbt kernel interface 2017-08-21 17:05:44 +01:00
fu-self-test.c Use a SHA1 hash for the internal DeviceID 2017-11-16 07:18:36 +00:00
fu-thunderbolt-image.c thunderbolt: add description to all FwLocation objects 2017-08-31 13:11:52 -05:00
fu-thunderbolt-image.h thunderbolt: image validation implemented 2017-08-30 12:37:34 +01:00
fu-thunderbolt-tool.c thunderbolt: All C source files need to include config.h 2017-08-31 14:40:25 +01:00
meson.build thunderbolt: image validation implemented 2017-08-30 12:37:34 +01:00
README.md thunderbolt: Add a README file 2017-08-25 13:02:47 +01:00

Thunderbolt™ Support

Introduction

Thunderbolt™ is the brand name of a hardware interface developed by Intel that allows the connection of external peripherals to a computer. Versions 1 and 2 use the same connector as Mini DisplayPort (MDP), whereas version 3 uses USB Type-C.

Runtime Power Management

Thunderbolt controllers are slightly unusual in that they power down completely when no thunderbolt devices are detected. This poses a problem for fwupd as it can't coldplug devices to see if there are firmware updates available, and also can't ensure the controller stays awake during a firmware upgrade.

On Dell hardware the Thunderbolt::CanForcePower metadata value is set as the system can force the thunderbolt controller on during coldplug or during the firmware update process. This is typically done calling a SMI or ACPI method which asserts the GPIO for the duration of the request.

On non-Dell hardware you will have to insert a Thunderbolt device (e.g. a dock) into the laptop to be able to update the controller itself.

Safe Mode

Thunderbolt hardware is also slightly unusual in that it goes into "safe mode" whenever it encounters a critical firmware error, for instance if an update failed to be completed. In this safe mode you cannot query the controller vendor or model and therefore the thunderbolt plugin cannot add the correct GUID used to match it to the correct firmware.

In this case the metadata value Thunderbolt::IsSafeMode is set which would allow a different plugin to add the correct GUID based on some out-of-band device discovery. At the moment this only happens on Dell hardware.