Commit Graph

564 Commits

Author SHA1 Message Date
Richard Hughes
a61bb37881 Build the quirk files into the daemon as a GResource
Interestingly, this increases the `fwupd` binary size by ~30kb but
reduces the installed size of /usr/share/fwupd/quirks.d by ~330kb.
2022-06-30 18:52:24 +01:00
Andrii Dushko
802105af7f corsair: add HARPOON RGB Wireless mouse 2022-06-22 15:58:12 +01:00
Gaël PORTAY
299b42fe96 trivial: Make meson.build indentation consistent 2022-06-21 03:27:38 -04:00
Gaël PORTAY
c73d37fc6f Revert "fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions"
This reverts commit 3143bad0f5.
2022-06-20 12:57:40 -04:00
Gaël PORTAY
97a627b54b Cache list of devices to cache directory 2022-06-20 12:57:40 -04:00
Gaël PORTAY
2cc5449ae8 trivial: Use bash-completion facilities to get arguments 2022-06-20 12:57:40 -04:00
Gaël PORTAY
d893b80bbc trivial: Fix missing bash-completion for firmware-read 2022-06-20 12:57:40 -04:00
Gaël PORTAY
c8987ab100 trivial: Allow mixing modifiers/parameters in bash-completion scripts 2022-06-20 12:57:40 -04:00
Gaël PORTAY
5bdbf0dd0a trivial: Add missing comments in bash-completion scripts
For the sake of consistency.
2022-06-20 12:57:40 -04:00
Gaël PORTAY
4b3352e2f5 trivial: Add bash-completion for device-id
The four commands `get-details`, `install`, `install-blob`, and
`firmware-plugin` use device-id as second command argument but the
fwupdtool bash completion script does not completed it yet.

This calls function `_show_device_ids` to add completion for device-id
if completion the second argument of the commands mention above.
2022-06-20 12:57:40 -04:00
Gaël PORTAY
b670404127 trivial: Fix fwupdtool bash-completion script
The commands `attach`, `detach`, `activate`, `verify-update`,
`reinstall`, and `get-updates` calls `_show_device_ids` but that
function is not defined in the fwduptool bash-completion script.

This defines the function `_show_device_ids` by reusing the function
of the name in the fwupdmgr bash-completion script.

Fixes:

	$ sudo fwupdtool attach
	                        ^-- tabulation
	bash: _show_device_ids: command not found
