Commit Graph

2229 Commits

Author SHA1 Message Date
Richard Hughes
63a9665107 pixart: Fuzz the firmware parser 2021-02-17 08:48:45 +00:00
Richard Hughes
7fb4397f25 pixart: Set firmware version raw 2021-02-17 08:48:45 +00:00
JimmyYu
b7551c0211 pixart: Add support for more devices 2021-02-17 08:48:45 +00:00
Richard Hughes
f9cb8f3404 rts54hub: Add defines for the vendor commands 2021-02-17 08:41:06 +00:00
Richard Hughes
74db289c36 f 2021-02-17 15:25:41 +08:00
RickyWu
65f2fab869 rts54hub: Add child device of a RTD21xx HDMI converter 2021-02-17 15:25:41 +08:00
Lars Wendler
4a62482708 system76-launch plugin requires gusb
Otherwise the following build error happens:

  ../fwupd-1.5.6/plugins/system76-launch/fu-system76-launch-device.c:117:9: error: ‘G_USB_DEVICE_CLAIM_INTERFACE_BIND_KERNEL_DRIVER’ undeclared (first use in this function)
    117 |         G_USB_DEVICE_CLAIM_INTERFACE_BIND_KERNEL_DRIVER,
        |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  ../fwupd-1.5.6/plugins/system76-launch/fu-system76-launch-device.c:133:11: error: ‘G_USB_DEVICE_CLAIM_INTERFACE_BIND_KERNEL_DRIVER’ undeclared (first use in this function)
    133 |           G_USB_DEVICE_CLAIM_INTERFACE_BIND_KERNEL_DRIVER,
        |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-02-16 10:40:36 -06:00
Richard Hughes
86c6c2d4a3 Add fu_firmware_set_version_raw()
A few plugins need this now, so move it into the base class.
2021-02-16 15:24:29 +00:00
Richard Hughes
5018d14dcd trivial: Remove executable permission on a C source file... 2021-02-16 12:26:28 +00:00
Richard Hughes
6d656a940d Allow building without SBAT metadata
Two reasons:

 * It seems a bit antisocial to hard-require all this data without fair warning
 * The aarch64 pesign crashes when trying to sign the binary with SBAT metadata
2021-02-16 11:04:47 +00:00
Richard Hughes
f572a012f6 synaprom: Set a sane limit on the number of images that can be added
This fixes a timeout found by oss-fuzz.
2021-02-16 08:57:15 +00:00
Sean Rhodes
9840c54021 Adjusted superio L4 quirk 2021-02-15 22:24:40 +00:00
Richard Hughes
4822b3317b ccgx: Check for FPE when parsing the metadata section 2021-02-15 16:47:27 +00:00
Richard Hughes
124f2295ee trivial: Untie efi_os_dir from the SBAT distro ID
We happily fallback with an unset -Defi_os_dir and it gets confusing explaining
why the EFI dir needs to be set on a non-supported system.

In practice they'll probably have the same eventual value on most supported
distributions.

Fixes https://github.com/fwupd/fwupd/issues/2873
2021-02-12 16:01:00 +00:00
Richard Hughes
6a33d2d99e ccgx: Fix division by zero for invalid firmware 2021-02-12 13:54:01 +00:00
Javier Martinez Canillas
17c0a6c239 uefi-capsule: Fix objcopy failing to add a .sbat section on aarch64
The objcopy tool only has support for pei-x86_64 and pei-i386 targets, and
so trying to add a .sbat section for fwupdaa64.efi fails with this error:

objcopy: plugins/uefi-capsule/efi/fwupdaa64.efi: file format not recognized

To fix this issue, add the .sbat section to the ELF fwup.so shared object
and keep that section when generating the resulting fwupdaa64.efi binary.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
2021-02-12 13:29:55 +00:00
Richard Hughes
54bc512388 Add firmware flags for presence of CRC and VID/PID 2021-02-11 20:27:20 +00:00
Richard Hughes
b242fe4870 ccgx: Implement FuFirmware->build() to add fuzzing support 2021-02-11 14:53:43 +00:00
Richard Hughes
87a8091bed trivial: Fix a crash using fu_firmware_image_get_chunks()
Add a GError as it can return NULL for invalid circumstances. It's okay to
change the API as this symbol has not yet been in a tarball release.
2021-02-11 13:13:06 +00:00
Javier Martinez Canillas
378b00018b uefi-capsule: Add SBAT metadata to the fwupd EFI binary
The Secure Boot Advanced Targeting (SBAT) [0] is a Generation Number Based
Revocation mechanism that is meant to replace the DBX revocation file list.

Binaries must contain a .sbat data section that has a set entries, each of
them consisting of UTF-8 strings as comma separated values. Allow to embed
this information into the fwupd EFI binary at build time.

The SBAT metadata must contain at least two entries. One that defines the
SBAT version used and another one that defines the component generation.

Downstream users can add additional entries if have changes that make them
diverge from the upstream code and potentially add other vulnerabilities.

[0]: https://github.com/rhboot/shim/blob/sbat/SBAT.md
2021-02-10 16:40:59 +00:00
Richard Hughes
6188be1dd4 elantp: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
b1e4a23597 synaptics-rmi: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
2849116b33 uefi-capsule: Read the BMP in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
fb3b3e1841 vli: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
4a315856fa solokey: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
470251c439 wacom-raw: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
6607c41c6d wacom-usb: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
925f2e914b logitech-hidpp: Read from the device in a more safe way 2021-02-10 16:29:57 +00:00
Richard Hughes
4ae9aa87df csr: Be more safe when reading firmware from the device 2021-02-10 16:29:57 +00:00
Richard Hughes
d4dbb29a6e goodix-moc: Fix several places where the plugin code might crash
Fixes https://github.com/fwupd/fwupd/issues/2850
2021-02-10 16:29:21 +00:00
Richard Hughes
53de58f06d optionrom: Do not parse the image
The only real value of the optionrom plugin is the ability to store and verify
the ROM checksum; parsing the image is not actually required and is a source of
anxiety for various security teams.
2021-02-10 16:23:16 +00:00
Richard Hughes
a45d807a08 synaptics-rmi: Limit the number of containers to a sane value
Using hongfuzz we managed to build a valid firmware with 246625043 containers,
which took over 60 seconds to parse.
2021-02-10 15:27:42 +00:00
Richard Hughes
84176c9e1a synaptics-rmi: Be more careful when parsing invalid firmware 2021-02-10 15:27:42 +00:00
Richard Hughes
b0cf709f9b synaptics-rmi: Fix a memory leak when parsing invalid firmware 2021-02-10 15:27:42 +00:00
Richard Hughes
525f71f54b Merge the _udev_device() and _usb_device() vfuncs
There are now two 'backends' of device plug/unplug events, and there is about
to become three. Rather than just adding two more vfuncs for every backend type
define common ones that all providers can use.

