Commit Graph

2401 Commits

Author SHA1 Message Date
Richard Hughes
5a86d4792d trivial: Parse the vendor and model from hidraw devices 2018-09-03 19:56:26 -05:00
Richard Hughes
3f3aba2530 trivial: Do not call probe() for every open()+close() cycle
Probe is supposed to be used to check things like the VID and PID, and to
optionally add extra GUIDs to the device. Crucially, it doesn't require open()
to operate, and so it's wrong to reprobe() on calling close().
2018-09-03 19:56:26 -05:00
Richard Hughes
8f0695c762 trivial: Allow setting the VendorID from a quirk 2018-09-03 07:18:36 -05:00
Mario Limonciello
9ef5f741bc plugins: Set platform IDs for non-USB/non-UDEV plugins 2018-09-02 14:45:39 -05:00
Mario Limonciello
325d5a8f07 fu-device-list: Don't match NULL platform IDs together
This caused errors of mismatching devices that didn't have platform
ID's set.

Example:
18:40:24:0555 Fu  ignoring device 370e10407b1f04ade798a9f1d3e1fa57c67750c3 [uefi] existing device 088df415cdee883ec89563e41e6d495924250174 [amt] already exists

Fixes: 3a8d5328 ("Allow the device list to take care of waiting for the device replug")
2018-09-02 14:45:39 -05:00
Mario Limonciello
4631bd7f21 trivial: fu-device: Downgrade warnings about overwiting same name to debug
Commit 0f72ef2f88 causes probe to be re-run on FuDevices.
Any devices derived from FuUsbDevice that set the "Name" key will have the
quirks re-evaluated when GUIDs are added again leading to warnings like this:

```
(fwupdtool:8259): Fu-WARNING **: 23:04:43.144: device 970e85c8400ed95ec5c02b86e52a0ca4ce6fc051 overwriting same name value: Dell USB hub
```
2018-09-01 08:33:08 -05:00
Richard Hughes
3a8d532855 Allow the device list to take care of waiting for the device replug
This means that individual plugins do not have to manage thier own GUsbDevice
lifecycle and no longer have to call g_usb_context_wait_for_replug().
2018-08-31 16:41:40 +01:00
Richard Hughes
457888e418 Always use the same HardwareIDs as Windows
ComputerHardwareIds.exe seems to strip any trailing whitespace before building
the UTF-16 string for hashing. If a SMBIOS blob contains strings with trailing
whitespace then until now the 'fwupdmgr hwids' output would show different
HwIds than when running Windows on the same hardware -- which confuses everyone.

Although this may change the HwIds from 1.1.1 to 1.1.2 on some hardware, I'd
argue it's more important to match the Windows Hardware IDs rather than have
a 'similar, but not the same' implementation.

