Commit Graph

894 Commits

Author SHA1 Message Date
Mario Limonciello
8918a4f168 trivial: ci: don't enable debian unstable apt pins 2022-01-02 12:28:54 -06:00
Richard Hughes
60d266cbc6 Add support for UF2 devices
A UF2 device exposes a VFAT block device (sometimes called a Mass
Storage Device) which has a virtual file called `INFO_UF2.TXT` where
metadata can be read. It may also have a the current firmware exported
as a file called `CURRENT.UF2` which is in a 512 byte-block UF2 format.

Writing any file to the MSD will cause the firmware to be written.
Sometimes the device will restart and the volume will be unmounted
and then mounted again. In some cases the volume may not “come back”
until the user manually puts the device back in programming mode.

Match the block devices using the VID*PID, UUID or label, and then
create a UF2 device which can be used to flash firmware.

Note: We only read metadata from allow-listed IDs to avoid causing
regressions on non-UF2 volumes. To get the UUID and label you can
use commands like:

    udisksctl info -b /dev/sda1
2021-12-21 10:06:18 +00:00
Richard Hughes
56f6f99633 usi-dock: Add support for various TBT4 docks for Lenovo and HP
With much help from Victor Cheng <victor_cheng@usiglobal.com>
2021-12-21 10:04:12 +00:00
Mario Limonciello
1b9bdb1659 trivial: snap: don't try to copy /var if it's not in the snap 2021-12-17 11:05:05 -06:00
Mario Limonciello
db94a995bd trivial: contrib/setup: if markdown isn't installed don't show an error
```
Install developer-friendly **unsafe** PolicyKit rules into /etc/polkit-1/rules.d? (y/N) n
Traceback (most recent call last):
  File "/home/supermario/fwupd/./contrib/ci/fwupd_setup_helpers.py", line 154, in <module>
    test_markdown()
  File "/home/supermario/fwupd/./contrib/ci/fwupd_setup_helpers.py", line 34, in test_markdown
    import markdown
ModuleNotFoundError: No module named 'markdown'
Collecting markdown
  Downloading Markdown-3.3.6-py3-none-any.whl (97 kB)
     |████████████████████████████████| 97 kB 1.1 MB/s
Collecting importlib-metadata>=4.4
  Downloading importlib_metadata-4.8.2-py3-none-any.whl (17 kB)
Collecting zipp>=0.5
  Downloading zipp-3.6.0-py3-none-any.whl (5.3 kB)
Installing collected packages: zipp, importlib-metadata, markdown
Successfully installed importlib-metadata-4.8.2 markdown-3.3.6 zipp-3.6.0
```
2021-12-16 07:07:33 -06:00
Mario Limonciello
b92fe4a760 trivial: allow wildcard so same build script works on older fedora 2021-12-15 06:46:27 -06:00
Mario Limonciello
9e02ee590f trivial: win32: bump to fedora 35 2021-12-15 06:46:27 -06:00
Mario Limonciello
bba3cd79de trivial: win32: include and enable curl support
This is needed for LVFS refreshes to work.

* Install curl binary
* Install ca-certs bundle
* Install gspawn helpers
* Reference ca-certs bundle on Win32
2021-12-15 06:46:27 -06:00
Mario Limonciello
dabfac661e trivial: win32: disable motd writing by default 2021-12-15 06:46:27 -06:00
Mario Limonciello
54b61c2027 trivial: win32: install the lvfs remote 2021-12-15 06:46:27 -06:00
Richard Hughes
251f6348aa trivial: Add the missing plugin_cpu
I think using the plugin_uefi_pk option was probably a typo.
2021-12-10 12:00:33 +00:00
Denis Pynkin
4fbe1c58c7 plugins/nordic-hid: added initial version
The plugin is using Nordic Semiconductor HID config channel to perform
devices update directly atteched via USB and BLE.
Current implementation supports FW images compatible with the nRF Secure
Immutable Bootloader.
This version has been tested with nRF52840-DK board.