Also fix up the existing in-tree plugins to use the new vfunc names and filter
on the correct GType.
2021-02-10 12:04:05 +00:00
Richard Hughes
2efa948b54 trivial: Add hailuck fuzzer to oss-fuzz 2021-02-09 16:37:25 +00:00
Richard Hughes
2e73bef923 Be more paranoid when parsing from ASCII buffers 2021-02-09 16:37:25 +00:00
Richard Hughes
67dda6b2e9 wacom-usb: Fix a buffer-overread spotted by AddressSanitizer 2021-02-09 13:05:46 +00:00
Richard Hughes
0cde61dd4d bcm57xx: Fix -Wcast-align issues spotted by clang 2021-02-08 13:26:27 +00:00
Richard Hughes
01a30aa6de Add support for oss-fuzz 2021-02-08 09:17:03 +00:00
Richard Hughes
3a30c1257c wacom-usb: Fix a crash detected by AddressSanitizer 2021-02-07 16:59:57 +00:00
Richard Hughes
8887b9128b uefi-capsule: Use an integer for EfivarNvramUsed
This is much easier to parse on the LVFS.

Fixes https://github.com/fwupd/fwupd/issues/2834
2021-02-06 14:23:09 +00:00
Richard Hughes
9b11af985f Add fu_memdup_safe()
See https://mail.gnome.org/archives/desktop-devel-list/2021-February/msg00000.html
for more details.
2021-02-04 21:01:00 +00:00
Javier Martinez Canillas
fde4b1676a uefi: Rewrite generate_binary.sh script in Python
The generate_binary.sh is a script that calls the objcopy tool and
genpeimg in the case of Windows, to generate a PE binary file.

But doesn't have to be a shell script and could be rewritten as a
python script. This will make this code to generate a PE binary
easier to extend if needed.

Also, the only reason that's a template is to define the objcopy
tool used, but this can also be passed as a positional argument.
2021-02-04 12:51:05 +00:00
Richard Hughes
f4a1592830 jabra: Ensure the protocol is set to avoid a daemon warning 2021-02-01 19:34:28 +00:00
Richard Hughes
f849a76766 trivial: Remove 'dfu-tool watch'
It's been broken for a long time, and nobody has noticed.
2021-02-01 19:34:28 +00:00
Richard Hughes
98972f4a34 libfwupdplugin: Promote DfuFirmware to FuDfuseFirmware
Port the DFU plugin to use the new objects to make it act the same as all the
other plugins.
2021-02-01 19:34:28 +00:00
Richard Hughes
ed4b8e28db dfu: Use FuChunk rather than defining DfuElement 2021-02-01 19:34:28 +00:00
Richard Hughes
7ccbd61f5d thunderbolt: Remove unused variable 2021-01-30 15:48:47 +00:00
Richard Hughes
6ceffbb585 system76-launch: Remove unused variable 2021-01-30 15:48:36 +00:00
Richard Hughes
27cb155dcf cros-ec: Make _do_xfer() outbuf const
The g_usb_device_bulk_transfer() function requires a mutable 'data' buffer, but
fwupd is sending file data and never wants the buffers modified.
2021-01-29 16:30:28 +00:00
Richard Hughes
9a241be490 trivial: Add fu_chunk_array_mutable_new()
This allows us to check that the plugin is writing into a mutable buffer. Also
fix up the plugins that are currently 'wrong' and use the new function for the
plugins doing the right thing.
2021-01-29 14:22:20 +00:00
Richard Hughes
d99f86023f trivial: Add getters to FuChunk
At the moment FuChunks are sometimes mutable, and sometimes immutable, and it's
all a bit too low level for comfort.

Before we can do any kind of optimisation or verification we need plugins to
stop reading directly from the C structure. The aim here is to make FuChunk
optionally mutable without making assumptions about the memory model, and also
to be able to introspect it for the docs.
2021-01-28 16:42:54 +00:00
Richard Hughes
382524d82f trivial: Fix potential crash when doing crazy things
Fix the asan crash when feeding the value back into itself, e.g

    fu_firmware_set_version (firmware, fu_firmware_get_version (firmware));
2021-01-28 14:13:59 +00:00
Richard Hughes
fed68479c0 dfu: Add support for GD32VF103 as found in the Longan Nano
This bootloader is *weird* -- the chip ID is the first two bytes of the serial
number and the data is offset and encoded in UTF-8, not UTF-16.

The sector information is also wrong. Gah!
2021-01-27 16:27:34 +00:00
Richard Hughes
5d7fb6ad88 uefi-capsule: Check if the fwupd BootXXXX entry exists on failure
Some systems remove the BootXXXX entry we add (so we can run fwupdx64.efi) and
thus the firmware update does not run. Most commonly this failure is seen with
Lenovo systems that call the helpful option 'Boot Order Lock'.

Hopefully when we depend on the new kernel bios interface sysfs API in we can
check in ->prepare(), not after reboot, but until that we can mark the update
failure as transient as the user can actually fix the problem themselves.

Fixes https://github.com/fwupd/fwupd/issues/2801
2021-01-27 14:49:57 +00:00
Richard Hughes
af75522a5e dfu: Show the DfuTargets when calling DfuDevice->to_string()
This is a much more standard way of doing this.
2021-01-27 09:18:44 +00:00
Jeremy Soller
fb3b349f16 system76-launch: Add a plugin for the System76 Launch Configurable Keyboard
This plugin supports reading the keyboard firmware version at runtime and
rebooting the keyboard to USB DFU mode. Tested with firmware uploaded to
embargo-system76.
2021-01-23 20:28:16 +00:00
Mario Limonciello
75835b4a0b Use FWUPD_COMPILATION define to indicate an in tree build
When this is done, include:
* Including the hash
* Including anything that is not ABI stable in plugins yet

Suggested-by: Simon McVittie <smcv@debian.org>
2021-01-22 14:01:25 -06:00
Richard Hughes
8ca69364af dfu: Allow quirking the target transfer size 2021-01-21 09:18:38 +00:00
Richard Hughes
11603b3e06 Install the UX data into a single .tar.xz file
This allows much better compression (-60%) than gziping them individually and
also allows us to build the capsule UX images as part of the build stage.

Also add more popular screen resolutions for laptops you can buy in 2021.
2021-01-20 11:03:20 +00:00
Richard Hughes
6101067f03 coreboot: Remove plugin and instead add metadata to flashrom devices
The coreboot plugin never actually gained the ability to write. As it stands a
coreboot system now adds *two* system-firmware devices (from both flashrom and
coreboot) which isn't ideal.