This affects the Lenovo X380 Yoga, although may also affect other machines.
2018-08-31 16:39:09 +01:00
Richard Hughes
a574a75b61 trivial: Add fu_common_strstrip() for future use 2018-08-31 16:39:09 +01:00
Richard Hughes
1d894f13cc trivial: Move the hwids debug functionality to fwupdtool 2018-08-31 16:39:09 +01:00
Richard Hughes
c440da9494 trivial: Allow running 'fwupdmgr hwids' with an optional DMI file 2018-08-31 16:39:09 +01:00
Richard Hughes
5b281e6f5e trivial: Make the 'Computer Information' match ComputerHardwareIds.exe
The BIOS release is specified in base 16, but seemingly displayed in base 10.
It's hashed with the former, so no HwIds need to change.
2018-08-31 16:39:09 +01:00
Richard Hughes
effcc7a7a7 trivial: Fix regression when enumerating udev subsystems 2018-08-31 14:34:01 +01:00
Richard Hughes
c0c6712fcc trivial: Display a more natural string for the time remaining
We can't pretend we're accurate to 10m in the precision of the float when we're
doing things like USB re-enumeration which can take several seconds. I believe
users want some indication of 'should I wait or go do something else' rather
than any precise timings.
2018-08-31 12:04:58 +01:00
Richard Hughes
c0dd011eaf trivial: Fix the DFU A3BU self test failure
The .cab file was re-uploaded with the same version to the LVFS to test the
LVFS::InhibitDownload functionality, but of course the SHA1 hash changed.
2018-08-31 09:58:40 +01:00
Richard Hughes
b1e49e8bdf unifying: Specify the runtime counterpart GUID
This shouldn't have an effect now, but is required when the device list starts
handling the replug, and it seems logically correct.
2018-08-31 09:58:40 +01:00
Richard Hughes
f27f8781cd unifying: Specify the plugin when in unifying mode
A small optimization, which avoids us querying all the USB plugins to find a
match each time.
2018-08-31 09:58:40 +01:00
Richard Hughes
3d178befb1 Download firmware if the user specifies a URI 2018-08-31 06:07:46 +01:00
Richard Hughes
798cb062bf trivial: Refactor out functionality to get a user cachedir filename 2018-08-30 17:29:52 +01:00
Richard Hughes
fd406616f7 trivial: Create fu_device_list_replace() for future re-use 2018-08-30 16:58:01 +01:00
Richard Hughes
0f72ef2f88 trivial: Invalidate the probe if the FuDevice is closed
For DFU it is important to re-get the interfaces and list of quirks when
switching from runtime -> bootloader -> runtime.
2018-08-30 16:55:41 +01:00
Richard Hughes
838d91e4ed Add support for counterpart GUIDs
These are GUIDs that are related to the main device, but should not be used for
quirk matching. For instance, we might want to list the GUIDs for a bootloader
mode, but we don't want to import all the quirks for the bootloader when in the
runtime mode.
2018-08-30 16:55:41 +01:00
Richard Hughes
22367e7948 trivial: Refactor out functionality from a mega-method 2018-08-30 16:53:19 +01:00
Richard Hughes
50d6bd10bd trivial: Add refcounting to fu_device_open() 2018-08-29 19:12:29 +01:00
Richard Hughes
23170a8195 trivial: Set the plugin name when the GUID is added 2018-08-29 14:27:57 +01:00
Richard Hughes
97a3c9651b dfu: Set the quirk keys using the new vfunc 2018-08-29 14:27:57 +01:00
Richard Hughes
168a209a14 trivial: Add a vfunc for setting the quirk KVs in derived objects 2018-08-29 14:27:57 +01:00
Richard Hughes
163947bd5f Improve performance when reading keys from the quirk database
Rather than guessing the keys that might be present, and doing two hash lookups
for each, get the key values in one call. This is somewhat more performant, and
allows us to do clever things in the future.
2018-08-29 14:27:57 +01:00
Richard Hughes
143f656b69 Split the quirks query into a two-stage lookup
At the moment quirks are hashed with a key based on the group appended with the
key, which is sometimes made into a GUID. This is suboptimal as when a device
has many different quirk keys (e.g. Name, Summary and Flags) as we hash and
store the same key prefix each time.

Instead, use a 1st level hash to map the group (typically the GUID) to another
hash table. Then use the 2nd level hash to get the value using the key.

This does increase the query time slightly, although reduces RSS considerably --
although not by as much as you'd think as creating a GHashTable with one entry
is more RSS than just storing the string.

This representation does have one huge benefit: You can now get all the keys
of quirk entry without having to guess what they might be. This lets us do some
more efficiency gains with follow up patches.
2018-08-29 14:27:57 +01:00
Richard Hughes
83d79e2e12 trivial: Move the DfuDevice class init to the bottom of the file 2018-08-29 14:27:57 +01:00
Salud Lemus
980f2d9551 fu-engine: Don't fail get-details if compiled without GPG/PKCS7
Similar to commit 7d35278 regarding the install option with a daemon compiled without
GPG, but now, if you also have a daemon compiled without GPG, and if you have downloaded a
CAB file from LVFS and ran get-details, it would fail to display the contents
of the associated CAB file.