2022-06-20 12:57:40 -04:00
Andrii Dushko
04a1e56921
trivial: join Corsair KATAR PRO Wireles tests (#4715) 2022-06-07 19:05:35 +03:00
Andrii Dushko
f9781b4cb8
trivial: add device tests for Corsair devices (#4708) 2022-06-06 15:18:00 +03:00
Gaël PORTAY
714983d82d steelseries: fizz: Add support for 2.4G connection 2022-05-30 10:24:52 -04:00
Gaël PORTAY
7bcae04650 trivial: Update Rival 3 Wireless steps to install 1.4 2022-05-27 11:19:51 -04:00
Richard Hughes
b5e7e01fc3 Release fwupd 1.8.1 2022-05-27 12:09:19 +01:00
Gaël PORTAY
509010c10d trivial: Add device-test for Steelseries Aerox 3 Wireless 2022-05-20 12:54:00 -04:00
Richard Hughes
a4906010d6 Add a way to read the device firmware in fwupdtool
In most cases 'fwupdtool firmware-dump' and 'fwupdtool firmware-read'
are going to be the same. This isn't true in all cases, especially when
dealing with composite firmware like archives.

See https://github.com/fwupd/fwupd/pull/4623#issuecomment-1129227133
2022-05-19 09:29:44 +01:00
Gaël PORTAY
788d26cc72 trivial: Add device-test for Steelseries Rival 3 Wireless 2022-05-17 09:49:17 -04:00
Richard Hughes
77bb1ff479 Switch the Windows installer from NSIS to MSI
This means we get a few bugs fixed:

 * We appear in the Add/Remove Programs UI
 * We have an uninstaller that works on Windows 10
 * The installation is pretty, and scriptable
 * We actually install the translations
2022-05-09 15:49:40 +01:00
Mario Limonciello
08900e3b8a trivial: set up win32 build not to take GPG by default
Unfortunately you can't detect the meson option:
```
../data/pki/meson.build:4:4: ERROR: Having a colon in option name is forbidden, projects are not allowed to directly access options of other subprojects.
```
So hardcode in top level meson.build that Windows doesn't take GPG.
2022-05-06 09:56:03 -05:00
Richard Hughes
9bf8724bf4 Release fwupd 1.8.0 2022-04-28 15:38:26 +01:00
Mario Limonciello
5d22db02ec trivial: Add a new configuration option systemd_unit_user
This option will control what user the fwupd-refresh.service unit
uses.
2022-04-25 14:06:04 -05:00
Mario Limonciello
0c9ac226c9 trivial: disable the preset for fwupd-refresh.timer as well
Until systemd fixes this issue we don't want the fwupd-refresh.timer
to be running unless a distro has disabled DynamicUser and made a
static user.

Fixes: https://github.com/fwupd/fwupd/issues/3037
2022-04-25 14:06:04 -05:00
Mario Limonciello
b3de9ffd21 Add support for a new TrustedUids key
This key is used to specify that a dedicated user runs the fwupd
client process and sensitive strings such as the serial number should
be shared with the calling process.

(Fixes: #4524)
2022-04-14 10:30:54 -05:00
Richard Hughes
63f2e9ee28 Allow 'fwupdmgr install' to install a specified firmware version
This also moves the 'local-install' action to a new verb, although we
fall back for compatibility.

Fixes https://github.com/fwupd/fwupd/issues/4514
2022-04-12 19:53:38 +01:00
adamgene
11779505f7 Support Google Servo Dock 2022-04-07 09:39:12 -05:00
Gaël PORTAY
1d8956de6e cfi: Add Macronix MX25V2033F and MX25L3236F 2022-04-02 07:28:58 +01:00
Gaël PORTAY
90a9c0de27 cfi: Add GigaDevice GD25Q20C and GD25Q32C 2022-04-02 07:28:58 +01:00
Gaël PORTAY
fcf436d0d0 cfi: Add Fudan FM25F01 and FM25W04 2022-04-02 07:28:58 +01:00
Richard Hughes
356bd2fa5e Use the CFI manufacturer ID to set the vendor 2022-03-31 15:44:54 +01:00
Richard Hughes
3ce161dfc2 Show the device serial number and instance IDs by default
This is a feature that seems useful, but one that no vendor has actually
asked for. It's also of limited use for peripheral devices.

Showing the instance IDs by default is also going to make it much easier
to explain to hardware vendors where the GUIDs come from.

Fixes https://github.com/fwupd/fwupd/issues/4445
2022-03-30 13:21:55 +01:00
Richard Hughes
8ef261af32 mtd: Add some self tests using mtdram 2022-03-18 12:55:44 +00:00
Richard Hughes
2012a42a1e Do not use /var/run for the socket
The FHS says to use /run everywhere now, so use that to avoid confusion.
See https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s13.html
2022-03-07 13:24:58 +00:00
Richard Hughes
14cc2e7ee4 Do not hardcode the libexecdir to /usr/libexec
Fixes https://github.com/fwupd/fwupd/issues/4360
2022-03-07 13:24:58 +00:00
Mario Limonciello
8281e17a4b trivial: update variable reading to the method in meson 0.56 or later 2022-02-28 08:34:48 -06:00
Mario Limonciello
6896e0ab52 trivial: switch from meson.source_root to meson.project_source_root
The former is deprecated in meson 0.56 or later.
2022-02-28 08:34:48 -06:00
Mario Limonciello
661990ed98 Convert build system to use meson tristate features
tristate features will automatically disable if dependencies marked
as required are missing.

Packagers can manually override using `auto_features`.

Link: https://mesonbuild.com/Build-options.html#features
2022-02-28 08:34:48 -06:00
Richard Hughes
171ecdf3ef Release fwupd 1.7.6 2022-02-25 13:38:35 +00:00
Richard Hughes
15cefb0d95 trivial: Fix KH08P device test 2022-02-23 10:25:46 +00:00
Mario Limonciello
fbac66b964 Don't let stderr fail the fwupdmgr-p2p test 2022-02-18 11:36:24 -06:00
Mario Limonciello
e5c00a8e98 trivial: quit fwupdmgr-p2p.sh on command failures
This will prevent a lingering daemon from influencing future tests
2022-02-18 11:36:24 -06:00
Simon Deziel
f5da94c473 systemd: don't run fwupd/fwupd-refresh in containers
Signed-off-by: Simon Deziel <simon@sdeziel.info>
2022-02-17 15:23:33 +00:00
Richard Hughes
33aed8c7fb Release fwupd 1.7.5 2022-02-07 16:24:38 +00:00
Richard Hughes
bb1bcce863 Allow fwupd to operate without a D-Bus daemon
This adds support for optionally using a UNIX domain socket where a
D-Bus daemon may not be running.

To use this, launch the daemon and clients with something like
`FWUPD_DBUS_SOCKET=/var/run/fwupd.sock fwupdmgr get-devices`
2022-01-31 14:05:23 +00:00
Richard Hughes
02d8753097 Move the clear-history command to fwupdtool
This is perhaps a useful thing to do when debugging, but isn't the sort
of thing we need users to understand.
2022-01-21 15:25:05 +00:00
Richard Hughes
ffac7d6024 Merge the little-used clear-offline action into clear-results
Fixes https://github.com/fwupd/fwupd/issues/3581
2022-01-21 15:25:05 +00:00
Denis Pynkin
e08ead31f5 plugins/nordic-hid: fix the bootloader type detection
The initial name of the varianle has been changed upon review in
[nrf_desktop DFU PR](https://github.com/nrfconnect/sdk-nrf/pull/6343)

This commit align the naming with NRF desktop upstream and fix testing
images URLs for device testing.
2022-01-20 03:16:47 +03:00
Crag Wang
fbcc031ae4 trivial: refresh bash completion to reflect recent changes 2022-01-17 13:41:20 -06:00
Richard Hughes
99d21d576d Release fwupd 1.7.4 2022-01-13 13:09:02 +00:00
Richard Hughes
e6dc11a205 trivial: Update all the device test URLs to reflect reality 2022-01-12 14:23:44 +00:00
Richard Hughes
c30f491001 trivial: Add a device test for the Servo Micro hardware 2022-01-07 20:18:30 +00:00
Richard Hughes
f885ab6d2a Allow patching firmware files at known offsets
This allows us to replace the 'dfu-tool replace' with a much more
controlled 'fwupdtool firmware-patch' command that patches at a set of
specific offsets.

Drop in the new functionality into the existing firmware ->write()
vfuncs so that the image headers, footers and/or checksums are correct.
2022-01-05 09:51:45 +00:00
Denis Pynkin
6fdaeb8f99 nordic-hid: add device test
Added the test for nRF52840-DK board with MCUBoot variant.
Images based on MCUBoot may be used for test automation since this
bootloader type does not have version dependencies.

To prepare the board for testing it should be flashed with MCUBoot
image variant with `nrfjprog` initially.
2021-12-30 10:24:22 +00:00
Richard Hughes
054fb04860 Release fwupd 1.7.3 2021-12-13 12:15:42 +00:00
Richard Hughes
ca221927ff trivial: Include the CfiDeviceCmdReadId value in the quirk data
If we're getting the flash ID out-of-band we might not have this set.
2021-12-09 13:09:43 +00:00
Richard Hughes
ea5cae7c41 Enable the MOTD integration when using pam_motd
This has to be a file, not a file-in-a-directory.

Fixes https://github.com/fwupd/fwupd/issues/4047
2021-12-01 20:55:15 +00:00
Richard Hughes
20d57b9ae6 trivial: Update subproject versions to latest 2021-12-01 20:46:20 +00:00
Richard Hughes
beb29ff698 Add a sync-bkc subcommand to ensure a known set of firmware versions
Install or downgrade firmware on all devices to make the system match
a well known set. This allows two things:

 * Factory recovery where a device in the field has been upgraded
 * Ensuring a consistent set of tested firmware for a specific workload

A tag is assigned either during upload or added post-upload on the LVFS
which is included in the metadata. A single firmware can be marked with
multiple tags, and tags can be duplicated for different firmwares.
2021-11-29 15:16:14 +00:00
Richard Hughes
677c80eb64 trivial: Use string comparisons for new libjcat versions
This regressed in 7b865f213c
2021-11-24 22:18:17 +00:00
Richard Hughes
7b865f213c trivial: Only install files that are going to be used 2021-11-23 15:14:14 +00:00
Richard Hughes
a15a50bc5c Release fwupd 1.7.2 2021-11-19 09:54:57 +00:00
Richard Hughes
7e386f8791 trivial: Do not install the fwupdtpmevlog debugging cli to save 50Kb 2021-11-15 15:01:22 +00: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
e840e9c23b Use -Dfish_completion=false to reduce the install size by a few more Kb 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
4f3e2c3a57 Allow overriding HwId data from the config file
To use this on a immutable system like ChromeOS you can create a file
in /var/lib/fwupd/daemon.conf which is used as an override.
2021-11-10 17:59:52 +00:00
Ross Burton
a346c582cc installed-tests: use sh instead of bash
fwupdmgr.sh uses [[ ]] tests, but none of the functionality offered by
them.

Use traditional [ ] tests, and switch the interpreter to /bin/sh.
2021-11-05 12:16:23 +00:00
Richard Hughes
1c7b4ef223 Release fwupd 1.7.1 2021-11-01 11:55:09 +00: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
6235a8222a Share the Common Flash Memory Interface quirks between plugins
Now two plugins are using hardcoded SPI constants for various CFI chips,
and it makes sense to have some common quirk data that can be used by
both.

Add a FuSpiChip helper object that can be used by FuDevice subclasses
to get the specific SPI commands to use for each flash ID.
2021-10-20 12:19:39 +01:00
Richard Hughes
be1879fa4d trivial: Delete some unused test data 2021-10-20 09:55:44 +01:00
Richard Hughes
fcb5257e16 Allow OnlyTrusted=false in the non-polkit case 2021-10-17 14:29:58 +01:00
Richard Hughes
644ac0ea05 Only installing firmwares with signatures by default
99.9999% of users are consuming firmware updates from the LVFS or
another trusted remote. It's far too easy to get a user to enter the
password to install an untrusted firmware, where the security
consequences are pretty dire.

Provide an escape-hatch for firmware engineers, but it does mean
editing a file in /etc as root. This seems like an acceptable level of
inconvenience.
2021-10-15 15:54:44 +01:00
Richard Hughes
88592df086 rts54hub: Use demo firmware on the evaluation board for the tests
This avoids clashing with real-world devices that have the same VID/PID.
Many thanks to Ricky WU <ricky_wu@realtek.com> for all the help.

Fixes: https://github.com/fwupd/fwupd/issues/3835
2021-10-13 20:07:15 +08:00
Richard Hughes
24cc4d9d30 trivial: Set the systemd timeout to match the client proxy
The systemd default of 90 seconds is uncomfortably close to the
worst-case Redfish startup time. Give ourselves some more headroom.
2021-10-08 17:22:45 +01:00
Richard Hughes
0afe353e05 Release fwupd 1.7.0 2021-10-06 16:09:38 +01:00
Mario Limonciello
70b327c41f trivial: drop fish-completion for ignore-power 2021-10-06 14:57:05 +01:00
Richard Hughes
204da7a775 trivial: Remove one case of master that snuck in 2021-09-24 19:13:44 +01:00
Richard Hughes
494fd2736f Allow installing the LVFS remote, but disabled
This is a patch that I have to regenerate almost every rebase. Just
move it upstream as it's probably not RHEL specific.
2021-09-24 16:55:04 +01:00
Richard Hughes
90ea3453c3 trivial: Do not install the device tests when using -Dtests=false 2021-09-24 06:51:09 -05:00
Mario Limonciello
6ebccf1e1e Remove support for --ignore-power by frontends
This functionality broke a number of releases ago as part of
implementing device inhibition and was just noticed now.

Instead of fixing it, the preference seems to be to remove the
functionality as it exists today as inhibitions can happen for
a number of reasons.

To still allow people to override these power warnings (such as during
development) add a new daemon configuration item that can be used.

Fixes: #3778
2021-09-21 13:13:52 -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
Ricardo Cañuelo
15a39b94ee logitech-hidpp: Add support for updating Bolt peripheral firmware
Also simplify the Instance IDs added by the Bolt hardware.
2021-09-13 11:28:55 +01:00
Richard Hughes
75eae41a86 dell-dock: Use the correct data file for the device test 2021-09-09 17:59:20 +01:00
Richard Hughes
75221f2e07 cxaudio: Use the correct data file for the device test 2021-09-09 17:59:20 +01:00
Mario Limonciello
41c00ff404 trivial: libfwupdplugin: make the self tests not overwrite source folders 2021-09-03 15:10:38 -05:00
Richard Hughes
3932a1f0d3 device-tests: Do not use a deprecated method
This also fixes the bug where you can't recover a Unifying device stuck
in bootloader mode if the 'default' protocol is not the one that matches.
2021-09-01 15:36:07 +01:00
Ricardo Cañuelo
35af30321a logitech-hidpp: Add support for updating Bolt receivers 2021-09-01 15:07:09 +01:00
Richard Hughes
c1ff02f055 trivial: Make the quirk style more consistent 2021-08-23 18:10:12 +01:00
Richard Hughes
7cfbea795c redfish: Allow starting when using RestrictAddressFamilies 2021-08-03 15:45:15 +01:00
Richard Hughes
2f9eece213 Release fwupd 1.6.2 2021-08-02 15:18:37 +01:00
Richard Hughes
19ab121f80 trivial: Write some initial release notes 2021-07-31 20:46:03 +01:00
Richard Hughes
f11abafed7 trivial: Use a valid firmware file for the ColorHug test 2021-07-30 18:53:30 +01:00
Richard Hughes
ac44c59605 Support DeviceRequest in the regression device-tests
Real hardware needs this and it was causing failures in the pre-release
regression tests.
2021-07-30 07:24:17 +01:00
Mario Limonciello
3081dea088 trivial: allow writing to /boot/grub
When running with systemd confinement writing to /boot/grub is needed.
```
fwupd[20533]: /usr/sbin/grub-mkconfig: 269: cannot create /boot/grub/grub.cfg.new: Read-only file system
fwupd[20492]: 03:12:53:0148 GLib                 posix_spawn avoided (fd close requested)
fwupd[20630]: /usr/bin/grub-editenv: error: cannot open `/boot/grub/grubenv': Read-only file system.
```
2021-07-28 17:11:39 +01:00
Richard Hughes
3747e245e5 uefi-capsule: Add support for CapsuleOnDisk
Based on a patch by Ilias Apalodimas <ilias.apalodimas@linaro.org>,
many thanks.

Fixes https://github.com/fwupd/fwupd/issues/2900
2021-07-28 17:11:39 +01:00
Mario Limonciello
84c4ae387d trivial: only use systemd env variables if /usr prefix
This helps avoid confusion of /usr/local/etc vs /etc/ when using hand
install on a system that previous had packaged install.
2021-07-28 10:25:47 -05:00
Richard Hughes
eb215753ee trivial: Add the ability to download files using PkClient for testing 2021-07-27 15:59:17 +01:00
Peter Marheine
464425fb5c SMBIOS: try reading from /sys/class/dmi if direct access fails
The raw SMBIOS tables that Linux exposes in /sys/firmware/dmi
are restricted to being readable by root only. If running as
non-root access is still permitted by fields that have been
pre-parsed by the kernel in /sys/class/dmi, most of which are
world-readable. This allows the daemon to load most HWIDs even
if running as a non-root user, as is done on Chromium OS.
2021-07-23 09:46:45 +01:00