Just allow flashrom to enumerate quirked devices and add coreboot-specific
metadata as required. If we require some kind of cbfs parsing then we can do
that in FuFlashromDevice->prepare_firmware().
2021-01-19 21:32:59 +00:00
Richard Hughes
0155ad6f9b Add the PCR0 to the report metadata
Although we could reconstruct the PCR0 value on the LVFS from the (already
included) event log, it's much more scalable if the client just provides the
data that we want to filter by.
2021-01-19 14:57:48 +00:00
Richard Hughes
a512d91d43 Report the lockdown status from UEFI and SuperIO plugins
I was asked the other day how many machines would support a /dev/mem mmap'd
update mechanism, and I had to say that I didn't know. We use direct port IO in
the SuperIO plugin too, and it would be good to know how quickly we need to
port this to something else.
2021-01-19 14:57:10 +00:00
Richard Hughes
8bafffa5f3 Read the kernel lockdown status at startup 2021-01-19 14:57:10 +00:00
Richard Hughes
9a81d63add pci-bcr: Only mark the device non-updatable if WPD unset and BLE set
It's unusual, but if BIOS lock enable is enabled (so we cannot *change* the
value of BIOSWE) but the BIOS is already WE then we can write to the hardware
just fine.
2021-01-19 14:44:51 +00:00
Richard Hughes
4a19138026 trivial: Use argparse for make-images.py 2021-01-19 11:56:55 +00:00
Richard Hughes
51f7bde2b7 trivial: Move the make-images script to the consumer 2021-01-19 11:56:55 +00:00
Richard Hughes
70ded56f8a synaptics-rmi: Add some support for PS2 devices
With much help from David Chiu <david.chiu@tw.synaptics.com>, many thanks.
2021-01-18 21:18:02 +00:00
Richard Hughes
a5deffb184 synaptics-rmi: Allow the device to enter a firmware mode that allows programming 2021-01-18 21:18:02 +00:00
Richard Hughes
1974adaa04 synaptics-rmi: Query the build ID and ProjectID to work around a HW bug
The build ID is set and the product ID is parsed in a different way for a PS/2 device.
2021-01-18 21:18:02 +00:00
Richard Hughes
8b1ca08332 synaptics-rmi: Write bus select zero when detaching
This has no effect for HID devices.
2021-01-18 21:18:02 +00:00
Richard Hughes
ff82d005d7 synaptics-rmi: Use the correct delay when erasing v5 firmware 2021-01-18 21:18:02 +00:00
Richard Hughes
a0dd0e2be2 synaptics-rmi: Split out the HID specific parts to FuSynapticsRmiDevice 2021-01-18 21:18:02 +00:00
Richard Hughes
edc0c08065 synaptics-rmi: Support parsing and writing signed firmware
Validate the firmware signature if provided
2021-01-18 21:18:02 +00:00
Richard Hughes
643d7b16b1 synaptics-rmi: Do not assign the class vfuncs during setup
We fixed this problem in logitech-hidpp and this plugin will suffer the same bug.
2021-01-18 21:18:02 +00:00
Richard Hughes
a2798213ee synaptics-rmi: Do not set the page to the existing value 2021-01-18 21:18:02 +00:00
Richard Hughes
2773476884 synaptics-rmi: Do not match all HIDRAW\VEN_06CB devices
Apparently, some devices will not respond well to probing.
2021-01-18 21:18:02 +00:00
Richard Hughes
a676a5ec70 Do not allow Lenovo hardware to install multiple capsules
Once a device has been scheduled for update mark the others from the same plugin
as updatable-hidden rather than updatable so that fwupdmgr or gnome-software
does not try to offer updates for them.
This is preferable to quitting with an error in FuDevice->prepare as we don't
want to waste bandwidth downloading the next update and then show the user an
error they can't possibly understand.

Exclude the currently scheduled device to allow the user to change the scheduled
release and so the pending device does not disappear from UI tools.
2021-01-15 21:43:45 +00:00
Richard Hughes
425ed311aa flashrom: Do not allow flashing if BLE is enabled
If BLE is set flashrom isn't going to work and the user would get a super scary
warning.
2021-01-15 15:24:19 +00:00
Richard Hughes
ae72b9b9f6 flashrom: Mark the device as requiring a reboot 2021-01-15 10:01:00 +00:00
Richard Hughes
568bb79ba0 flashrom: Spin the progress progressbar while flashrom is writing 2021-01-15 10:01:00 +00:00
Richard Hughes
e48fdff1c8 flashrom: Process the output of flashrom_flash_probe() correctly 2021-01-15 10:01:00 +00:00
Richard Hughes
5a53d0aeb0 flashrom: Do not show unhelpful debug output 2021-01-15 10:01:00 +00:00
Richard Hughes
99b7cf9c7f flashrom: Add a quirk entry for the Starlabs LabTop L4 2021-01-15 10:01:00 +00:00
Kees Cook
43f79d6c33 altos: Clarify ChaosKey name
While the firmware is altos, the product is better known as
"Altus-Metrum ChaosKey".
2021-01-15 07:08:20 +00:00
Richard Hughes
1a3d3b338e Make GUsb optional for fuzzing 2021-01-14 14:23:12 +00:00
Richard Hughes
eb4dcefbc6 Make the null-false-returns script also process return type
And fix up the rather disapointing single place we got it wrong...
2021-01-14 14:22:15 +00:00
Richard Hughes
dd0159dc00 trivial: Remove excess #include 2021-01-13 20:06:08 +00:00
Richard Hughes
a75ef53eaf trivial: Rename the meson option for plugin_synaptics_mst 2021-01-12 21:32:12 +00:00
Richard Hughes
5c915eef1e Check the return values of g_return_val_if_fail() in CI 2021-01-12 20:31:47 +00:00
Дамјан Георгиевски
bb8c8040c7 rename config section in uefi_capsule.conf to plugin name
in ee2e2c3674 the plugin name was changed
from uefi to uefi_capsule. while the config file name was changed, the
section name should also be changed.

fixes #2748
2021-01-12 17:53:26 +00:00
Richard Hughes
679a95f989 trivial: Remove unused bash script 2021-01-12 16:54:37 +00:00
Ilya Guterman
8fa65d98a5 stm-dfu: fix dnload wBlockNum wraparound 2021-01-11 16:50:50 +00:00
Richard Hughes
0d412b535e trivial: Remove invalid buffer dump in pixart_rf
Spotted by Coverity.
2021-01-08 20:53:11 +00:00
Richard Hughes
fdb3a83a20 uefi-dbx: Ignore the legacy OVMF dummy GUID for the version
This was changed recently in https://sourceforge.net/p/edk2/code/29270/
2021-01-08 14:54:31 +00:00
Richard Hughes
5c9b1fcc81 Only include the start year in the copyright header
The end year is legally and functionally redundant, and more importantly causes
cherry-pick conflicts when trying to maintain old branches. Use git for history.
2021-01-07 14:48:16 +00:00
Richard Hughes
b63cfa90d6 Detect the AMD TSME encryption state for HSI 2021-01-06 16:45:33 +00:00
Richard Hughes
cf100293b5 Do not export useless device attributes to the client
That giant uint64_t isn't looking so big now, and we'll want to add even more
to it in the future. Split out some private flags that are never useful to the
client, although the #defines will have to remain until we break API again.
2021-01-06 14:36:23 +00:00
Richard Hughes
e002f21066 trivial: Prevent a crash when parsing corrupt RMI firmware
Using fu_common_bytes_new_offset() is much safer as it checks the source size.
2021-01-06 10:08:45 +00:00
Mario Limonciello
16fd5721c4 thunderbolt: add a unit test to make sure activation shows up 2021-01-06 09:11:00 +00:00
Mario Limonciello
5dc181181e thunderbolt: correct a logic error for DelayedActivation
This logic error wasn't being caught because the `DelayedActivation`
sysfs code wasn't running.

Basically the WD19TB device will have `skips-restart` applied by the quirk
by default.  After `fu_thunderbolt_device_setup_controller` has run
it will have `skips-restart` removed but `usable-during-update` applied
if on a new enough kernel.