Signed-off-by: Denis Pynkin <denis.pynkin@collabora.com>
Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Signed-off-by: Richard Hughes <richard@hughsie.com>
2021-12-07 08:19:29 +00:00
Richard Hughes
c47446c411 trivial: Add liblzma-dev the deps in case we're building a subproject 2021-12-06 17:57:23 +00:00
Richard Hughes
02eac5c75f Make more plugins optional 2021-11-29 09:30:57 +00:00
Richard Hughes
dc1d5de057 Make the HSI tests optional for embedded targets
70% of the plugins installed on OpenBMC are not being used...
2021-11-29 09:30:57 +00:00
Richard Hughes
3291bd40ce Make Upower and powerd support optional
In some cases you really know that the daemon is never going to exist.
2021-11-27 18:46:27 +00:00
Richard Hughes
71d93a65fb Make sqlite optional
This isn't required when fwupd is installed on targets like a BMC.
2021-11-23 15:09:05 +00:00
Gabriel Kerneis
93aae762a6 Offer to run tests before pushing in contrib/setup
Also make clearer that the default choice is "no" for interactive
prompts.
2021-11-23 15:41:46 +01:00
Richard Hughes
6ac7b93d70 trivial: Remove the libelf dep for CI
Fixes https://github.com/fwupd/fwupd/issues/4009
2021-11-19 11:03:24 +00:00
Richard Hughes
a4c79aac3a trivial: Fix the example spec file to work on s390x 2021-11-19 11:03:24 +00:00
Richard Hughes
9ef27052d5 altos: Remove support for the ChaosKey
The hardware is discontinued, and no further update from 1.6.7 was ever
supplied.
2021-11-15 15:17:38 +00:00
Richard Hughes
a9e696ab62 solokey: Remove support for the SoloKey device
The vendor does not intend on uploading firmware for this EOL device.
For the Solo V2 the vendor wants to use a different flashing protocol,
so all this is just dead code now.
2021-11-15 15:17:07 +00:00
Richard Hughes
7e386f8791 trivial: Do not install the fwupdtpmevlog debugging cli to save 50Kb 2021-11-15 15:01:22 +00:00
ml
abcea90ba8 firmware_packager.py: Fix templated values in XML 2021-11-14 19:55:25 -06:00
Richard Hughes
5f01678daa Use -Doffline=false to reduce the install size by over 100Kb
If there's no SuperIO chip then there's no need to support this.
2021-11-12 21:06:34 +00:00
Richard Hughes
34d531074c Use -Dmetainfo=false to reduce the install size by over 100Kb 2021-11-12 21:06:34 +00:00
Richard Hughes
e87fc05ab9 Speed up the daemon startup by ~2% by doing dlsym much less
We were calling g_module_symbol() 2703 times, which is actually more
expensive than you'd think.

It also means the plugins are actually what we tell people they are:
A set of vfuncs that get run. The reality before that they were dlsym'd
functions that get called at pretty random times.
2021-11-09 12:02:07 +00:00
Richard Hughes
36d7077f65 Add a new plugin to handle MTD devices 2021-11-05 20:01:51 +00:00
Richard Hughes
43924010b0 Version lock plugins to the daemon in the example spec file 2021-11-02 19:17:08 +00:00
Richard Hughes
510a9bfe0c Merge tpm-eventlog into the tpm plugin
This is so much less complicated.
2021-11-02 13:47:25 +00:00
Richard Hughes
b0f80757f5 Add a test UEFI device that can be used to test capsules
To use this use `sudo systemctl edit fwupd.service` and set
`Environment="FWUPD_SYSFSFWDIR=/usr/share/installed-tests/fwupd"`