This allows it to still display the contents of the CAB file, and
a warning will be displayed in the logs.
2018-08-29 10:27:40 +01:00
Mario Limonciello
812ac02bac synapticsmst: Allow using a custom flag 'skip-restart'
This flag is intended for devices that the restart procedure will
be performed as part of a transactional update by an external
controller.

None of the currently supported devices need this flag.
2018-08-29 07:55:27 +01:00
Mario Limonciello
102074eeea synapticsmst: Move GUID generation into quirks
This should allow trivially adding support for new
Tesla/Leaf/Panamera devices by a quirk.
2018-08-28 15:30:21 -05:00
Richard Hughes
4937ff5499 trivial: Add a self test to test the quirk database performance 2018-08-28 20:47:09 +01:00
Richard Hughes
570f839483 trivial: Fix a tiny memory leak in the self tests 2018-08-28 20:40:50 +01:00
Mario Limonciello
7555738827 synapticsmst: Set parentage for Dell WD15/TB16/TB18 docks through quirks 2018-08-28 18:30:00 +01:00
Mario Limonciello
926da40a88 thunderbolt: Move setting parentage of TB16 into quirks 2018-08-28 18:30:00 +01:00
Richard Hughes
39a5228331 trivial: Optimize adding DFU devices we know about
Explicitly mark known-supported devices in the quirk file so that we don't have
to call fu_plugin_usb_device_added() on all USB plugins.
2018-08-28 18:30:00 +01:00
Richard Hughes
a417d6c82a trivial: Allow setting the firmware min and max sizes from quirk files 2018-08-28 18:30:00 +01:00
Richard Hughes
a62618303f trivial: Set the quirks instance on the unifying context object
This allows us to match quirks on added GUIDs.
2018-08-28 18:30:00 +01:00
Richard Hughes
bda4d81d3d trivial: Allow plugins to add virtual children from quirk files
The example here would be adding virtual i2c devices attached to an existing
USB hub device.
2018-08-28 18:30:00 +01:00
Richard Hughes
96fa7d9f49 trivial: Allow devices to set the parent GUID from a quirk entry 2018-08-28 18:30:00 +01:00
Richard Hughes
6dec401a67 Store the DeviceInstanceId as a GUID in the quirk database
This allows us to match non-DeviceID GUIDs, and also GUIDs we don't know how to
generate.

To make this fully useful, search for device quirks when GUIDs are added.
2018-08-28 18:30:00 +01:00
Mario Limonciello
30407537ff trivial: debian: Add Recommends for bolt
Newer versions of bolt provide a superior experience when using
Thunderbolt force power rather than directly using the kernel.

Pull bolt in when installing fwupd to take advantage of this.
2018-08-28 10:38:00 -05:00
Mario Limonciello
c07ce5b488 thunderbolt-power: Use bolt force power API if available
This is new support for bolt supported by
https://gitlab.freedesktop.org/bolt/bolt/merge_requests/101
2018-08-28 09:47:56 -05:00
Richard Hughes
201d0cce54 trivial: Further simplify the fake DFU runtime logic 2018-08-28 15:33:43 +01:00
Richard Hughes
245b595f45 flashrom: Do not use no-longer-exported symbols
This was compiling and passing CI as the un-implemented legacy functionality
was still exported in the header.

Remove the prototypes for the missing symbols and fix up the plugin.
2018-08-28 15:26:34 +01:00
Richard Hughes
c1163ba10d trivial: Fix up the quirk documentation now we use DeviceInstanceId 2018-08-28 15:19:31 +01:00
Richard Hughes
a0d7977968 dfu: Check the device state before assuming a fake runtime
If the device is not in APP_IDLE this doesn't make any sense.
2018-08-28 12:16:30 +01:00
Richard Hughes
04e321274a dfu: Never add a fake DFU runtime when targets already exist 2018-08-28 12:16:26 +01:00