In this circumstance the `DelayedActivation` would re-apply `skips-restart`
which is the wrong intended behavior per 834b28009d
2021-01-06 09:11:00 +00:00
Richard Hughes
104459bd10 Check the AMI test key if not installed for HSI-1
Fixes https://github.com/fwupd/fwupd/issues/2695
2021-01-05 17:09:02 +00:00
Richard Hughes
5c9e9f17c5 libfwupdplugin: Export FuEfiSignatureList for plugins to use 2021-01-05 16:42:58 +00:00
Richard Hughes
f47790bba3 ata: Add OUI quirk for Transcend
Fixes https://github.com/fwupd/fwupd/issues/2721
2021-01-05 16:20:09 +00:00
Richard Hughes
b2e97fb6b5 synaptics-cxaudio: Fix a critical warning when parsing invalid firmware 2021-01-05 15:59:30 +00:00
Richard Hughes
59b6b6d2c5 uefi-dbx: Fix a critical warning when parsing invalid firmware 2021-01-05 15:59:30 +00:00
Richard Hughes
09f8a549c9 hailuck: Fix a critical warning when parsing invalid firmware 2021-01-05 15:59:30 +00:00
Richard Hughes
f68107e609 ccgx: Fix a critical warning when parsing invalid firmware 2021-01-05 15:59:30 +00:00
Richard Hughes
ee2e2c3674 uefi: Rename to uefi-capsule
Rename the plugin to make it clearer of the scope.

Based on a patch from Mario Limonciello <mario.limonciello@dell.com>
2021-01-05 15:31:22 +00:00
Richard Hughes
364e2685ca Do not show unprintable chars from invalid firmware in the logs 2021-01-05 15:15:07 +00:00
Richard Hughes
fcb5667d79 libfwupdplugin: Subclass FuFirmware in FuEfiSignatureList
This allows us to get fuzzing support 'for free' and also simplifies the code.
2021-01-05 14:45:31 +00:00
Richard Hughes
eddaed0c11 Allow specifying more than one VendorID for a device
Asking the user for the UID mapping isn't working very well, as it requires lots
of manual handholding. It also doesn't work very well when the device vendor
does not actually have a PCI ID or if the vendor has split into two entities.

Just use the OUI address as an additional VendorID and match any of the device
IDs against any of the metadata-supplied values.
2021-01-04 22:30:20 +00:00
Richard Hughes
3252573ac7 synaptics-prometheus: Fix flashing a fingerprint reader that is in use
The fprint daemon only keeps the device open for 5 seconds and then releases it,
which seems like a small window to hit.

But! We're asking the user to authenticate with the same device we're about to
upgrade so a different part of the stack woke up the hardware just before we're
about to deploy an update onto it.

Just retry a few times to make sure the device is idle. Use a flag to prevent
accidentally causing regressions in other plugins.

Fixes https://github.com/fwupd/fwupd/issues/2650
2021-01-04 21:52:10 +00:00
Jimmy Yu
23cd466ef1 Add plugin to update PixArt RF devices
Signed-off-by: Richard Hughes <richard@hughsie.com>
2021-01-04 17:20:13 +00:00
Richard Hughes
64e9f6bd92 trivial: Fix up some NULL/FALSE confusion 2021-01-04 16:32:50 +00:00
Richard Hughes
f9fe19f7f6 Make libcurl optional for fuzzing
For fuzzing we want to exclude libcurl support as it depends on other very heavy
libraries like OpenSSL or libtasn which make the fuzzing binary much larger if
linked statically.
2021-01-04 16:22:36 +00:00
Richard Hughes
c2a0259fe6 Remove now-unused synaptics_rmi_dump fuzzing target generator
We can implement firmware->build and firmware->write and then use the shared
firmware.builder.xml functionality.
2021-01-04 15:42:17 +00:00
Richard Hughes
9f71fe3dc9 Make the 'id' for fu_plugin_add_firmware_gtype() optional
We can work out the correct value automatically in all cases but one, and it's
less for the plugin author to get wrong...
2021-01-04 15:27:10 +00:00
Richard Hughes
a2abc42760 libfwupdplugin: Use G_GNUC_WARN_UNUSED_RESULT for methods that should be checked 2021-01-04 15:24:35 +00:00
Richard Hughes
96ec0198e5 hailuck: trivial: Fix the GType name
The vendor is Hailuck as in one word, not Hai Luck.
2021-01-03 21:07:44 +00:00
RickyWu
9ce0922448 plugins: rts54hub: add Lenovo HotRod VID/PID
Signed-off-by: RickyWu <ricky_wu@realtek.com>
2020-12-31 09:18:46 +00:00
jingle.wu
6f8269fe0f elantp: Add new HWID for Lenovo X13 Gen 2. 2020-12-31 06:38:34 +00:00
Ricky Wu
f3510f56b2 plugins: rts54hid fix get report index error
fixed rts54hid get report index error

Signed-off-by: Ricky Wu <Ricky_wu@realtek.com>
2020-12-23 09:33:35 +00:00
Jingle Wu
fed9f56da8 elantp: Add new HWID for Lenovo X13 Yoga Gen 2. 2020-12-23 07:37:22 +00:00
Richard Hughes
3dc49c21b5 dfu: If no DNLOAD timeout is set assume a default value
This is probably a case where the device does not adhere to the specification.

Some hardware may be deliberately setting DNLOAD timeout to 0ms, and this patch
will make each request 5ms slower. This is probably a good tradeoff for having
most hardware 'just work' without a quirk entry.

Based on a patch by Zack Lee Yi Wei <zack_lee@chicony.com>, many thanks.
2020-12-21 13:11:14 +00:00
Richard Hughes
c32d14ebad dfu: Only wait for DFU_DNBUSY for 120 seconds 2020-12-21 13:11:14 +00:00
Richard Hughes
b8246a6cce dfu: Retry the GET_STATUS is DNLOAD_BUSY is returned
Perhaps fixes https://github.com/fwupd/fwupd/discussions/2687
2020-12-21 13:11:14 +00:00
Richard Hughes
e6dea87cb0 dfu: Use the standard debugging helpers 2020-12-15 09:36:41 +00:00
Richard Hughes
e3fb2e45cd trivial: Fix two more missing <string.h> instances 2020-12-14 20:24:04 +00:00
Richard Hughes
a14de30153 trivial: Require <string.h> for strlen() and memcpy() 2020-12-14 16:49:03 +00:00
Richard Hughes
39e391e046 Fix compile warnings when using -Db_sanitize=undefined 2020-12-14 08:33:41 +00:00
Richard Hughes
312c68842c dfu: Show a warning if we fail to release the interface
I'm not returning FALSE here as it might break plugins.
2020-12-11 14:33:04 +00:00
Richard Hughes
c4ca8e25d1 Use honggfuzz to fuzz firmware rather than AFL
This has better multi-core performance and can run in persistent mode -- which
allows us to construct a test harness of all the parsers (which takes time) and
then just reuse the process for lots of different data.
2020-12-11 09:37:42 +00:00
Richard Hughes
ef714053fe trivial: Don't crash when failing to detect the CPU 2020-12-10 20:43:54 +00:00
Mario Limonciello
a61cca9e3d thunderbolt: Add maple ridge firmware parsing support
These are expected to be flashed via UEFI capsules *not* Thunderbolt plugin
* Flashing via fwupd will require matching kernel work.
* They're left here only for parsing the binaries