Fixes https://github.com/fwupd/fwupd/issues/3441
2021-11-02 08:09:25 +00:00
Richard Hughes
8b36789692 trivial: Fix spelling of fwupd 2021-11-01 08:50:51 +00:00
Crag Wang
1be055fb1e trivial: check-license: exclude files from build directory earlier 2021-10-29 12:21:55 +08:00
Crag Wang
996ca6a0df trivial: docs not really required for debugging builds 2021-10-29 12:21:55 +08:00
Richard Hughes
0a7ce0cf25 Allow specifying the version format in firmware_packager
Fixes https://github.com/fwupd/fwupd/issues/3903
2021-10-25 18:00:34 +01:00
Richard Hughes
28678235cd Move the fuzzing files into the plugin directories
We only had to pile everything into the src/fuzzing/firmware directory
because honggfuzz could not cope with more than one input path.

This way each plugin is self contained and easy to copy.
Also, install the fuzzing builder objects as this fixes the installed
tests when srcdir does not exist.

Based on a patch by Jan Tojnar <jtojnar@gmail.com>, many thanks.
2021-10-22 15:24:05 +01:00
Richard Hughes
2d00cda464 Remove PLUGINBUILDDIR and use G_TEST_SRCDIR and G_TEST_BUILDDIR instead
This allows us to override the location we load data files from, which
allows us to do more kinds of installed tests in the future.

Also, move the global data/tests content into the place that it is used
as it was getting impossible to manage.
2021-10-21 18:36:22 +01:00
Richard Hughes
a5ef3629d4 trivial: Build the fuzzers with -g to get stacktraces 2021-10-18 20:02:03 +01:00
Richard Hughes
8e24fa77cf cfu: Add an initial outline CFU plugin
There's no actual hardware to test this against yet, but this is how I
would lay out a plugin if there was.

We still need to work out a generic encapsulation for the offer and
payload (for each component and bank) so this can work with LVFS and
fwupd.
2021-10-15 18:38:36 +01:00
Richard Hughes
d1dff82803 Allow installing developer-friendly PolicyKit rules from setup 2021-10-15 16:30:24 +01:00
Richard Hughes
46c90f11a4 trivial: Add missing Fedora BuildRequires 2021-10-06 16:43:50 +01:00
Mario Limonciello
d64607b98d trivial: add a helper to contrib/setup to rename branches
This will help for any local checkouts using the old branch name.
2021-09-24 14:21:17 -05:00
Richard Hughes
7f5b0c0b60 Rename the development branch from master to main
Fixes https://github.com/fwupd/fwupd/issues/3799
2021-09-24 14:20:24 -05:00
michaelcheng04
10549674b1 Add a plugin to flash Elan fingerprint reader hardware 2021-09-23 10:41:00 +01:00
Mario Limonciello
cc8eb5ca8c trivial: Merge python steps from contrib/setup into helper script
This avoids having to hardcode profile targets in multiple places
and also fixes the confusing entry points into scripts both by
arguments and environment variables.

It also makes the setup script a lot more debuggable and scalable.

OS detection is a lot more robust, where it will try to use pip to
set up the distro python package, and if pip is missing try to install
it.

If OS detection fails now, a user can use --os on contrib/setup for
specifying it.
2021-09-17 10:59:35 -05:00
Mario Limonciello
349975bb70 trivial: setup: drop the special case for python3-venv
Install it via dependencies.xml like the rest
2021-09-17 10:59:35 -05:00
Richard Hughes
9d37e447a1 Convert the device test script to a fwupdmgr subcommand
This allows us to do a few things:

 * Remove the runtime dep on Python 3, which is tricky for ChromeOS
 * Test composite devices more efficiently, only writing once per test
 * Automatically upload signed reports for successful device tests.
2021-09-16 15:01:36 +01:00
Mario Limonciello
24970acf4a trivial: generate_dependencies: add variant to OS strings that are generated 2021-09-16 06:43:55 -05:00
Mario Limonciello
de2774846f trivial: contrib/setup: use distro.id() 2021-09-16 06:43:55 -05:00
Mario Limonciello
15f0029624 trivial: generate_dependencies: fallback to "like" distros
This should cause linuxmint to run the Ubuntu dependency resolution.
2021-09-16 06:43:55 -05:00