Mario Limonciello
3321d7ea09
Test for a locked device when trying to install firmware update
...
Although other checks may also fail, the error shown when trying
to install a CAB that matches a GUID on the system that is locked
should be a message to unlock the device.
2016-05-18 00:37:59 -05:00
Richard Hughes
6561c8daf7
Only return updatable devices from GetDevices()
...
Fixes some of https://github.com/hughsie/fwupd/pull/47
2016-05-17 16:24:09 +01:00
Richard Hughes
99147f180b
Allow devices to have multiple assigned GUIDs
2016-05-17 09:35:04 +01:00
Mario Limonciello
71a5b98d30
Add support for a --force flag to override provider warnings
...
Under some circumstances a provider may want to prevent a user from
performing a flash without additional user interaction.
Providers can opt into this behavior by checking for
FWUPD_INSTALL_FLAG_FORCE in the update routine.
2016-05-10 15:41:16 -05:00
Richard Hughes
21542abb0a
Set the device description when parsing local firmware files
...
We were overwriting the update description, so we never noticed before.
2016-04-29 10:55:16 +01:00
Richard Hughes
dde7a2f6e6
Re-match devices when the AppStream metadata is updated
...
This allows us to notify clients watching for the 'supported' property for
new devices added to the LVFS.
2016-04-28 16:56:23 +01:00
Richard Hughes
422e866bc8
Match the AppStream metadata after a device has been adedd
...
This allows us to match specific properties by watching the ::DeviceChanged()
signal.
2016-04-28 16:56:23 +01:00
Richard Hughes
8ca33784ec
Add device-added, device-removed and device-changed signals
...
This allows us to watch a specific device from client code without
re-requesting the device list on every Changed() signal.
2016-04-28 16:56:23 +01:00
Richard Hughes
4f4e1f3478
Add a 'supported' flag to the FuDevice
...
This is TRUE when the device has been found in the LVFS metadata.
2016-04-28 16:56:23 +01:00
Richard Hughes
37e9d777e5
Fix a critical warning when restarting the daemon
...
Emit the Status property with the correct type
2016-04-28 16:56:23 +01:00
Richard Hughes
654f6b82f3
Return all update descriptions newer than the installed version
...
Fixes: https://github.com/hughsie/fwupd/issues/45
2016-04-25 12:30:49 +01:00
Richard Hughes
9559bbe42d
Connect to UPower at startup
2016-03-29 19:18:52 +01:00
Richard Hughes
53ec7ea39e
Do not return updates that require AC when on battery
...
This prevents us showing updates in GNOME Software that can't actually be
installed without an error.
2016-03-29 19:18:52 +01:00
Richard Hughes
5bf2837485
Add fwupd_result_has_device_flag()
2016-03-29 19:18:52 +01:00
Richard Hughes
2d6e186800
Rename some of the new libfwupd API to align with the D-Bus names
2016-03-18 09:20:40 +00:00
Richard Hughes
8e9762d174
Use libfwupd inside the daemon
...
This also entailed writing some compat defines to work on FuDevices without
casting each one to a FwupdResult.
2016-03-17 10:14:17 +00:00
Richard Hughes
b94f2f0488
Export FwupdUpdateFlags in libfwupd
2016-03-17 09:52:00 +00:00
Richard Hughes
a475eecda2
Export FwupdUpdateState in libfwupd
2016-03-17 09:48:34 +00:00
Richard Hughes
16d8f6212d
Return the device flags when getting firmware details
...
This allows us to see if a local firmware file can be installed on the local
machine, and crucially, whether it has to be installed on or off-line.
2016-03-15 21:40:36 +00:00
Richard Hughes
dad1e193cd
Run vendor plugins as required
...
This allows us to run plugins from AppStream metadata values.
2016-03-14 14:54:21 +00:00
Richard Hughes
d090514f15
Add a simple plugin infrastructure
...
This allows vendors to write small self-contained modules that can be used to
override the default behaviour in the various providers.
2016-03-13 09:52:55 +00:00
Richard Hughes
65dfbfe54f
Do not use deprecated API from libappstream-glib
2016-03-02 13:43:21 +00:00
Richard Hughes
9a410ce459
Add an unlock method for devices
...
This is based on an idea from Mario Limonciello which can be used to enable a
PCI OptionROM read, or possibly enable ESRT functionality.
2016-03-02 10:17:02 +00:00
Richard Hughes
b75c92db47
Require AC power before scheduling some types of firmware update
...
Fixes half of https://github.com/hughsie/fwupd/issues/42
2016-02-20 20:25:56 +00:00
Mario Limonciello
918f3939a4
Move quirks directly into a single table and file.
...
This will make it easier for other quirks to be added later without
needing to remember to poke through all the code to find everywhere
they were mentioned.
2016-02-03 12:47:23 -06:00
Richard Hughes
df7950b8f3
Support vendor-specific UEFI version encodings
...
This allows vendors such as Dell to use encodings such as AA.BB.CC.DD rather
than the default of AA.BB.CCDD which is used by Intel and Microsoft.
Existing metainfo.xml files with version numbers prefixed with '0x' are
automatically converted to the new scheme.
Based on a patch Mario Limonciello, many thanks.
2016-02-03 08:52:34 +00:00
Richard Hughes
1d96633198
Add 'Created' and 'Modified' properties on managed devices
...
This allows us to show suitable UI in GNOME Software when reporting historical
firmware updates.
2016-01-27 13:25:45 +00:00
Richard Hughes
0a36f44bc7
trivial: Fix a debug statement when no devices are detected
2016-01-06 14:57:20 +00:00
Richard Hughes
b1b59d83cb
Do not misdetect different ColorHug devices
...
Allow devices to have a specific device ID, which also matches other equivalent
IDs from other providers
This allows the user to plug in one type of device, and not match a different
cached device that also matches the same provider.
2016-01-06 13:20:58 +00:00
Richard Hughes
2a1e75da72
Only dump the profiling data when run with --verbose
...
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1292059
2015-12-18 17:42:53 +00:00
Richard Hughes
a2b2b1cc68
Export the AppStream ID when returning device results
...
This allows us to match up the AppStream data we've parsed in gnome-software and the firmware update we've got from fwupd. This means we can get access to some of the data that fwupd doesn't care about, for instance the how-to-upgrade screenshots.
2015-11-25 15:00:51 +00:00
Richard Hughes
5d057a8fce
Split out the DFU provider as a new file
2015-11-25 10:27:36 +00:00
Richard Hughes
a3a8f5039c
Emit the changed signal after doing an update
...
This allows the UI to re-request the update list.
2015-11-24 12:35:22 +00:00
Richard Hughes
bb840ceaff
Do not assume that the compressed XML data will be NUL terminated
...
In most cases this is out of chance, but in some random cases the gzip
decompressor decides to reuse the input buffer as a decompression buffer,
which means we get junk data after the decompressed text.
To solve this, just truncate the data at the reported size, and then feed this
into the XML parser.
Fixes: https://github.com/hughsie/fwupd/issues/36
2015-10-30 08:47:28 +00:00
Richard Hughes
f2fca01989
Avoid seeking when reading the file magic during refresh
2015-10-30 08:44:44 +00:00
Richard Hughes
727664fa20
Clear the in-memory firmware store only after parsing a valid XML file
...
If we send junk to UpdateMetadata() the deamon did something like this:
* Clear existing entries from memory
* Try to load junk file into memory -> error
This left us with no entries in the in-memory store, which required the user to
either keep retrying the 'fwupdmgr update' until it worked or just forced them
to restart fwupd so it loaded the old valid store from the cache file.
Now, only clear the in-memory store and add the new firmware entries when
we know the file has been parsed correctly.
Fixes: https://github.com/hughsie/fwupd/issues/35
2015-10-27 09:56:13 +00:00
Richard Hughes
709d0114e3
Fix verify-update to produce components with the correct provide values
2015-10-09 12:17:08 +01:00
Richard Hughes
60f48c2013
trivial: Do no ship the old-style cleanup functions
2015-10-08 20:25:51 +01:00
Richard Hughes
3f23650f15
Add profiling data to debug slow startup times
2015-10-08 20:11:57 +01:00
Richard Hughes
d449447fc8
Add the update description to the GetDetails results
2015-10-08 20:11:34 +01:00
Richard Hughes
5d14deff4a
Support cabinet archives files with more than one firmware
...
This allows a vendor to upload a single file that targets different versions of
the same hardware. If this feature is used, the metainfo.xml files *must* have
something like <checksum target="content" filename="firmware2.rom"/> inside the
latest <release> tag.
2015-10-07 17:45:11 +01:00
Richard Hughes
9d76a877db
Fix the error message when no devices can be updated
...
Fixes: https://github.com/hughsie/fwupd/issues/30
2015-09-17 12:49:07 +01:00
Richard Hughes
46832432ea
Raise the dep on GLib to support and use g_autoptr()
2015-09-11 13:43:15 +01:00
Richard Hughes
033ccba050
Do not merge the existing firmware metadata with the submitted files
...
This just causes confusion and makes things hard to debug.
2015-09-10 15:06:26 +01:00
Richard Hughes
2257cee8ee
Simplify the version properties on devices to avoid complexity and bugs
...
This reduces the number of 'version' properties from 4 to 2... We can just use
these consistently to mean 'older' and 'newer'.
2015-09-08 16:53:49 +01:00
Richard Hughes
82856d9843
Add application metadata when getting the updates list
2015-09-08 16:53:49 +01:00
Richard Hughes
51f5083b09
Depend on appstream-glib >= 0.5.0
2015-09-08 16:53:49 +01:00
Richard Hughes
ba14582ef4
Use the AppStream 0.9 firmware specification by default
2015-08-11 14:34:08 +01:00
Richard Hughes
25cf6ab53e
Add a Raspberry Pi firmware provider
...
This queries the current firmware version and also allows online or offline
updating.
2015-08-05 12:14:56 +01:00
Richard Hughes
804c075fee
Make parsing the option ROM runtime optional
...
On devices with a lot of PCI devices this can take a couple of seconds per
device, and if this feature is not desired then disabling it saves system
resources.
2015-08-04 14:56:39 +01:00
Richard Hughes
e00d70dabe
trivial: Fix compile with AppStreamGlib git master
2015-08-04 14:44:37 +01:00
Richard Hughes
c6ff8fa574
Move the verification and metadata matching phase to the daemon
...
This allows us to use the functionality in gnome-software or cockpit without
loading the system AppStream store.
2015-08-03 18:00:54 +01:00
Richard Hughes
9985a24a29
Fix validation of written firmware
...
It turns out comparing sha1{firmware.cab} and sha1{firmware.bin} doesn't match.
Require appstream-glib 0.5.x for the new API required to fix this.
2015-08-03 13:22:34 +01:00
Richard Hughes
fe8b96e74e
Do not pre-convert the update description from AppStream XML
...
This allows the text clients like fwupdmgr to convert to UTF-8 text, and
graphical clients can use the markdown target to ensure the links are made
clickable and paragraphs are presented in the right way.
2015-07-28 13:13:41 +01:00
Thomas Hindoe Paaboel Andersen
1058ce8155
trivial: remove unused variables
2015-07-27 00:24:01 +02:00
Mario Limonciello
3ed5447c92
Reload appstream data after refreshing.
2015-07-23 19:01:15 -05:00
Richard Hughes
63a407ab34
Change the DBus method for installing firmware to 'Install'
...
It seems a little odd to call it 'Update' when it's being used for downgrading
and reinstalling as well.
As we're making things simpler, just use a single 'install' action in fwupdmgr
rather than 'install', 'update-online', 'update-offline'. We can use the flags
and fallbacks to do the right thing in all cases, and make the typical case
(installing a local file to any matching hardware) simple.
Fixes half of https://github.com/hughsie/fwupd/pull/23
2015-07-22 10:36:00 +01:00
Richard Hughes
7708a0f3fd
Move GetUpdates to the daemon
...
This only returns the latest version, if you actually need to know details
about all versions including downgrades then you still need to load the
AppStream metadata and match devices manually.
2015-07-22 10:35:05 +01:00
Richard Hughes
2b60a33c8f
Do not merge existing LVFS metadata
...
If we change the filenames or hash values we don't want duplicate locations.
2015-07-21 17:19:54 +01:00
Richard Hughes
1a886b1b76
Allow cab files to be saved
...
This means reworking the way we load the file as we have to keep the full
filelist in case we have to re-extract and save each and every file.
2015-07-20 15:31:05 +01:00
Thomas Hindoe Paaboel Andersen
80b85676bb
remove unused variables
2015-06-30 20:47:15 +02:00
Richard Hughes
a043c2e376
Add a 'verify' command that verifies the cryptographic hash of device firmware
...
Goes some way towards fixing https://github.com/hughsie/fwupd/issues/15
2015-06-29 12:53:01 +01:00
Richard Hughes
ebb58a3495
Add a Udev firmware provider
...
This allows us to support showing firmware updates for VIA USB hubs
2015-06-29 12:53:01 +01:00
Richard Hughes
ae0efdc5a7
Provide a way for clients to add new firmware metadata to the system cache
...
This is only possible if the metadata has been signed by a key that we trust.
2015-06-25 09:59:53 +01:00
Richard Hughes
d7dba98e68
Move boolean properties on the device to a set of flags
...
This is much less boilerplate and allows us to expand in the future.
2015-05-05 16:02:20 +01:00
Richard Hughes
c89c1b0e9b
Support OpenHardware devices using the fwupd vendor extensions
...
We won't be able to update these devices ourself, but we can detect if there
are updates available.
2015-05-05 15:22:00 +01:00
Richard Hughes
fd4688408d
Coldplug the devices before acquiring the well known name
...
This prevents getting no added devices when 'fwupdmgr get-devices' autostarts
the fwupd process.
2015-04-22 16:44:10 +01:00
Richard Hughes
63bbbf544f
Only allow signed firmware to be upgraded without a password
...
This does not affect UEFI capsule updates as the signing is checked by the
machine itself. We don't know anything about the trust level at all because
NIST SP800-147 pretty much says we're not allowed to.
For BIOS or ColorHug updates however we really do need to request authentication
before downgrading or installing non-signed code.
At the moment only the Hughski Limited key is trusted for firmware, although I
hope in the future we can also include Red Hat, Microsoft, Intel, AMD and other
hardware vendors in that list too.
Fixes: https://github.com/hughsie/fwupd/issues/5
2015-04-14 16:19:39 +01:00
Richard Hughes
d8fa049693
Show the firmware trust status when doing GetDetails()
2015-04-14 15:57:08 +01:00
Richard Hughes
8818151196
Export the status as an enumerated value rather than a string
2015-03-19 10:57:44 +00:00
Richard Hughes
f910ac9541
trivial: Also export the status enum codes
2015-03-19 10:54:06 +00:00
Richard Hughes
8645ec9ad5
Create a libfwupd shared library
2015-03-19 10:54:05 +00:00
Richard Hughes
0e883ee815
Add and document the offline-update lifecycle
...
Also allow providers to override getting and clearing the last update status.
2015-03-19 10:31:23 +00:00
Richard Hughes
9a38c03fe2
Do not crash when there are no devices to return
2015-03-17 20:58:46 +00:00
Richard Hughes
8ded6ca0f1
trivial: Mark some more strings as translatable
...
Also fix up some translator comments.
2015-03-16 12:51:43 +00:00
Richard Hughes
bbac6d7932
Return some more fields when returning data about firmware files
2015-03-12 11:41:20 +00:00
Richard Hughes
d7022b50e6
Emit ::Changed() when devices are added or removed
...
This allows clients to reget any available updates.
2015-03-11 19:47:08 +00:00
Richard Hughes
3bf9480d34
Parse the firmware name when exploding the cab file
2015-03-10 15:57:30 +00:00
Richard Hughes
773ce988e8
Add a 'Status' property which is updated when the daemon is active
2015-03-09 22:43:25 +00:00
Richard Hughes
a8e8394b70
Do not require the root password to update removable devices
2015-03-09 22:43:25 +00:00
Richard Hughes
184232918d
Do not require authentication to update devices when the root user
2015-03-09 22:43:25 +00:00
Richard Hughes
cccc775b60
Add a method to get details about a firmware file
2015-03-09 11:04:32 +00:00
Richard Hughes
d079b1a6ca
Allow installing firmware without a specified device ID
2015-03-06 10:09:55 +00:00
Richard Hughes
18e7591104
Use fwup.h to actually implement the UEFI update
2015-03-05 13:56:56 +00:00
Richard Hughes
3c99ba4d3c
Make both the ColorHug and UEFI support optional
2015-03-05 12:17:48 +00:00
Richard Hughes
412034adaa
Add actual error codes for failure
2015-03-05 11:30:58 +00:00
Richard Hughes
d1e823ccbf
Allow scheduling updates for later
...
Also add a update-prepared command to fwupdmgr to process the defered updates.
In the future we'll hook into the systemd early-boot code for this.
2015-03-05 11:15:36 +00:00
Richard Hughes
e7c1264f3b
Add a --force option to fwupdmgr to allow installing old firmware
2015-03-04 22:30:12 +00:00
Richard Hughes
def3175655
Compare the specified and installed firmare versions
2015-03-04 19:26:54 +00:00
Richard Hughes
a2288a3fce
trivial: Fix build after the ColorHug rename
2015-03-04 18:45:15 +00:00
Richard Hughes
72dff812c0
Add initial ColorHug support
...
This may be useful; more people have ColorHug devices than UEFI firmware that
supports system capsule updates.
2015-03-03 15:13:27 +00:00
Richard Hughes
67ec898265
Extract the .cab file and parse the .inf file
2015-03-03 11:41:01 +00:00
Richard Hughes
1ffde6cd72
Return the device properties when calling GetDevices()
...
This allows us to discover a version number, and other things.
2015-03-02 22:44:58 +00:00
Richard Hughes
74cc217f9d
Support online updates
...
This doesn't make sense for UEFI firmware, but allows us to support other
future usecases.
2015-03-01 20:33:54 +00:00
Richard Hughes
f508e76a7a
Use PolicyKit to check the authorisation of the firmware update
2015-02-27 12:49:36 +00:00
Richard Hughes
8bbfdf49a8
Flesh out the provider interface and allow offline updates
2015-02-27 08:29:13 +00:00
Richard Hughes
8dbfb1c478
Add initial build files and enough code to launch a simple D-Bus daemon
2015-02-26 18:16:40 +00:00