```
FuThunderboltFirmwareUpdate:
Family:                 Maple Ridge
IsHost:                 true
IsNative:               true
DeviceId:               0x1136
VendorId:               0xd4
ModelId:                0xa58
FlashSize:              0x0
Generation:             0x4
Ports:                  0x2
HasPd:                  true
Section0:               0x4000
Section1:               0x4210
Section2:               0x4610
Section3:               0x22958
  FuFirmwareImage:
  Data:                 0x67000
```
2020-12-10 09:59:58 -06:00
Richard Hughes
3baea5c2cf solokey: Fix a possible critical warning for invalid firmware 2020-12-10 14:58:11 +00:00
Richard Hughes
bfabf5c81f synaptics-rmi: Do not add zero sized container images
This prevents a DoS when parsing corrupt firmware.
2020-12-10 14:58:11 +00:00
Richard Hughes
6271176c33 ccgx: Do not add zero sized DMC records
This prevents a DoS when parsing corrupt firmware.
2020-12-10 14:58:11 +00:00
Richard Hughes
0eb8b6a2a8 synaprom: Do not add zero sized images
This prevents a DoS when parsing corrupt firmware.
2020-12-10 14:58:11 +00:00
Richard Hughes
4dcd167215 synaptics-prometheus: Allow creating test firmware from builder.xml
This means we don't need a standalone executable to build blobs.
2020-12-09 18:06:26 +00:00
Richard Hughes
056dfff741 synaptics-rmi: Fix possible buffer over-read for corrupt firmware 2020-12-09 15:25:04 +00:00
Richard Hughes
05e3377d11 trivial: Add fu_common_bytes_new_offset()
This is a safer version of g_bytes_new_from_bytes() which returns a GError
if the offsets are invalid rather than emitting a critical warning.

This prevents a critical warning and potential crash when parsing invalid
bcm57xx firmware.
2020-12-08 20:54:25 +00:00
Richard Hughes
386f2c1d39 uefi-dbx: Fix a trivial buffer over-read when fuzzing 2020-12-08 20:50:55 +00:00
Richard Hughes
7713ae676f goodix-moc: Fix a potential crash when reading the USB request 2020-12-08 20:08:57 +00:00
Richard Hughes
84e8d24540 solokey: Prevent a critical warning when parsing invalid JSON data 2020-12-08 20:07:52 +00:00
Richard Hughes
c79e76d2aa synaptics-rmi: Fix a tiny memory leak when parsing firmware 2020-12-08 20:07:27 +00:00
Richard Hughes
698099f643 trivial: Remove several unused variables 2020-12-08 20:06:46 +00:00
Richard Hughes
00640f42f2 Lower the CURL version required to fix build in RHEL
Some vendors really really want 1.5.x in newer RHEL versions, but the version
of curl is too old. Add #ifdefs so that we can emulate (somewhat imperfectly)
the 'new' CURLU functonality.
2020-12-07 14:17:22 +00:00
honkingantelope
70f2419282 added my ssd giving the error
I'm finally getting around to figuring out why I get occasional hard hangs after changing from a spidle to SSD.  I've disabled fwupd in the meantime to see if it makes a difference.  Adding the info since I don't see it already on the list.
2020-12-06 15:31:23 +00:00
Sean Rhodes
2f2da8c7ca Added Lite Mk III 2020-12-04 11:02:31 +00:00
Mario Limonciello
5198bdcde2 trivial: make platform integrity plugin optional and disabled by default
Fixes: #2634
When it's upstream, we may consider to change this for some distros.
2020-12-03 09:07:49 +00:00
Marcus Comstedt
6035b520b7 bcm57xx: Refactor CRC code to remove extra byteswap 2020-12-01 14:50:00 +00:00
Marcus Comstedt
4a74a87d1e bcm57xx: Fix CRC check 2020-12-01 14:50:00 +00:00
Richard Hughes
b7ca257c6d synaptics-rmi: Don't crash if calling ->to_string() before ->setup() 2020-12-01 14:15:33 +00:00
Richard Hughes
6afc6542c1 trivial: Add a context to one translatable string 2020-11-30 09:03:04 +00:00
MisterGuinness
229bd1a0b5 Add quirk for Western Digital 2020-11-29 07:10:28 +00:00
Richard Hughes
c1e5f94e5c Mark more user-visible strings as translatable
Fixes https://github.com/fwupd/fwupd/issues/2616
2020-11-29 07:09:31 +00:00
Aleksander Morgado
512685fcb8 modem-manager: validate firmware update method combinations
The plugin currently supports Fastboot and QMI/PDC methods, but given
that QMI/PDC is exclusively used for carrier config installations,
there is no need for QMI/PDC-only updates, so make sure that
combination is right away forbidden.

This validation will also be useful when adding additional update
methods, as we'll be able to clearly specify which are the
combinations expcted.
2020-11-29 07:08:05 +00:00
Aleksander Morgado
c0fb40b7e8 modem-manager: remove unused byte counts in QMI/PDC update logic 2020-11-29 07:08:05 +00:00
Aleksander Morgado
fab3ee97c7 modem-manager: make sure the correct interface number is used for QMI
The upgrade process requires that the USB interface layout is not
changed between upgrades, something that we require for AT and we also
require now for QMI. We store the USB interface number of the QMI port
as soon as the device is probed, and we use it to match the interface
number once the Udev based device is created.

squash! modem-manager: make sure the correct interface number is used for QMI
2020-11-29 07:08:05 +00:00
Aleksander Morgado
da2d6f9c5a modem-manager: udev monitoring only if device switches layout
The built-in udev monitoring in the ModemManager plugin is only
required for those upgrade methods where the device switches into a
fully different port/interface layout. So far, we only expect this to
happen when the Fastboot update method is requested by the module.
2020-11-29 07:08:05 +00:00
Aleksander Morgado
b0418d7786 modem-manager: plug udev client leak
The GUdevClient is created when the ModemManager sysfs path is
inhibited; we need to make sure we destroy the object once
uninhibited, or we'll otherwise create a new one if we're running
an additional upgrade operation afterwards.
2020-11-29 07:08:05 +00:00
Renaud Métrich
31a0bc7daf ata: Add OUI quirk for Toshiba 2020-11-21 08:47:23 -06:00
Richard Hughes
d99f74f0b7 Revert "bcm57xx: Use PCI function 1 as 0 does not work with the Dell KH08P"
This reverts commit b5eddee5f6.

Using pci function 0 works on my Lenovo P50 but not my Lenovo X1. Don't break
machines where we are shipping the chip rather than ones where we probably are
not, especially when it's probably a kernel bug somewhere.

Fixes https://github.com/fwupd/fwupd/issues/2608
2020-11-20 09:54:34 +00:00
Richard Hughes
3a73c342ba Switch from libsoup to libcurl
The former drags on glib-networking and then gsettings-desktop-schemas, which
add over 5Mb to the minimal IoT and CoreOS composes. Everything already uses
libcurl (even NetworkManager!) and so this is an easy way to reduce image size.
2020-11-19 19:39:37 +00:00
Mario Limonciello
5b3eb78d5b trivial: uefi: don't let user's environment fail UEFI/Dell test suite
Comment from https://github.com/fwupd/fwupd/issues/2553#issuecomment-728218741
makes it clear that test suite should ignore some of environment.
2020-11-16 14:56:22 -06:00
tinywrkb
07d5aef247 Install modules-load configs in the correct directory
Signed-off-by: Richard Hughes <richard@hughsie.com>
2020-11-16 15:27:13 +00:00
Emily Miller
1c4a4dd29c trivial: tr_gen2 has same rtd21xx as mini dock 2020-11-16 08:50:25 +00:00
Richard Hughes
b5eddee5f6 bcm57xx: Use PCI function 1 as 0 does not work with the Dell KH08P 2020-11-14 07:56:32 +00:00
Richard Hughes
122104e190 vli: Do not be clever replugging the MSP430 device
We don't have to do this since we started counting the composite devices out
and back in, and relying on the parent being set at a specific instance seems
fragile in real-world testing.
2020-11-13 14:22:51 -06:00
Richard Hughes
bcf7a446f6 vli: Make some trivial debugging more specific to help debug an issue 2020-11-13 14:22:51 -06:00
Mario Limonciello
bdaa080be3 trivial: disable bios plugin outside of systems with uefi
Fixes: #2576
2020-11-13 08:19:30 +00:00
Hsieh-Tseng Shen
b47eee9a8a uefi: a new option for uefi configuration to use UEFI removable path
Per discussion of #2513, Ubuntu Core was going to use UEFI removable
path as default esp path, and it needs to change some parts around
getting the esp path and searching the shim app path. Also, a new option
"FallbacktoRemovablePath" is added into uefi.conf to be applied in this
case, and it will be false by default.
2020-11-11 13:04:46 -06:00
Richard Hughes
d87edbcc51 trivial: Fix swap self tests
This only works if the computer used to run the test also has /dev/nvme0n1p4 as
encrypted swap...
2020-11-10 19:55:33 +00:00
Richard Hughes
eac6edd7c5 synaptics-mst: Improve reliability by waiting 2 seconds after writing data
On failure, you get this:

    no device found on drm_dp_aux5: Memory query failed: failed to write command
    failed to get device after update: failed to wait for detach replug
2020-11-10 13:13:48 +00:00
Richard Hughes
db4894e863 hailuck: Add an plugin for the Pinebook Pro laptop
This is not complete enough for LVFS-usage, but good enough to use with commands
such as fwupdtool. It's likely newer kbd and tp firmware will be required to
integrate with the fwupd in all required ways.
2020-11-09 16:17:34 +00:00
Richard Hughes
42a5b39385 colorhug: Don't set the version format to triplet at startup
The USB revision is BCD if there's no 'FW' vendor data in the descriptor, so
only set the format when we know.
2020-11-07 08:03:24 +00:00
Richard Hughes
3e445ece04 Allow components to set the icon from the metadata
In this case, we want to set the generic ESRT entry to have the icon 'battery'.
2020-11-06 16:57:21 +00:00
Richard Hughes
1d0e7fb3bf colorhug: Fix detection of version on older firmware versions
Without the 'FW' version hint in newer firmware versions we fall back to the
BCD USB release which we need to override to triplet.
2020-11-06 13:04:34 +00:00
Richard Hughes
58993ac005 trivial: Fix some error prefixes 2020-11-06 09:57:03 +00:00
Evan Lojewski
0304f8d4fd bcm57xx: Fix reading vendor/device ids from firmware.
The PCI Vendor and Device ID locations located in firmware were mistakenly
swapped in the bcm5719-fw repository. As a result, the code here based on said
repository also has swapped IDs. This fixes the ids to reflect the
correct locations.

Signed-off-by: Evan Lojewski <github@meklort.com>
2020-11-06 08:27:06 +00:00
Richard Hughes
203ed841da trivial: Codespell fixes 2020-11-02 14:26:26 +00:00
Richard Hughes
0bdf561035 Use UDisks to find out if swap devices are encrypted
Using a heuristic is certainly not awesome.
2020-11-02 14:22:37 +00:00
Richard Hughes
b5d6aacf9f Show a less scary fwupdate output for devices without info
Before:

    Information for the update status entry 0:
      Information Version: 7
      Firmware GUID: {ddc0ee61-e7f0-4e7d-acc5-c070a398838e}
      Capsule Flags: 0x00000000x
      Hardware Instance: 0
      Update Status: attempted
      Capsule File Path: /EFI/fedora/fw/fwupd-ddc0ee61-e7f0-4e7d-acc5-c070a398838e.cap

    failed: Error opening file /sys/firmware/efi/efivars/fwupd-671d19d0-43c-
    4852-98d9-1ce16f9967e4-0-0abba7dc-e516-4167-bbf5-4d9d1c739416: No such file
    or directory
    failed: Error opening file /sys/firmware/efi/efivars/fwupd-a9971959-9246-
    4a5b-b2f2-ba6fdcb19349-0-0abba7dc-e516-4167-bbf5-4d9d1c739416: No such file
    or directory

After:

    Information for the update status entry 0:
      Information Version: 7
      Firmware GUID: {ddc0ee61-e7f0-4e7d-acc5-c070a398838e}
      Capsule Flags: 0x00000000x
      Hardware Instance: 0
      Update Status: attempted
      Capsule File Path: /EFI/fedora/fw/fwupd-ddc0ee61-e7f0-4e7d-acc5-c070a398838e.cap

    Information for the update status entry 1:
      Firmware GUID: {671d19d0-d43c-4852-98d9-1ce16f9967e4}
      Update Status: No update info found

    Information for the update status entry 2:
      Firmware GUID: {a9971959-9246-4a5b-b2f2-ba6fdcb19349}
      Update Status: No update info found

Fixes https://github.com/fwupd/fwupd/issues/2530
2020-10-30 11:36:40 +00:00
Mario Limonciello
3c4e57463a thunderbolt: recognize authorized value of '2' as well
This means that the user performed a challenge to authorize the
device.
Fixes: #2526
2020-10-29 13:37:44 -05:00
Richard Hughes
94e3d24f55 bcm57xx: Make hotplug more reliable
Although hotpluggging PCIe cards isn't common, it's how I'm testing this in the
device test enclosure. Add a tiny delay to wait for the kernel to populate the
net class on hotplug.
2020-10-29 14:01:25 +00:00
Richard Hughes
a78b13fb71 Use a different Device ID for the OptionROM devices
We want to continue to dedupe the ID, and the priority should be decided on the
GUID match.

Fixes https://github.com/fwupd/fwupd/issues/2510 in a different way
2020-10-29 14:01:25 +00:00
Richard Hughes
ded5410f6d Delete unused EFI variables when deploying firmware
Unconditionally delete FWUPDATE_VERBOSE and FWUPDATE_DEBUG_LOG when deploying
the update using fwupdtool or fwupd and leave it to fwupdate.

If you want to debug the efi binary you then have to use fwupdate and squirt
the .cap file rather than using all the other layers.
2020-10-27 17:05:01 +00:00
Richard Hughes
49c2a78c99 Include the amount of NVRAM size in use in the LVFS failure report 2020-10-27 13:58:40 +00:00
Mario Limonciello
8aa5d41eb7 Add external interface messages 2020-10-26 12:05:20 -05:00
Emily Miller
f9ad963bcf vli: Add support for Hyper hardware 2020-10-26 10:08:00 +00:00
Jingle Wu
3460e0a5ed elantp: Modify the correct input for the iap reg.
1. Modify the correct input for the iap reg (byte -> word).
2. Add new HWID for ThinkPad X1 Carbon Gen 9.
2020-10-23 08:56:48 +01:00
Richard Hughes
e80547e8fc Record the TPM version when reporting a UEFI update
Fixes https://github.com/fwupd/fwupd/issues/2391
2020-10-22 16:16:23 +01:00
Richard Hughes
b814af80ef synaptics-cxaudio: Retry the HID SetReport to fix flashing the TB3 dock
Upon restarting the upstream VLI USB hub the cxaudio device re-enumerated okay
but would not service HID requests for 100ms, returning 'endpoint stalled'.

To make this more reliable retry the SetRequest up to 10 times after a short
delay to make enumeration reliable.
2020-10-22 14:36:05 +01:00
Richard Hughes
3b577c5de3 bcm57xx: Fix trivial warnings when building on Win32 2020-10-22 13:55:14 +01:00
Richard Hughes
1fd1a8047e optionrom: Add the fuzzing functionality as a meson target 2020-10-22 13:22:34 +01:00
Vincent Huang
a9d8074c61 synaptics-prometheus: add pids to quirk file 2020-10-22 08:21:30 +01:00
Richard Hughes
b7e406c217 ata: Add OUI quirk for Corsair 2020-10-21 20:18:27 +01:00
Richard Hughes
0d778dbd50 vli: Set the parent of the USB2 recovery for cosmetic reasons 2020-10-21 17:48:36 +01:00
Richard Hughes
07326182ca vli: Do not expose the shared-SPI devices on the USB2 recovery device 2020-10-21 17:48:25 +01:00
Mario Limonciello
b15f4ab4b1 elantp: Trivial whitespace fixes 2020-10-21 16:54:13 +01:00
Mario Limonciello
0ad124a02b elantp: Match all i2c-hid devices in quirk
In the plugin probe routine, check whether they are actually i2c-hid touchpad
by looking at PID.

Fixes #2494
2020-10-21 16:54:13 +01:00
Richard Hughes
f6a765d251 vli: Remove one of the catch-all PD VID:PID matches
This is already supported using the &APP_ GUID for the Lenovo USB-C Mini dock.
2020-10-21 16:25:12 +01:00
Richard Hughes
a2a8f8ea70 Add fu_byte_array_set_size()
The GLib g_byte_array_set_size() function does not zero the contents if the
array size is larger, which leads to unpredictable output when using valgrind.
2020-10-20 19:54:07 +01:00
Richard Hughes
92769bfba1 trivial: Use fu_device_sleep_with_progress() in one more place 2020-10-20 18:21:27 +01:00
Richard Hughes
04d0a1b863 vli: Use the tokenization data for the Intel HEX file 2020-10-20 16:27:15 +01:00
Richard Hughes
c7283ea61e uefi: Drop efivar dependency 2020-10-19 16:13:21 +01:00
Richard Hughes
f019971c00 redfish: Drop efivar dependency 2020-10-19 16:13:21 +01:00
Mario Limonciello
68df30bd2b dell: Drop efivar dependency
Since we removed the ability to turn on/off force power this is dead code, and
an unnecessary dependency.
2020-10-19 16:13:21 +01:00
Richard Hughes
81b5defaa6 uefi: Use fu_efivar_get_data() to fix setting BootNext correctly
Fixes https://github.com/fwupd/fwupd/issues/2169
2020-10-19 16:13:21 +01:00
Richard Hughes
ae5858ff58 vli: Get the new firmware version when updating the PD device
To do this without rebooting the device implement VliUsbhubPdDevice->reload()
like the other FuVliUsbhubDevice child devices.

Fixes half of https://github.com/fwupd/fwupd/issues/2376
2020-10-18 07:35:46 +01:00
Richard Hughes
0357881c42 elantp: Implement the ->reload action to get the new firmware version 2020-10-16 10:06:45 +01:00
Mario Limonciello
61ba02ae16 trivial: increase debugging for for fu-uefi-bootmgr.c
See #2169 for more context
2020-10-15 17:02:04 -05:00
Richard Hughes
1f6a1520fb elantp: Fix three impossible to hit bugs spotted by Coverity
If somehow chk->data_sz is bigger than blksz then we would write past the end
of the allocated buffer.
2020-10-14 15:11:31 +01:00
Richard Hughes
7bcb8d4385 Export FwupdPlugin so we can convey enumerated system errors to the end user
For instance, we can tell the user that UEFI UpdateCapsule is disabled in the
system firmware, or that efivarfs is not mounted. This is much better than
creating "dummy" devices which are really just hacks around the problem because
no better API existed. THe dummy devices cause as many problems as they solve.

Plugins have to set FWUPD_PLUGIN_FLAG_USER_WARNING if a warning should be shown
to the user, and only one warning will be shown of each failure type.

It is expected that GUI clients like gnome-software and gnome-firmware would use
this API to notify the user the localized message for why firmware updates are
not being shown.

Fixes https://github.com/fwupd/fwupd/issues/2456
2020-10-13 15:56:49 +01:00
Benson Leung
42f2e22dd2 cros-ec: Add support for quiche and gingerbread boards
Add quirks for PID 5048 and 5049, which are cros-ec devices
that update via USB endpoint. Notable about these two are
they support rw_sig, for RW region signature verification.
2020-10-11 07:34:49 +01:00
Benson Leung
343613954b cros-ec: Increase remove delay for reenumeration to 20s. 2020-10-11 07:34:49 +01:00
Benson Leung
e8fd2cdfa4 cros-ec: Restructure to allow RO update first
Our update flow prior to this was:
1. On detach, reboot to RO.
2. From Old RO, Update RW.
3. Reboot to New RW
4. From New RW, Update RO.
5. Reboot to finish

This flow has a flaw, which is that the Old RO may be buggy (especially
during development, before it's actually locked down and actually Read-Only).

This change will do the following instead:
1. On detach, do not reboot to RO if RO is writeable, and we are in RW
2. From old RW, Update RO
3. Reboot to new RO
4. From New RO, update RW
5. Reboot to finish.

This has a speed advantage as well, as we save one reboot cycle (2 vs 3).
2020-10-11 07:34:49 +01:00
Benson Leung
2c5558e51d cros-ec: Log error paths, and trigger flushes
In case of a failure during the bulk transfer sequence, flush out
before trying again.
2020-10-11 07:34:49 +01:00
Benson Leung
af07f32c0f cros-ec: Send a start message after the stay-in-ro
The extra command (stay-in-ro) consumes the start message, so we
need to issue another one before write firmware.
2020-10-11 07:34:49 +01:00
Benson Leung
c516724278 cros-ec: Set another write required if we immediate reset back into RO
As a result of the previous change, where we send an immediate reset to
devices in order to transition back to rw, we will end up reenumerating
as RO briefly, although the destination we wanted to get to was RW.

In that case, basically skip the write firmware step, set another write
required and allow the RO firmware to complete rw_sig and jump to the rw
partition.
2020-10-11 07:34:49 +01:00
Benson Leung
08c396b31c cros-ec: Send an immediate reset after jump to rw
Some devices don't do the jump, so an immediate reset is required to get us
into RW.
2020-10-11 07:34:49 +01:00
Benson Leung
b093de999a cros-ec: Fix reboot to RO sequence
Previously, we sent a 'stay-in-ro' subcommand when we are in
fu_cros_ec_usb_device_reset_to_ro, which is called from the detach phase,
in other words, we are currently sitting in RW.
This is incorrect, since stay-in-ro only interrupts an RO's
rw_sig process if it is in progress.

Instead, 'stay-in-ro' must be issued when the device reenumerates in RO,
immediately before the writing sequence starts. On devices that implement
rw_sig, they will briefly enumerate as RO before self-issuing a jump to RW
on the signature check being valid. In order to stay in RO to perform a RW
partition update, we must interrupt it as soon as we see the RO version
enumerate.
2020-10-11 07:34:49 +01:00
Richard Hughes
cc2f6aa1b2 Add fu_device_sleep_with_progress helper()
This makes the console a bit more helpful than just 'hanging'...
2020-10-11 07:34:00 +01:00
Érico Rolim
acd95c661b uefi: add configuration option for objcopy utility. 2020-10-10 12:32:13 +01:00
Evan Lojewski
44361fa14e bcm57xx: Improve reliability when flashing
- Use pci function 0 instead of 1 when flashing firmware.
  In certain situations, the BCM5719 NVM controller can lockup if
  a function other than 0 is used to read from NVM word-by-word like
  the kernel driver does.
- Fix APE_MODE offset in BAR[2] to enable proper resetting of the APE.
- Remove unnededed NVRam lock when resetting the APE.

Signed-off-by: Evan Lojewski <github@meklort.com>
2020-10-09 07:37:33 +01:00
Richard Hughes
4123885c81 bcm57xx: Add a plugin that can update the BCM5719 network adapter 2020-10-08 16:49:07 +01:00
jingle.wu
4f2cb4598c elantp: Modify firmware update flow
1. Check FW in bootloader mode, need send reset command to firmware.
 2. IAP Type register parameter is defind as how many bytes/page to be written.
 3. Write IAP Type function in detach function.
 4. Remove IAP Type function in setup function.
 5. Modify page format for i2c-device
 6. Modify firmware bin file size.
 7. Modify firmware update flow when the firmware in bootloader mode.
 8. Add another instance ID which corresponds to the IC type & module ID
   * `ELANTP\ICTYPE_09&MOD_1234`
 9. Add Lenovo ThinkPad X1 nano gen1 to elantp.quick
10. Add recovry device - lenovo thinkpad x1 nanao gen 1
11. Add elan touchpad device - vid:04f3 pid:314f
12. Set the firmware version when the firmware is incorrect.
2020-10-08 10:43:06 -05:00
Richard Hughes
e6eb913b74 uefi: Only set the version format for ESRT entries
Setting the default to number unconditionally causes problems when the device
is created using _register_proxy_device().

Based on a patch by Mario Limonciello <mario.limonciello@dell.com>, many thanks.
2020-10-08 10:34:23 -05:00
Mario Limonciello
e8a2fc8c57 uefi: Make udisks2 errors more apparent
When support for dynamically mounting disks was added for 25ba41579f
udisks2 became a harder dependency and it was less obvious to users.

Create devices but show an error in why devices aren't updatable if
it's not found.

Users can still configure ESP manually in `uefi.conf`

Fixes: #2444
2020-10-08 09:16:32 -05:00
Richard Hughes
6450d0deb4 Add FwupdInstallFlags of _IGNORE_CHECKSUM, _IGNORE_VID_PID and _IGNORE_POWER
The FWUPD_INSTALL_FLAG_FORCE flag has really unclear semantics, and ignoring a
file CRC, checksum or model ID should only be done when using fwupdtool actually
debugging a plugin or firmware parser.

Use the existing --force flag when we want a "gentle nudge" like reuploading
previously processed reports.
2020-10-07 13:15:09 +01:00
Mario Limonciello
406025ba56 trivial: ci: fix installed-tests for test plugin
This has been broken for a while and missed various changes.
* Reading firmware version
* Passing `-y` into build
* New verify / verify-image split
2020-10-06 13:34:41 -05:00
Richard Hughes
488a8a76d4 trivial: Fix 'returning FALSE in a pointer function' warning 2020-10-05 22:14:31 +01:00
Richard Hughes
26e57dd4e2 Do not auto-detach when dumping firmware
This allows us to handle this in the plugin, which might mean detaching the
*proxy* device. It's also very important as a few plugins reboot the device
in ->attach() to get the new firmware version, which isn't required for a dump.

This partially reverts a58510b246 and does the
detach and attach in the few plugins where actually required.
2020-10-05 19:44:44 +01:00
Mario Limonciello
c5ea3a39f9 trivial: uefi: quiet down debugging messages
With how well fwupd UEFI updates work these days >99% of people
don't need to see messages about the capsule update running.
Those who have problems, this isn't going to help them.
2020-10-03 06:58:13 -05:00
Richard Hughes
7d1267fd84 Clarify various parts of the HSI specification
Firsly, that HSI isn't expected for embedded devices and then secondary how we
require SecureBoot to be available for HSI:1

At the moment we get a runtime failure if it is disabled. Making SB a part of
`HSI:1` makes this requiremnt explicit and prevents us getting `HSI:2!` if it
is not available.
2020-10-02 09:13:56 +01:00
Richard Hughes
5e0729ecf8 ata: Demote two debug lines to require the plugin verbose flag 2020-10-01 16:39:10 +01:00
Richard Hughes
e9ada9ed72 uefi-dbx: Remove three unhelpful lines of debugging 2020-10-01 16:39:10 +01:00
Richard Hughes
66ff7c45a9 vli: Remove invalid quirk entry
The 721C is a VL103, which isn't a FuVliUsbhubDevice at all. Fixes the:

    already set GType to FuVliPdDevice, ignoring FuVliUsbhubDevice

...message when the Mini dock / powered hub is inserted.
2020-10-01 16:39:10 +01:00
Richard Hughes
538fa633e8 vli: Remove useless debugging line
We know the flash_id as it's one of the InstanceIDs.
2020-10-01 16:39:10 +01:00
Richard Hughes
69f7a8c459 vli: Remove 32 lines of debugging at startup
I'll admit it's not normal to have *two* docks connected to one machine...
2020-10-01 16:39:10 +01:00
Richard Hughes
d852480f12 tpm-eventlog: Remove 8 lines of debugging at startup 2020-10-01 16:39:10 +01:00
Richard Hughes
deabfc5012 uefi-dbx: Do not upload a failure report for a failed dbx check
Use one of the errors mapping to FWUPD_UPDATE_STATE_FAILED_TRANSIENT to avoid
uploading a failure report for something the user has to fix, i.e. update the
distro shim package.
2020-09-29 13:15:50 +01:00
Sean-StarLabs
177470e9eb Update superio.quirk
Added Lite Mk III
2020-09-29 11:40:55 +01:00
Mario Limonciello
67a8b89453 trivial: clean up some debugging statements 2020-09-28 15:58:53 -05:00
Mario Limonciello
5d902778e4 trivial: uefi: remove extra flag for secure boot (shown in device flags) 2020-09-28 15:58:53 -05:00
Mario Limonciello
10ef83c96f trivial: thunderbolt: drop unnecessary verbose statements 2020-09-28 15:58:53 -05:00
boger.wang
4986e0f020 Add plugin for goodix fingerprint sensors
Support updating firmware for Goodix MOC fingerprint sensors.
2020-09-28 12:43:49 +01:00
Richard Hughes
44ae2a75e4 trivial: Add CRC8 as well 2020-09-25 18:00:21 +01:00