Giter Site home page Giter Site logo

fwupd / fwupd Goto Github PK

View Code? Open in Web Editor NEW
2.7K 2.7K 413.0 48.86 MB

A system daemon to allow session software to update firmware

License: GNU Lesser General Public License v2.1

Shell 0.50% C 91.96% Python 4.50% Meson 1.83% Makefile 0.04% C++ 0.01% Rust 1.14% AGS Script 0.01% Assembly 0.01%
c firmware linux update

fwupd's Introduction

fwupd

Build Status CodeQL Coverity Scan Build Status Fuzzing Status CircleCI Coverage Status OpenSSF Scorecard OpenSSF Best Practices

This project aims to make updating firmware on Linux automatic, safe, and reliable.

Additional information is available at the website.

Where to get help?

  • GitHub issues & discussions in this repository
  • Libera IRC channel #fwupd. You can join through Libera's IRC or via the IRC bridge on Matrix.

Compiling

See Building and Debugging for how to build the fwupd development environment.

NOTE: In most cases, end users should not compile fwupd from scratch; it's a complicated project with dozens of dependencies (and as many configuration options) and there's just too many things that can go wrong.

Users should just have fwupd installed and updated by their distro, managed and tested by the package maintainer. The distribution will have also done some testing with how fwupd interacts with other software on your system, for instance using GNOME Software.

Installing fwupd using Snap or using Flatpak might be useful to update a specific device on the command line that needs a bleeding edge fwupd version, but it should not be considered as a replacement to the distro-provided system version.

Using Tartan

Tartan is a LLVM static analysis plugin built to analyze GLib code. It can be installed and then run using:

mkdir build-tartan
CC=clang meson ../
SCANBUILD=../contrib/tartan.sh ninja scan-build

LVFS

This project is configured by default to download firmware from the Linux Vendor Firmware Service (LVFS).

This service is available to all OEMs and firmware creators who would like to make their firmware available to Linux users.

You can find more information about the technical details of creating a firmware capsule in the hardware vendors section of the fwupd website.

Basic usage flow (command line)

If you have a device with firmware supported by fwupd, this is how you can check for updates and apply them using fwupd's command line tools.

# fwupdmgr get-devices

This will display all devices detected by fwupd.

# fwupdmgr refresh

This will download the latest metadata from LVFS.

# fwupdmgr get-updates

If updates are available for any devices on the system, they'll be displayed.

# fwupdmgr update

This will download and apply all updates for your system.

  • Updates that can be applied live will be done immediately.
  • Updates that run at bootup will be staged for the next reboot.

You can find more information about the update workflow in the end users section of the fwupd website.

Passim

If the Passim project is also installed and enabled, fwupd will re-publish the downloaded metadata file to be served on 0.0.0.0:27500 by default.

Other clients on the same network can make use of this via mDNS/LLMNR to reduce network bandwidth to configured remotes.

To disable this functionality either set P2pPolicy=none in /etc/fwupd/daemon.conf, uninstall the passim package or use systemctl mask passim.service on the terminal.

Reporting status

fwupd will encourage users to report both successful and failed updates back to LVFS. This is an optional feature, but encouraged as it provides valuable feedback to LVFS administrators and OEM developers regarding firmware update process efficacy.

The privacy policy regarding this data can be viewed on the lvfs readthedocs site.

To report the status of an update, run:

# fwupdmgr report-history

Only updates that were distributed from the LVFS will be reported to the LVFS.

Enterprise use

The flow of updates can be controlled in the enterprise using the "approved updates" feature. This allows the domain administrator to filter the possible updates from a central server (e.g. the LVFS, or a mirror) to only firmware that have been tested specifically in your organization.

The list of approved updates can be enabled by adding ApprovalRequired=true to the remote configuration file, e.g. lvfs.conf. Once enabled, the list of approved updates can be set in fwupd.conf using a comma-delimited list.

For example:

ApprovedFirmware=foo,bar

Where foo,bar refers to the container checksums that would correspond to two updates in the metadata file.

Additionally, the list of approved firmware can be supplemented using fwupdmgr set-approved-firmware baz or using the D-Bus interface.

Other frontends

fwupdmgr is a command line client, but various additional graphical frontends are enumerated in the fwupdmgr man page.

fwupd's People

Contributors

aleksander0m avatar anyproblem avatar bleungatchromium avatar chlee75 avatar cragw avatar d4s avatar dependabot[bot] avatar djcampello avatar dushko-devx avatar dylanvanassche avatar ffy00 avatar gportay avatar hardboprobot avatar hughsie avatar jackpot51 avatar jigpu avatar jrtc27 avatar lcp avatar marekpieta avatar marmarek avatar memily avatar piotrdrag avatar pwithnall avatar sean-starlabs avatar sergiidmytruk avatar superm1 avatar tari avatar valentindavid avatar vcdmp avatar ybernat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fwupd's Issues

Appstream Glib version implicitly raised to 0.6.7

Commit 404cc51 introduces using the functionality of AsRequireKind that's in a newer version of appstream-glib. Some guards were added to allow this to only be activated when using appstream-glib 0.6.7 (404cc51#diff-dac65679a6024b08b808290774d21c19R765), but not enough.

Older appstream-glib on the system still causes these compile errors:

fu-main.c:760:8: error: unknown type name ‘AsRequireKind’
        AsRequireKind kind,
        ^
fu-main.c: In function ‘fu_main_check_app_versions’:
fu-main.c:817:7: warning: implicit declaration of function ‘fu_main_check_version_requirement’ [-Wimplicit-function-declaration]
  if (!fu_main_check_version_requirement (app,
       ^
fu-main.c:817:2: warning: nested extern declaration of ‘fu_main_check_version_requirement’ [-Wnested-externs]
  if (!fu_main_check_version_requirement (app,
  ^
fu-main.c:818:7: error: ‘AS_REQUIRE_KIND_ID’ undeclared (first use in this function)
       AS_REQUIRE_KIND_ID,
       ^
fu-main.c:818:7: note: each undeclared identifier is reported only once for each function it appears in
fu-main.c:827:8: error: ‘AS_REQUIRE_KIND_FIRMWARE’ undeclared (first use in this function)
        AS_REQUIRE_KIND_FIRMWARE,
        ^
Makefile:1149: recipe for target 'fwupd-fu-main.o' failed

metainfo version doesn't match inf

I got such an failure when running a online mode update on Dell SLA:

root@WR-IntelligentDevice:/tmp# fwupdmgr get-devices
Device: UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0
  Provider:        UEFI
  Guid:            e0f614ed-fb82-467a-a34e-71172cc07e4d
  Version:         3.1
  UrlHomepage:     http://support.dell.com/
  Name:            <redacted> System Update
  Summary:         Firmware for the <redacted>>
  Description:     <p>Updating the system firmware improves performance.</p>
  Internal:        True
  AllowOnline:     False
  AllowOffline:    True
root@WR-IntelligentDevice:~# fwupdmgr refresh
root@WR-IntelligentDevice:~# fwupdmgr get-updates
UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0 has firmware updates:
Version:             3.3
Checksum:            73f12a2a3a8c4974bc8f7494e294583fba5bb3e7
Location:            <redacted>
root@WR-IntelligentDevice:~# fwupdmgr update
Downloading 3.3 for UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0...
Updating 3.3 on UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0...
 * Decompressing firmware
 * Idle
metainfo version is 3.3 while inf has 00.03.03

This issue doesn't happen with the commit 2d32b8f. Plz let me know whether this is a regression or not. Thank you very much!

undefined reference to `efi_guid_zero'

make[3]: Entering directory '/programs/fwupd/plugins/synapticsmst'
  CCLD     synapticsmst-tool
synapticsmst_tool-synapticsmst-device.o: In function `efi_guid_cmp':
/usr/include/efivar/efivar.h:137: undefined reference to `efi_guid_zero'
synapticsmst_tool-synapticsmst-tool.o: In function `efi_guid_cmp':
/usr/include/efivar/efivar.h:137: undefined reference to `efi_guid_zero'
collect2: error: ld returned 1 exit status
Makefile:819: recipe for target 'synapticsmst-tool' failed
make[3]: *** [synapticsmst-tool] Error 1
make[3]: Leaving directory '/programs/fwupd/plugins/synapticsmst'
Makefile:461: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/programs/fwupd/plugins'
Makefile:556: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/programs/fwupd'
Makefile:488: recipe for target '

This fixes this error:

$ git diff plugins/synapticsmst/Makefile.am
diff --git a/plugins/synapticsmst/Makefile.am b/plugins/synapticsmst/Makefile.am
index d1577e7..876caed 100644
--- a/plugins/synapticsmst/Makefile.am
+++ b/plugins/synapticsmst/Makefile.am
@@ -47,6 +47,7 @@ synapticsmst_tool_SOURCES =                                   \
 
 synapticsmst_tool_LDADD =                                      \
        $(LIBSMBIOS_LIBS)                                       \
+       $(EFIVAR_LIBS)                                          \
        $(APPSTREAM_GLIB_LIBS)                                  \
        $(GLIB_LIBS)
 

I am not sure if it should also be added to this section:

libfu_plugin_synapticsmst_la_LIBADD =                           \
        $(GUSB_LIBS)                                            \
        $(LIBSMBIOS_LIBS)                                       \
        $(GLIB_LIBS)

ELF header incorrect for fwupd, fwupdmgr, fwsignd

In trying to debug why Debian packaging was issuing a lintian error (https://lintian.debian.org/tags/sharedobject-in-library-directory-missing-soname.html) I found that the ELF header for these binaries is incorrect.

This is what it looks like currently:

$ readelf -h src/.libs/fwupd | grep Type
  Type:                              DYN (Shared object file)

I determined that this was happening because they were linked with -pie to make position independent executables. Is this intended behavior? It's a really simple patch to remove it. Just wanted to confirm with you before making the change.

$ readelf -h src/.libs/fwupd | grep Type
  Type:                              EXEC (Executable file)

Unclassed pointers

I've been noticing lately that unplugging WD15 or TB16 with fwupd running is getting a bunch of this in the debug output for fwupd.

03:49:57:0341 Fu  UEFI-124c207d-5db8-4d95-bd31-34fd971b34f9-dev0 has no firmware updates
03:49:57:0341 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:49:57:0341 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:49:57:0341 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:49:57:0341 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:49:57:0341 Fu  Called GetUpdates()
03:49:57:0341 Fu  UEFI-124c207d-5db8-4d95-bd31-34fd971b34f9-dev0 has no firmware updates
03:49:57:0341 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:49:57:0341 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:49:57:0341 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:49:57:0341 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:50:00:0447 Fu  Called GetUpdates()
03:50:00:0447 Fu  UEFI-124c207d-5db8-4d95-bd31-34fd971b34f9-dev0 has no firmware updates
03:50:00:0447 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:50:00:0447 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:50:00:0447 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:50:00:0447 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:50:00:0498 Fu  Called GetUpdates()
03:50:00:0498 Fu  UEFI-124c207d-5db8-4d95-bd31-34fd971b34f9-dev0 has no firmware updates
03:50:00:0498 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:50:00:0498 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed
03:50:00:0498 GLib-GObject invalid unclassed pointer in cast to 'FwupdResult'
03:50:00:0498 libfwupd fwupd_result_get_device_version: assertion 'FWUPD_IS_RESULT (result)' failed

I suspect it's some pointer that is freed by the Dell or Synaptics plugin but shouldn't have been. Can you give it a glance to see if it stands out to you?

No devices on update

When I run get devices, fwupdmgr shows me one device, but when I want to update it says no devices :

[ylecuyer@archlinux ~]$ fwupdmgr get-devices
Device: ro__sys_devices_pci0000_00_0000_00_01_0
  DisplayName:     Wrestler [Radeon HD 6320]
  Provider:        Udev
  Guid:            119b7793-e182-be01-46d4-9a824f98e773
  Version:         012.036.000.031.041549
  Internal:        True
  AllowOnline:     False
  AllowOffline:    False
[ylecuyer@archlinux ~]$ fwupdmgr update
GDBus.Error:org.freedesktop.fwupd.NothingToDo: no devices
[ylecuyer@archlinux ~]$ 

Misleading update description when upgrading through multiple updates

In fwupdmgr get-devices:

usb:00:03_84f40464-9272-4ef7-9399-cd95f12da696
  Guid:                 84f40464-9272-4ef7-9399-cd95f12da696
  DisplayName:          ColorHugALS
  Description:          Updating the firmware on your ColorHugALS device improves performance and adds new features.
  Provider:             ColorHug
  Flags:                allow-online|allow-offline
  Version:              3.0.2
  Created:              2016-04-25
  Modified:             2016-04-25
  AppstreamId:          com.hughski.ColorHugALS.firmware
  Name:                 ColorHugALS
  Summary:              Firmware for the Hughski ColorHug Ambient Light Sensor
  UpdateDescription:    Remove the invalid .inf file from the release tarball. No code or behaviour changes.
  UpdateVersion:        4.0.3
  FilenameCab:          /var/lib/fwupd/SNFEDH.cap
  UpdateHash:           36a03724418f41a8035478d29c25d7a4e6433bad
  UpdateChecksumKind:   sha1
  License:              GPL-2.0+
  UpdateUri:            https://secure-lvfs.rhcloud.com/downloads/8dbdd54c712b33f72d866ce3b23b3ceed3ad494d-hughski-colorhug-als-4.0.3.cab
  UrlHomepage:          http://www.hughski.com/
  Vendor:               Hughski Limited
  Trusted:              none

The UpdateDescription field is the one that will get shown in gnome-software, and it is misleading. I doubt that the difference between 3.0.2 and 4.0.3 is just "Remove an .inf file". It might be the difference between 4.0.2 and 4.0.3 though.

UEFI firmware update failed: Unknown error -1

I'm receiving this error when trying to update my system. Here's the output of get-devices:

$ fwupdmgr get-devices
Unknown Device
  Guid:                 3ec3df3a-2290-56e5-9d2f-eda62e9ab50b
  DeviceID:             ro__sys_devices_pci0000_00_0000_00_02_0
  Provider:             Udev
  Flags:                internal|locked
  DeviceVendor:         Intel Corporation
  Created:              2016-12-10

XPS 13 9360
  Guid:                 48af7d21-3145-4f5e-b1b4-c8fc67b6e646
  UniqueID:             system/*/fwupd-verify/firmware/com.dell.uefi48af7d21.firmware/*
  DeviceID:             UEFI-48af7d21-3145-4f5e-b1b4-c8fc67b6e646-dev0
  Description:          <p>Updating the system firmware improves performance.</p>
  Provider:             UEFI
  Flags:                internal|allow-offline|require-ac|supported
  Version:              0.1.0.0
  VersionLowest:        0.1.0.0
  Created:              2016-12-10
  AppstreamId:          com.dell.uefi48af7d21.firmware
  Summary:              Firmware for the Dell XPS 13 9360
  UpdateVersion:        0.1.0.7
  UpdateHash:           74c864cb236904abcf9cdc3637bcfd974b3f7229
  UpdateChecksumKind:   sha1
  License:              proprietary
  UpdateUri:            https://secure-lvfs.rhcloud.com/downloads/fdffa502b4ebc3d60359d133e842c667a3d4b351-firmware.cab
  UrlHomepage:          http://support.dell.com/
  Vendor:               Dell Inc.
  Trusted:              none

Integrated Webcam HD
  Guid:                 4ec19583-c132-5c27-a9cf-061419e838dc
  Guid:                 6b31e6e6-ba7c-5251-8f4c-7f2571612251
  DeviceID:             usb:00:05
  Provider:             USB
  Flags:                none
  Version:              86.38
  Created:              2016-12-10

Touchscreen
  Guid:                 31cc46f6-9bdc-5b1e-b48b-1c791781dcdc
  Guid:                 9fd88db6-a96d-505b-bbea-92aee9d07455
  DeviceID:             usb:00:04
  Provider:             USB
  Flags:                none
  Version:              17.18
  Created:              2016-12-10

Output of update:

$ fwupdmgr update
Downloading 0.1.0.7 for XPS 13 9360...
Updating 0.1.0.7 on XPS 13 9360...
Decompressing…         
Retrying as an offline update...
Scheduling…            
UEFI firmware update failed: Unknown error -1

There is not output into journald at that time. Perhaps there is output elsewhere but I don't know where that will be if it is. I'd love to get this patched installed as currently my laptop isn't able to suspend correctly.

Please let me know if you need more information.

Cheers!

Build failure due to unresoved symbols

Since the commit 1e5a93f7419556103068a4de97b501b84ade205a in fwupdate, the fwup_strerror and fwup_error are removed. The following build failure can be observed with the latest commits:

| fwupd/git-r0/git/src/fu-provider-uefi.c:263:9: warning: implicit declaration of function 'fwup_strerror' [-Wimplicit-function-declaration]
|          fwup_strerror (fwup_error));
|          ^
| fwupd/git-r0/git/src/fu-provider-uefi.c:263:24: error: 'fwup_error' undeclared (first use in this function)
|          fwup_strerror (fwup_error));
|                         ^

Wishlist: central community rating / review infrastructure

Hi,

it is very nice to see large efforts to finally get a central firmware update mechanism in place!

Having now said that, I believe that it could be very useful to have some central community infrastructure somewhere closely nearby / around this central firmware update handling.

I am thinking of features such as:

  • doing reviews / annotations of devices and individual firmware versions
  • blacklisting particular firmware versions for upgrading, unless manually overridden by the user (this feature could be implemented by letting users rate stability of a firmware version, and e.g. default-to-blacklisted of upgrading process in case average rating of a firmware version with more than say 3 ratings went below 3 stars out of 10 stars)

Obviously one would not want to have the central fwupd daemon part develop any grave dependency on such much more external/optional review / rating infrastructure - however, creating such infrastructure around main fwupd handling (and then letting fwupd handling act on certain key criteria) might be possible and very useful - by offering such review infrastructure centrally around fwupd, one would be able to offer tremendous features / flexibility around the usual boring / risky firmware update churn.

Thanks for a very useful project!

Allow easy firmware downgrades (for supported providers)

For e.g. downgrading from a buggy firmware update, it would be helpful if all available firmware versions could be made accessible, so that the user can chose a specific one to install.

I own a Dell XPS 15 and the new firmware is far worse than the shipped one, because of several bugs introduced. So I'd like to be able to downgrade the UEFI firmware.

Failed to parse /var/cache/app-info/xmls/fwupd.xml file

All related components (efivar, fwupd, fwupdate and appstream-glib) are updated to the latest. The following failure is observed:

root@WR-IntelligentDevice:~# ls /var/cache/app-info/xmls
root@WR-IntelligentDevice:~# fwupdmgr refresh
root@WR-IntelligentDevice:~# md5sum /var/cache/app-info/xmls/fwupd.xml 
4bd6637c7bda81a6753b58653a9a9ab2  /var/cache/app-info/xmls/fwupd.xml
root@WR-IntelligentDevice:~# fwupdmgr get-devices
Device: UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0
  Provider:        UEFI
  Guid:            e0f614ed-fb82-467a-a34e-71172cc07e4d
  Version:         0.0.774
  Internal:        True
  AllowOnline:     False
  AllowOffline:    True
root@WR-IntelligentDevice:~# fwupdmgr get-updates
UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0 has firmware updates:
Version:             775
Checksum:            023b40254142652049aff1f0948cf0d7e60e80ae
Location:            <removed private URL>
root@WR-IntelligentDevice:~# fwupdmgr update
Downloading 775 for UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0...
Updating 775 on UEFI-e0f614ed-fb82-467a-a34e-71172cc07e4d-dev0...
 * Decompressing firmware
Retrying as an offline update...
 * Idle
 * Decompressing firmware
 * Scheduling upgrade
Message did not receive a reply (timeout by message bus)
root@WR-IntelligentDevice:~# fwupdmgr get-devices
Failed to connect to fwupd: Error calling StartServiceByName for org.freedesktop.fwupd: Timeout was reached
root@WR-IntelligentDevice:~# /usr/lib64/fwupd/fwupd/fwupd -v
02:35:33        Verbose debugging enabled (on console 1)
FuMain: failed to load AppStream data: Failed to parse /var/cache/app-info/xmls/fwupd.xml file: cannot process file of type text/plain
02:35:33        FuMain: failed to load AppStream data: Failed to parse /var/cache/app-info/xmls/fwupd.xml file: cannot process file of type text/plain
root@WR-IntelligentDevice:~# md5sum /var/cache/app-info/xmls/fwupd.xml 
4bd6637c7bda81a6753b58653a9a9ab2  /var/cache/app-info/xmls/fwupd.xml

After removing /var/cache/app-info/xmls/fwupd.xml, fwupdmgr becomes working.

fwupd-self-test aborts when run without fwupd installed

When building / running test-suite of fwupd on platforms where fwupd hasn't been previously installed (eg. ppc, s390), the fwupd-self-test aborts instead of gracefully finishing.

fwupd 0.7.4: libfwupd/test-suite.log

TOTAL: 1

PASS: 0

SKIP: 0

XFAIL: 0

FAIL: 1

XPASS: 0

ERROR: 0

.. contents:: :depth: 2

FAIL: fwupd-self-test

/fwupd/enums: OK
/fwupd/result:
ColorHug2
Guid: 2082b5e0-7a64-478a-b1b2-e3404fab6dad
Guid: 00000000-0000-0000-0000-000000000000
DeviceID: USB:foo
Flags: allow-offline|require-ac
FirmwareHash: beefdead
DeviceChecksumKind: sha256
Created: 1970-01-01
Modified: 1970-01-02
AppstreamId: org.dave.ColorHug.firmware
UpdateDescription:

Hi there!


UpdateVersion: 1.2.3
FilenameCab: firmware.bin
UpdateHash: deadbeef
UpdateChecksumKind: sha1
Size: 1.0 kB
UpdateUri: http://foo.com
Trusted: payload
OK
/fwupd/client{devices}: **
libfwupd:ERROR:fwupd-self-test.c:168:fwupd_client_devices_func: assertion failed (error == NULL): The name org.freedesktop.fwupd was not provided by any .service files (FwupdError, 12)
FAIL fwupd-self-test (exit status: 134)

docbook2man not available, yet required for make manpages

Currently, 'configure' will tell if docbook2man is not available (e.g. not installed), but 'make' still tries to build man page.

Please make sure that if docbook2man is not found, don't try making manpages, or bail out right after failing in 'configure' if you consider manpage is mandatory, to avoid unnecessary compilation.

Below, you find output logs. Some strings are in Brazilian Portuguese due to the use of JHBuild, but the main text is readable. If not, please let me know.

Output: http://pastie.org/10716819

No updates detected for XPS 13 9360

When I run fwupdmgr get-devices I see my laptop listed as

XPS 13 9360
  Guid:                 48af7d21-3145-4f5e-b1b4-c8fc67b6e646
  DeviceID:             UEFI-48af7d21-3145-4f5e-b1b4-c8fc67b6e646-dev0
  Provider:             UEFI
  Flags:                internal|allow-offline|require-ac|supported
  Version:              0.1.0.7
  VersionLowest:        0.1.0.7
  Created:              2016-12-28

LVFS lists a 0.1.2.3 update for that device however fwupdmgr get-updates doesn’t find it. I tried running refresh and then looking at the result of fwupdmgr get-results but that is telling me Cannot get UEFI status for 48af7d21-3145-4f5e-b1b4-c8fc67b6e646. I’m on Archlinux and I saw #75 but I installed fwupdate under /boot as follows

├── EFI
│   ├── Boot
│   │   ├── BOOTX64.EFI
│   │   ├── en-us
│   │   │   └── bootx64.efi.mui
│   │   └── shimx64.efi
│   ├── dell
│   │   ├── bios
│   │   │   └── recovery
│   │   │       └── bios_cur.rcv
│   │   └── logs
│   │       ├── diags_current.xml
│   │       └── diags_previous.xml
│   ├── EFI
│   │   └── Arch
│   │       ├── fw
│   │       └── fwupx64.efi
│   ├── Microsoft
│   │   └── Boot
│   │       ├── BCD
│   │       ├── BCD.LOG
│   │       ├── en-us
│   │       ├── Fonts
│   │       │   ├── chs_boot.ttf
│   │       │   ├── cht_boot.ttf
│   │       │   ├── jpn_boot.ttf
│   │       │   ├── kor_boot.ttf
│   │       │   ├── malgun_boot.ttf
│   │       │   ├── meiryo_boot.ttf
│   │       │   ├── msjh_boot.ttf
│   │       │   ├── msyh_boot.ttf
│   │       │   ├── segmono_boot.ttf
│   │       │   ├── segoe_slboot.ttf
│   │       │   └── wgl4_boot.ttf
│   │       └── Resources
│   │           └── bootres.dll
│   ├── systemd
│   │   └── systemd-bootx64.efi
│   └── ubuntu
│       ├── fw
│       ├── fwupx64.efi
│       ├── grub.cfg
│       ├── grubx64.efi
│       ├── MokManager.efi
│       └── shimx64.efi
├── en-us
│   └── bootmgr.efi.mui
├── initramfs-linux-fallback.img
├── initramfs-linux.img
├── intel-ucode.img
├── loader
│   ├── entries
│   │   ├── arch.conf
│   │   └── arch-mainline.conf
│   └── loader.conf
└── vmlinuz-linux

efivar -l does not show any entries for fwupate, neither does efibootmgr -v.

Finally here is the output of fwupd -v

21:27:50	Verbose debugging enabled (on console 1)
21:27:50	adding plugin /usr/lib/fwupd-plugins-1/libfu_plugin_steelseries.so
21:27:50	adding plugin /usr/lib/fwupd-plugins-1/libfu_plugin_test.so
21:27:50	performing init() on test
21:27:51	Loading fallback values from /etc/fwupd.conf
21:27:51	adding udev device: /sys/devices/pci0000:00/0000:00:02.0
21:27:51	using 3ec3df3a-2290-56e5-9d2f-eda62e9ab50b for 0x8086:0x5916
21:27:51	emit added from Udev: ro__sys_devices_pci0000_00_0000_00_02_0
21:27:51	emit added from UEFI: UEFI-48af7d21-3145-4f5e-b1b4-c8fc67b6e646-dev0
21:27:51	UEFI-48af7d21-3145-4f5e-b1b4-c8fc67b6e646-dev0 has no firmware updates
Failed to coldplug: Dell: firmware updating not supported (0)
21:27:51	Failed to coldplug: Dell: firmware updating not supported (0)
21:27:51	using f62863ee-133d-511b-903c-d6dfa8f9fdf4 for USB\VID_0BDA&PID_8153
21:27:51	using 3ee73ec0-43ce-5b01-aed8-ce23fd193367 for USB\VID_0BDA&PID_8153&REV_3000
21:27:51	emit added from USB: usb:00:01:04
21:27:51	using 7a51fe38-0180-525c-af99-90ad3e5432a2 for USB\VID_0835&PID_2A01
21:27:51	using 62b00e1a-c22f-56f2-b8c0-161d30964345 for USB\VID_0835&PID_2A01&REV_0136
21:27:51	emit added from USB: usb:00:01:03
21:27:51	using 9efb54ea-0352-537a-9bfe-0e55e2ace999 for USB\VID_2341&PID_8036
21:27:51	using ebb140fe-1fb4-54cf-9bcf-15012ed3fe9c for USB\VID_2341&PID_8036&REV_0100
21:27:51	emit added from USB: usb:00:01:01
21:27:51	using 4ec19583-c132-5c27-a9cf-061419e838dc for USB\VID_0C45&PID_670C
21:27:51	using 6b31e6e6-ba7c-5251-8f4c-7f2571612251 for USB\VID_0C45&PID_670C&REV_5626
21:27:51	emit added from USB: usb:00:05
21:27:51	using 31cc46f6-9bdc-5b1e-b48b-1c791781dcdc for USB\VID_04F3&PID_20D0
21:27:51	using 9fd88db6-a96d-505b-bbea-92aee9d07455 for USB\VID_04F3&PID_20D0&REV_1112
21:27:51	emit added from USB: usb:00:04
21:27:51	no product string descriptor
######################                                                                 @0193ms AsStore:load 193ms
######################                                                                 @0193ms AsStore:load{per-system} 193ms
############                                                                           @0108ms AsStore:store-from-file{/usr/share/app-info/xmls/extra.xml.gz} 107ms
              #                                                                        @0124ms AsStore:store-from-file{/usr/share/app-info/xmls/core.xml.gz} 5ms
              ######                                                                   @0180ms AsStore:store-from-file{/usr/share/app-info/xmls/community.xml.gz} 55ms
                        #############################################################  @0726ms FuMain:coldplug 520ms
                        #####                                                          @0254ms FuMain:coldplug{Dell} 44ms
                              #######################################################  @0726ms FuMain:coldplug{USB} 471ms
                              ####################                                     @0431ms FuProviderUsb:added{0bda:8153} 176ms
                                                   ########                            @0500ms FuProviderUsb:added{0835:2a01} 69ms
                                                           #############               @0616ms FuProviderUsb:added{0c45:670c} 114ms
                                                                         ############  @0726ms FuProviderUsb:added{0cf3:e300} 109ms
21:27:51	devices now in store:
21:27:51	1	com.steelseries.rival-legacy.firmware	SteelSeries Firmware
21:27:51	2	UEFI-dummy-dev0	UEFI Updates
21:27:51	3	com.via.VL811.firmware	VL811 Firmware
21:27:51	4	com.via.VL811+.firmware	VL811+ Firmware
21:27:51	5	com.via.VL812.firmware	VL812 Firmware
21:27:51	6	com.via.VL812_B2.firmware	VL812 B2 Firmware
21:27:51	7	com.8bitdo.fc30.firmware	FC30
21:27:51	8	com.8bitdo.fc30arcade.firmware	FC30 Joystick
21:27:51	9	com.8bitdo.fc30pro.firmware	FC30 Pro
21:27:51	10	com.8bitdo.nes30.firmware	NES30
21:27:51	11	com.8bitdo.nes30pro.firmware	NES30 Pro
21:27:51	12	com.8bitdo.sfc30.firmware	SFC30
21:27:51	13	com.8bitdo.snes30.firmware	SNES30
21:27:51	14	com.dell.uefi124c207d.firmware	XPS 15 9550/Precision 5510 System Update
21:27:51	15	com.dell.uefi293af847.firmware	OptiPlex 3050 System Update
21:27:51	16	com.dell.uefi33773727.firmware	XPS 13 9350 System Update
21:27:51	17	com.dell.uefi3c20b9e1.firmware	OptiPlex 7450 AIO System Update
21:27:51	18	com.dell.uefi43ca3264.firmware	OptiPlex 7440 AIO System Update
21:27:51	19	com.dell.uefi48af7d21.firmware	XPS 13 9360 System Update
21:27:51	20	com.dell.uefi49e03513.firmware	Latitude E5X80 System Update
21:27:51	21	com.dell.uefi4fed6c9d.firmware	OptiPlex 7050 System Update
21:27:51	22	com.dell.uefi5ffdbc0d.firmware	XPS 13 9360 System Update
21:27:51	23	com.dell.uefi8080d214.firmware	OptiPlex 5050 System Update
21:27:51	24	com.dell.uefi8b7b32a7.firmware	Latitude E5X80 System Update
21:27:51	25	com.dell.uefia0a3aa54.firmware	Embedded Box PC 5000 System Update
21:27:51	26	com.dell.uefiaee2604a.firmware	Embedded Box PC 3000 System Update
21:27:51	27	com.dell.uefib566a9b1.firmware	OptiPlex 5250 AIO System Update
21:27:51	28	com.dell.uefid69fed57.firmware	OptiPlex 3050 AIO System Update
21:27:51	29	com.dell.uefie0f614ed.firmware	Edge Gateway 5000/5100 System Update
21:27:51	30	com.hughski.ColorHug.firmware	ColorHug
21:27:51	31	com.hughski.ColorHug2.firmware	ColorHug2
21:27:51	32	com.hughski.ColorHugALS.firmware	ColorHugALS
21:27:51	UEFI-48af7d21-3145-4f5e-b1b4-c8fc67b6e646-dev0 has no firmware updates
21:27:51	FuMain: acquired name: org.freedesktop.fwupd

fwupdmgr can't pull updates automatically

Currently fwupdmgr has all the data it needs to be able to download an update from Appstream data, but it can't do the download itself. When running from gnome-software, this isn't a big deal because gnome-software will download for you and pass to fwupd. When running fwupdmgr on the command line you have to manually wget/curl the file in advance and then call the appropriate installation argument.

For a full command line experience you should be able to have fwupdmgr parse the appstream data, fetch the file and apply the update.

Unclear that updates are available but can't be installed while on AC power.

Hi,

I have a Dell XPS 15 9550, for which there are BIOS files available in LVFS. However, fwupdmgr doesn't show any available updates, and there is nothing to indicate that the BIOS is upgradeable. On Fedora 24:

$ fwupdmgr get-updates
No devices can be updated: Nothing to do
$ fwupdmgr get-devices
GM107M [GeForce GTX 960M]
  Guid:                 520d05a3-ece8-519e-88de-0755806314f4
  DeviceID:             ro__sys_devices_pci0000_00_0000_00_01_0_0000_01_00_0
  Provider:             Udev
  Flags:                internal|locked
  DeviceVendor:         NVIDIA Corporation
  Created:              2016-10-10

Skylake Integrated Graphics
  Guid:                 8ec3e242-65bd-58ee-9c5e-b28f1e32e7ae
  DeviceID:             ro__sys_devices_pci0000_00_0000_00_02_0
  Provider:             Udev
  Flags:                internal|locked
  FirmwareHash:         0ef770b17699c97f5c08d5c1fcd46517f39e7c07
  DeviceChecksumKind:   sha1
  DeviceVendor:         Intel Corporation
  Created:              2016-10-10

BCM2045A0
  Guid:                 f8498646-6724-5f55-9806-57b3f8636ad8
  Guid:                 35fd074d-7c78-599e-b37a-88931c63ba01
  DeviceID:             usb:00:04
  Provider:             DFU
  Flags:                allow-online|allow-offline
  Version:              1.18
  Created:              2016-10-10

Touchscreen
  Guid:                 01693e7d-7382-5e67-a7fc-5aa70fc55163
  Guid:                 51e923fe-c806-5601-bb4e-31f300e75069
  DeviceID:             usb:00:09
  Provider:             USB
  Flags:                none
  Version:              17.18
  Created:              2016-10-10

Integrated Webcam HD
  Guid:                 4c03e6af-b94c-5c18-8689-e77ceadbe524
  Guid:                 fb0df457-b15e-5d4a-b73a-8491dca96a07
  DeviceID:             usb:00:0c
  Provider:             USB
  Flags:                none
  Version:              86.5
  Created:              2016-10-10

Dmidecode indicates I'm on BIOS 1.2.00, but a 1.2.10 is available in LVFS (and a 1.2.14 on Dell's own web):

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Dell Inc.
        Version: 01.02.00
        Release Date: 04/07/2016

fwupd packages:

$ dnf list '*fwupd*'
Last metadata expiration check: 0:21:42 ago on Mon Oct 10 16:54:13 2016.
Installed Packages
fwupd.x86_64             0.7.2-4.fc24
fwupdate-efi.x86_64      8-2.fc24
fwupdate-libs.x86_64     8-2.fc24

parsing xml failure

I can still reproduce this issue #35 with the following test command:
while [ 1 ]; do fwupdmgr refresh; if [ $? -ne 0 ]; then echo -$?-; break; else echo OK; fi; done

When this issue happens, executing "fwupdmgr refresh" always return the error of parsing XML. And fwupd looks not working:

# fwupdmgr refresh
failed to update metadata: Failed to parse XML: Error on line 119 char 2: Document must begin with an element (e.g. <book>)
# ps aux|grep fwupd
root      2297  0.1  0.3 404640  6776 ?        Sl   07:16   0:01 /usr/lib64/fwupd/fwupd/fwupd
root      3002  0.0  0.0   4400   504 pts/0    S+   07:30   0:00 grep fwupd
# /usr/lib64/fwupd/fwupd/fwupd -v
07:27:43        Verbose debugging enabled (on console 1)
FuMain: failed to load AppStream data: Failed to parse /var/cache/app-info/xmls/fwupd.xml file: cannot process file of type text/plain
07:27:43        FuMain: failed to load AppStream data: Failed to parse /var/cache/app-info/xmls/fwupd.xml file: cannot process file of type text/plain
# rm /var/cache/app-info/xmls/fwupd.xml
# fwupdmgr refresh
failed to update metadata: Failed to parse XML: Error on line 119 char 2: Document must begin with an element (e.g. <book>)

dumping existing firmware and showing cryptographic hashes

Given the scope of fwupd and the code it needs to communicate with various types of hardware with firmware, it seems natural to extend the functionality to be able to read back the existing firmwares (and apply a cryptographic hash to the dumped contents). This would permit running this on a booted system, and then later check against a reference dump. Or even compare with dumps on other machines of the same model. Such a preventive measure does not protect against malicious firmware that might be altering the readback behavior of the device; presenting a valid image. It will however raise the bar for writers of malicious firmwares. Like keyloggers in the embedded controllers of thinkpad as demonstrated in this talk: https://media.ccc.de/browse/congress/2010/27c3-4174-en-the_hidden_nemesis.html#video

Regression: First run of fwupdmgr shows no devices

As requested in #79:

Here is output from journalctl -f, after modifying fwupd.service to run using -v.

fwupd.service was activated by fwupdmgr get-devices, which showed no devices. A second call to fwupdmgr get-devices did show devices. I believe this behaviour is not shown in the downstream package version fwupd-0.7.5-1.fc25.x86_64.

log.txt

Need a way to easily downgrade firmware

e.g.

fwupdmgr downgrade UEFI-819b858e-aaaa-402f-bbbb-5b311b6c1959-dev0

I guess we need to allow the user to choose an older version of the firmware also.

fwupd appears as preventing autosuspend of USB device

fwupd appears as preventing autosuspend of a USB device, and there is no explanation logged.

fwupd should aspire not to appear to cause USB devices to fail to autosuspend. If there is a limitation which requires that the device be held active, IMO this should be considered a quirk and logged, so that the causes (and perhaps workarounds) are slightly easier for interested users to discover.

The USB device is the built-in bluetooth device on a Dell Lattitude E5450.

Running powertop and tabbing over to "Device stats", I see 100% usage - which means no autosuspend - for "USB device: usb-device-8087-0a2a". The driver supports autosuspend. However the device that contains the btusb endpoints is considered used.

$ cd /sys/bus/usb/devices/1-1.3  # i don't know the logic to this
$ cat idVendor
8087
$ cat idProduct 
0a2a
$ readlink driver */driver
../../../../../../bus/usb/drivers/usb
../../../../../../../bus/usb/drivers/btusb
../../../../../../../bus/usb/drivers/btusb
$ cd power
$ cat level
auto
$ cat autosuspend
2
$ cat runtime_active_kids 
0
$ cat runtime_usage
1

There are no bluetooth sockets

$ netstat -a
...
Active Bluetooth connections (servers and established)
Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
Proto  Destination       Source            State     Channel
$

lsof shows that fwupd is holding open the usb device (the parent device to the two btusb interfaces):

$ sudo lsof +D /dev/bus/usb
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
fwupd   2186 root   28u   CHR  189,2      0t0 11356 /dev/bus/usb/001/003

There are no relevant fwupd messages in the journal.

$ sudo journalctl -b|grep fwupd
Jan 04 17:11:14 alan-laptop dbus-daemon[863]: [system] Activating service name='org.freedesktop.fwupd' requested by ':1.63' (uid=1000 pid=1911 comm="/usr/bin/gnome-software --gapplication-service " label="unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023") (using servicehelper)
Jan 04 17:11:15 alan-laptop fwupd[2186]: Failed to coldplug: UEFI firmware updating not supported
Jan 04 17:11:15 alan-laptop fwupd[2186]: Failed to coldplug: Dell: UEFI capsule firmware updating not supported (0)
Jan 04 17:11:15 alan-laptop dbus-daemon[863]: [system] Successfully activated service 'org.freedesktop.fwupd'

I looked for further identification of the bluetooth device. I didn't find any more identifiers, but I did notice a firmware is applied repeatedly, including on resume from suspend. I don't know if this is fwupd at work.

$ dmesg|grep Blue
...
[ 42.228867] Bluetooth: RFCOMM ver 1.11
[ 429.338230] Bluetooth: hci0: read Intel version: 370810011003110e00
[ 429.861139] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
[ 430.181256] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated
[ 1935.692928] Bluetooth: hci0: read Intel version: 370810011003110e25
[ 1935.692929] Bluetooth: hci0: Intel device is already patched. patch num: 25
[ 4049.191217] Bluetooth: hci0: read Intel version: 370810011003110e00
[ 4049.191344] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
[ 4049.514295] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated
[ 4971.657207] Bluetooth: hci0: read Intel version: 370810011003110e00
[ 4971.657211] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
[ 4971.977217] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated

Unable to install UEFI-dummy-dev0 firmware

On fedora 25, on my Dell XPS 13 9350, I'm unable to install the UEFI-dummy-dev0 firmware.

I've tried to use fwupdate and fwupdmgr to do this, but both fail without explanation. I also tried to reboot the system in between and this did nothing.

Here is my dmidecode output :

# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
94 structures occupying 5688 bytes.
Table at 0x000E0000.

Handle 0xDA00, DMI type 218, 251 bytes
OEM-specific Type
    Header and Data:
        DA FB 00 DA B2 00 04 FF 1F B6 40 05 00 05 00 03
        00 06 00 06 00 05 00 0B 00 0B 00 01 00 0C 00 0C
        00 02 00 0D 00 0D 00 03 00 0F 00 0F 00 00 00 11
        00 11 00 02 00 12 00 12 00 04 00 1E 00 1E 00 00
        00 22 00 22 00 01 00 23 00 23 00 00 00 28 00 28
        00 00 00 29 00 29 00 01 00 2A 00 2A 00 02 00 2B
        00 2B 00 FF FF 2C 00 2C 00 FF FF 40 00 40 00 01
        00 41 00 41 00 00 00 42 00 42 00 01 00 43 00 43
        00 00 00 50 00 50 00 01 00 55 00 55 00 00 00 5C
        00 5C 00 01 00 5D 00 5D 00 00 00 65 00 65 00 00
        00 66 00 66 00 01 00 7D 00 7D 00 FF FF 93 00 93
        00 01 00 94 00 94 00 00 00 9B 00 9B 00 01 00 9C
        00 9C 00 00 00 9F 00 9F 00 00 00 A0 00 A0 00 01
        00 A1 00 A1 00 00 00 A3 00 A3 00 01 00 D1 00 D1
        00 01 00 D2 00 D2 00 00 00 EA 00 EA 00 00 00 EB
        00 EB 00 01 00 FF FF FF FF 00 00

Handle 0xDA01, DMI type 218, 251 bytes
OEM-specific Type
    Header and Data:
        DA FB 01 DA B2 00 04 FF 1F B6 40 EC 00 EC 00 02
        00 ED 00 ED 00 00 00 F0 00 F0 00 01 00 F1 00 F1
        00 00 00 F2 00 F2 00 01 00 F3 00 F3 00 02 00 09
        01 09 01 00 00 0E 01 0E 01 01 00 0F 01 0F 01 00
        00 10 01 10 01 01 00 11 01 11 01 00 00 1B 01 1B
        01 00 00 1C 01 1C 01 01 00 2B 01 2B 01 01 00 2C
        01 2C 01 00 00 2D 01 2D 01 01 00 2E 01 2E 01 00
        00 35 01 35 01 FF 00 38 01 38 01 01 00 39 01 39
        01 02 00 40 01 40 01 00 00 41 01 41 01 01 00 44
        01 44 01 00 00 45 01 45 01 01 00 46 01 46 01 00
        00 47 01 47 01 01 00 4A 01 4A 01 00 00 4B 01 4B
        01 01 00 4C 01 4C 01 01 00 4D 01 4D 01 00 00 52
        01 52 01 01 00 53 01 53 01 00 00 75 01 75 01 02
        00 76 01 76 01 01 00 7F 01 7F 01 00 00 80 01 80
        01 01 00 81 01 81 01 00 00 82 01 82 01 01 00 89
        01 89 01 00 00 FF FF FF FF 00 00

Handle 0xDA02, DMI type 218, 251 bytes
OEM-specific Type
    Header and Data:
        DA FB 02 DA B2 00 04 FF 1F B6 40 8A 01 8A 01 01
        00 93 01 93 01 00 00 94 01 94 01 01 00 9B 01 9B
        01 00 00 9C 01 9C 01 01 00 DE 01 DE 01 00 00 DF
        01 DF 01 01 00 E1 01 E1 01 00 00 EA 01 EA 01 00
        00 EB 01 EB 01 01 00 02 02 02 02 00 00 03 02 03
        02 01 00 04 02 04 02 00 00 05 02 05 02 01 00 16
        02 16 02 06 00 2D 02 2D 02 01 00 2E 02 2E 02 00
        00 32 02 32 02 02 00 33 02 33 02 01 00 35 02 35
        02 01 00 36 02 36 02 00 00 4A 02 4A 02 01 00 4B
        02 4B 02 01 00 4C 02 4C 02 00 00 64 02 64 02 01
        00 65 02 65 02 00 00 66 02 66 02 01 00 67 02 67
        02 00 00 68 02 68 02 01 00 69 02 69 02 00 00 6C
        02 6C 02 01 00 6D 02 6D 02 00 00 6E 02 6E 02 00
        00 85 02 85 02 01 00 86 02 86 02 00 00 94 02 94
        02 01 00 95 02 95 02 00 00 A7 02 A7 02 01 00 A8
        02 A8 02 00 00 FF FF FF FF 00 00

Handle 0xDA03, DMI type 218, 251 bytes
OEM-specific Type
    Header and Data:
        DA FB 03 DA B2 00 04 FF 1F B6 40 B9 02 B9 02 01
        00 BA 02 BA 02 00 00 BD 02 BD 02 01 00 BE 02 BE
        02 00 00 CD 02 CD 02 01 00 D8 02 D8 02 FF FF D9
        02 D9 02 FF FF DA 02 DA 02 FF FF DB 02 DB 02 FF
        FF DC 02 DC 02 FF FF DD 02 DD 02 FF FF DE 02 DE
        02 FF FF DF 02 DF 02 FF FF E3 02 E3 02 01 00 E4
        02 E4 02 00 00 E5 02 E5 02 01 00 EB 02 EB 02 06
        00 ED 02 ED 02 01 00 EE 02 EE 02 00 00 F6 02 F6
        02 08 00 12 03 12 03 03 00 13 03 13 03 01 00 14
        03 14 03 00 00 15 03 15 03 01 00 16 03 16 03 00
        00 17 03 17 03 01 00 18 03 18 03 00 00 19 03 19
        03 01 00 1A 03 1A 03 00 00 1B 03 1B 03 01 00 1C
        03 1C 03 00 00 1D 03 1D 03 01 00 1E 03 1E 03 00
        00 1F 03 1F 03 01 00 20 03 20 03 00 00 25 03 25
        03 01 00 26 03 26 03 01 00 29 03 29 03 01 00 2A
        03 2A 03 00 00 FF FF FF FF 00 00

Handle 0xDA04, DMI type 218, 251 bytes
OEM-specific Type
    Header and Data:
        DA FB 04 DA B2 00 04 FF 1F B6 40 2B 03 2B 03 01
        00 2C 03 2C 03 00 00 38 03 38 03 01 00 39 03 39
        03 01 00 41 03 41 03 03 00 42 03 42 03 04 00 43
        03 43 03 05 00 46 03 46 03 01 00 47 03 47 03 02
        00 48 03 48 03 05 00 49 03 49 03 FF FF 4A 03 4A
        03 FF FF 4D 03 4D 03 01 00 4E 03 4E 03 00 00 4F
        03 4F 03 01 00 50 03 50 03 00 00 57 03 57 03 00
        00 58 03 58 03 01 00 5B 03 5B 03 01 00 5C 03 5C
        03 00 00 5D 03 5D 03 01 00 5E 03 5E 03 00 00 5F
        03 5F 03 01 00 60 03 60 03 00 00 61 03 61 03 01
        00 62 03 62 03 00 00 64 03 64 03 01 00 65 03 65
        03 00 00 66 03 66 03 00 00 67 03 67 03 01 00 69
        03 69 03 00 00 6A 03 6A 03 01 00 6B 03 6B 03 02
        00 6C 03 6C 03 00 00 6D 03 6D 03 01 00 6E 03 6E
        03 FF FF 74 03 74 03 00 00 75 03 75 03 01 00 78
        03 78 03 01 00 FF FF FF FF 00 00

Handle 0xDA05, DMI type 218, 251 bytes
OEM-specific Type
    Header and Data:
        DA FB 05 DA B2 00 04 FF 1F B6 40 79 03 79 03 00
        00 99 03 99 03 01 00 9A 03 9A 03 00 00 A2 03 A2
        03 01 00 A3 03 A3 03 00 00 A6 03 A6 03 01 00 A7
        03 A7 03 00 00 BE 03 BE 03 FF FF C1 03 C1 03 02
        00 C2 03 C2 03 03 00 C3 03 C3 03 04 00 C5 03 C5
        03 01 00 C6 03 C6 03 00 00 C7 03 C7 03 01 00 C8
        03 C8 03 02 00 C9 03 C9 03 01 00 CA 03 CA 03 00
        00 CB 03 CB 03 FF FF D3 03 D3 03 FF FF D4 03 D4
        03 01 00 D5 03 D5 03 00 00 D6 03 D6 03 01 00 D7
        03 D7 03 00 00 F6 03 F6 03 01 00 F7 03 F7 03 00
        00 01 04 01 04 01 00 02 04 02 04 00 00 03 04 03
        04 01 00 04 04 04 04 00 00 1E 04 1E 04 01 00 1F
        04 1F 04 00 00 20 04 20 04 FF FF 2B 04 2B 04 FF
        FF 31 04 31 04 FF FF 32 04 32 04 01 00 33 04 33
        04 00 00 3A 04 3A 04 01 00 3B 04 3B 04 00 00 40
        04 40 04 01 00 FF FF FF FF 00 00

Handle 0xDA06, DMI type 218, 89 bytes
OEM-specific Type
    Header and Data:
        DA 59 06 DA B2 00 04 FF 1F B6 40 41 04 41 04 00
        00 42 04 42 04 01 00 43 04 43 04 00 00 44 04 44
        04 01 00 45 04 45 04 00 00 61 04 61 04 01 00 62
        04 62 04 00 00 0C 80 0C 80 00 00 0D 80 0D 80 00
        00 0E 80 0E 80 01 00 0F 80 0F 80 00 02 04 A0 04
        A0 01 00 FF FF FF FF 00 00

Handle 0xDA07, DMI type 218, 77 bytes
OEM-specific Type
    Header and Data:
        DA 4D 07 DA B2 00 04 FF 1F B6 40 00 F1 00 F1 01
        00 02 F1 02 F1 01 00 10 F1 10 F1 01 00 12 F1 12
        F1 01 00 20 F1 20 F1 01 00 22 F1 22 F1 01 00 30
        F1 30 F1 01 00 32 F1 32 F1 01 00 00 F6 00 F6 01
        00 01 F6 01 F6 01 00 FF FF FF FF 00 00

Handle 0xDA08, DMI type 218, 29 bytes
OEM-specific Type
    Header and Data:
        DA 1D 08 DA B2 00 04 FF 1F B6 40 D7 03 3A 05 00
        00 D6 03 3A 05 01 00 FF FF FF FF 00 00

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: Dell Inc.
    Version: 1.4.4
    Release Date: 06/14/2016
    Address: 0xF0000
    Runtime Size: 64 kB
    ROM Size: 16384 kB
    Characteristics:
        PCI is supported
        PNP is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        Boot from CD is supported
        Selectable boot is supported
        EDD is supported
        5.25"/1.2 MB floppy services are supported (int 13h)
        3.5"/720 kB floppy services are supported (int 13h)
        3.5"/2.88 MB floppy services are supported (int 13h)
        Print screen service is supported (int 5h)
        8042 keyboard services are supported (int 9h)
        Serial services are supported (int 14h)
        Printer services are supported (int 17h)
        ACPI is supported
        USB legacy is supported
        Smart battery is supported
        BIOS boot specification is supported
        Function key-initiated network boot is supported
        Targeted content distribution is supported
        UEFI is supported
    BIOS Revision: 1.4

Handle 0x0001, DMI type 1, 27 bytes
System Information
    Manufacturer: Dell Inc.
    Product Name: XPS 13 9350
    Version: Not Specified
    Serial Number: HL6N662
    UUID: 4C4C4544-004C-3610-804E-C8C04F363632
    Wake-up Type: Power Switch
    SKU Number: 0704
    Family: Not Specified

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
    Manufacturer: Dell Inc.
    Product Name: 0VM5NC
    Version: A01
    Serial Number: /HL6N662/CN129635BD00C2/
    Asset Tag: Not Specified
    Features:
        Board is a hosting board
        Board is replaceable
    Location In Chassis: Not Specified
    Chassis Handle: 0x0003
    Type: Motherboard
    Contained Object Handles: 0

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
    Manufacturer: Dell Inc.
    Type: Laptop
    Lock: Not Present
    Version: Not Specified
    Serial Number: HL6N662
    Asset Tag: Not Specified
    Boot-up State: Safe
    Power Supply State: Safe
    Thermal State: Safe
    Security Status: None
    OEM Information: 0x00000000
    Height: Unspecified
    Number Of Power Cords: 1
    Contained Elements: 0
    SKU Number: Laptop

Handle 0x0038, DMI type 4, 48 bytes
Processor Information
    Socket Designation: U3E1
    Type: Central Processor
    Family: Core i7
    Manufacturer: Intel(R) Corporation
    ID: E3 06 04 00 FF FB EB BF
    Signature: Type 0, Family 6, Model 78, Stepping 3
    Flags:
        FPU (Floating-point unit on-chip)
        VME (Virtual mode extension)
        DE (Debugging extension)
        PSE (Page size extension)
        TSC (Time stamp counter)
        MSR (Model specific registers)
        PAE (Physical address extension)
        MCE (Machine check exception)
        CX8 (CMPXCHG8 instruction supported)
        APIC (On-chip APIC hardware supported)
        SEP (Fast system call)
        MTRR (Memory type range registers)
        PGE (Page global enable)
        MCA (Machine check architecture)
        CMOV (Conditional move instruction supported)
        PAT (Page attribute table)
        PSE-36 (36-bit page size extension)
        CLFSH (CLFLUSH instruction supported)
        DS (Debug store)
        ACPI (ACPI supported)
        MMX (MMX technology supported)
        FXSR (FXSAVE and FXSTOR instructions supported)
        SSE (Streaming SIMD extensions)
        SSE2 (Streaming SIMD extensions 2)
        SS (Self-snoop)
        HTT (Multi-threading)
        TM (Thermal monitor supported)
        PBE (Pending break enabled)
    Version: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz
    Voltage: 0.9 V
    External Clock: 100 MHz
    Max Speed: 2500 MHz
    Current Speed: 2500 MHz
    Status: Populated, Enabled
    Upgrade: Other
    L1 Cache Handle: 0x0035
    L2 Cache Handle: 0x0036
    L3 Cache Handle: 0x0037
    Serial Number: To Be Filled By O.E.M.
    Asset Tag: To Be Filled By O.E.M.
    Part Number: To Be Filled By O.E.M.
    Core Count: 2
    Thread Count: 4
    Characteristics:
        64-bit capable
        Multi-Core
        Hardware Thread
        Execute Protection
        Enhanced Virtualization
        Power/Performance Control

Handle 0x0034, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L1 Cache
    Configuration: Enabled, Not Socketed, Level 1
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 64 kB
    Maximum Size: 64 kB
    Supported SRAM Types:
        Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Parity
    System Type: Data
    Associativity: 8-way Set-associative

Handle 0x0035, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L1 Cache
    Configuration: Enabled, Not Socketed, Level 1
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 64 kB
    Maximum Size: 64 kB
    Supported SRAM Types:
        Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Parity
    System Type: Instruction
    Associativity: 8-way Set-associative

Handle 0x0036, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L2 Cache
    Configuration: Enabled, Not Socketed, Level 2
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 512 kB
    Maximum Size: 512 kB
    Supported SRAM Types:
        Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Single-bit ECC
    System Type: Unified
    Associativity: 4-way Set-associative

Handle 0x0037, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L3 Cache
    Configuration: Enabled, Not Socketed, Level 3
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 4096 kB
    Maximum Size: 4096 kB
    Supported SRAM Types:
        Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Multi-bit ECC
    System Type: Unified
    Associativity: 16-way Set-associative

Handle 0x0004, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JUSB1
    Internal Connector Type: None
    External Reference Designator: USB1
    External Connector Type: Access Bus (USB)
    Port Type: USB

Handle 0x0005, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JUSB2
    Internal Connector Type: None
    External Reference Designator: USB2
    External Connector Type: Access Bus (USB)
    Port Type: USB

Handle 0x0006, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JSD1
    Internal Connector Type: None
    External Reference Designator: Cardreader
    External Connector Type: Other
    Port Type: None

Handle 0x0007, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JHP1
    Internal Connector Type: None
    External Reference Designator: Audio Jack
    External Connector Type: Mini Jack (headphones)
    Port Type: Audio Port

Handle 0x0008, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JTypeC
    Internal Connector Type: None
    External Reference Designator: USB3
    External Connector Type: Access Bus (USB)
    Port Type: USB

Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JeDP1 - eDP
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JNGFF1 - WLAN/BT/Wigig CONN
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JNGFF2 - HDD
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JKBTP1 - Keyboard
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Keyboard Port

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JFAN1 - CPU FAN
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JSPK1 - Speaker
    Internal Connector Type: Mini Jack (headphones)
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Audio Port

Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JXDP1 - CPU XDP Port
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JAPS1 - Automatic Power
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JLPDE1 - 80 PORT
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JDEG1 - Debug PORT
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: JRTC1 - RTC
    Internal Connector Type: None
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: Other

Handle 0x0014, DMI type 9, 17 bytes
System Slot Information
    Designation: J6B2
    Type: x16 PCI Express
    Current Usage: In Use
    Length: Long
    ID: 0
    Characteristics:
        3.3 V is provided
        Opening is shared
        PME signal is supported
    Bus Address: 0000:00:01.0

Handle 0x0015, DMI type 9, 17 bytes
System Slot Information
    Designation: J6B1
    Type: x1 PCI Express
    Current Usage: In Use
    Length: Short
    ID: 1
    Characteristics:
        3.3 V is provided
        Opening is shared
        PME signal is supported
    Bus Address: 0000:00:1c.3

Handle 0x0016, DMI type 9, 17 bytes
System Slot Information
    Designation: J6D1
    Type: x1 PCI Express
    Current Usage: In Use
    Length: Short
    ID: 2
    Characteristics:
        3.3 V is provided
        Opening is shared
        PME signal is supported
    Bus Address: 0000:00:1c.4

Handle 0x0017, DMI type 9, 17 bytes
System Slot Information
    Designation: J7B1
    Type: x1 PCI Express
    Current Usage: In Use
    Length: Short
    ID: 3
    Characteristics:
        3.3 V is provided
        Opening is shared
        PME signal is supported
    Bus Address: 0000:00:1c.5

Handle 0x0018, DMI type 9, 17 bytes
System Slot Information
    Designation: J8B4
    Type: x1 PCI Express
    Current Usage: In Use
    Length: Short
    ID: 4
    Characteristics:
        3.3 V is provided
        Opening is shared
        PME signal is supported
    Bus Address: 0000:00:1c.6

Handle 0x0019, DMI type 10, 6 bytes
On Board Device Information
    Type: Video
    Status: Enabled
    Description: "Intel HD Graphics"

Handle 0x001A, DMI type 11, 5 bytes
OEM Strings
    String 1: Dell System
    String 2: 1[0704]
    String 3: 3[1.0]
    String 4: 12[www.dell.com]
    String 5: 14[1]
    String 6: 15[0]

Handle 0x001B, DMI type 12, 5 bytes
System Configuration Options
    Option 1: To Be Filled By O.E.M.

Handle 0xF03D, DMI type 13, 22 bytes
BIOS Language Information
    Language Description Format: Long
    Installable Languages: 2
        en|US|iso8859-1
        <BAD INDEX>
    Currently Installed Language: en|US|iso8859-1

Handle 0xF03A, DMI type 14, 26 bytes
Group Associations
    Name: Firmware Version Info
    Items: 7
        0x003D (OEM-specific)
        0xDD00 (OEM-specific)
        0xF02B (OEM-specific)
        0xF02C (OEM-specific)
        0xF02D (OEM-specific)
        0xF02E (OEM-specific)
        0xF02F (OEM-specific)

Handle 0xF03B, DMI type 14, 8 bytes
Group Associations
    Name: $MEI
    Items: 1
        0x0000 (OEM-specific)

Handle 0x001C, DMI type 15, 35 bytes
System Event Log
    Area Length: 4 bytes
    Header Start Offset: 0x0000
    Header Length: 2 bytes
    Data Start Offset: 0x0002
    Access Method: Indexed I/O, one 16-bit index port, one 8-bit data port
    Access Address: Index 0x046A, Data 0x046C
    Status: Invalid, Not Full
    Change Token: 0x00000000
    Header Format: No Header
    Supported Log Type Descriptors: 6
    Descriptor 1: End of log
    Data Format 1: OEM-specific
    Descriptor 2: End of log
    Data Format 2: OEM-specific
    Descriptor 3: End of log
    Data Format 3: OEM-specific
    Descriptor 4: End of log
    Data Format 4: OEM-specific
    Descriptor 5: End of log
    Data Format 5: OEM-specific
    Descriptor 6: End of log
    Data Format 6: OEM-specific

Handle 0x0039, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 16 GB
    Error Information Handle: Not Provided
    Number Of Devices: 2

Handle 0x003A, DMI type 17, 40 bytes
Memory Device
    Array Handle: 0x0039
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 8192 MB
    Form Factor: Chip
    Set: None
    Locator: System Board Memory
    Bank Locator: BANK 0
    Type: LPDDR3
    Type Detail: Synchronous
    Speed: 1867 MHz
    Manufacturer: SK Hynix
    Serial Number: 12161217
    Asset Tag: 9876543210
    Part Number: H9CCNNNCLTMLAR-NUD
    Rank: 2
    Configured Clock Speed: 1867 MHz
    Minimum Voltage: Unknown
    Maximum Voltage: Unknown
    Configured Voltage: 1.2 V

Handle 0x003B, DMI type 17, 40 bytes
Memory Device
    Array Handle: 0x0039
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 8192 MB
    Form Factor: Chip
    Set: None
    Locator: System Board Memory
    Bank Locator: BANK 1
    Type: LPDDR3
    Type Detail: Synchronous
    Speed: 1867 MHz
    Manufacturer: SK Hynix
    Serial Number: 12121212
    Asset Tag: 9876543210
    Part Number: H9CCNNNCLTMLAR-NUD
    Rank: 2
    Configured Clock Speed: 1867 MHz
    Minimum Voltage: Unknown
    Maximum Voltage: Unknown
    Configured Voltage: 1.2 V

Handle 0x003C, DMI type 19, 31 bytes
Memory Array Mapped Address
    Starting Address: 0x00000000000
    Ending Address: 0x003FFFFFFFF
    Range Size: 16 GB
    Physical Array Handle: 0x0039
    Partition Width: 2

Handle 0x003E, DMI type 20, 35 bytes
Memory Device Mapped Address
    Starting Address: 0x00000000000
    Ending Address: 0x001FFFFFFFF
    Range Size: 8 GB
    Physical Device Handle: 0x003A
    Memory Array Mapped Address Handle: 0x003C
    Partition Row Position: 1
    Interleave Position: 1
    Interleaved Data Depth: 1

Handle 0x003F, DMI type 20, 35 bytes
Memory Device Mapped Address
    Starting Address: 0x00200000000
    Ending Address: 0x003FFFFFFFF
    Range Size: 8 GB
    Physical Device Handle: 0x003B
    Memory Array Mapped Address Handle: 0x003C
    Partition Row Position: 1
    Interleave Position: 2
    Interleaved Data Depth: 1

Handle 0x001D, DMI type 21, 7 bytes
Built-in Pointing Device
    Type: Touch Pad
    Interface: Bus Mouse
    Buttons: 2

Handle 0x1600, DMI type 22, 26 bytes
Portable Battery
    Location: Sys. Battery Bay
    Manufacturer: SMP
    Manufacture Date: 10/06/2015
    Serial Number: 0591
    Name: DELL JHXPY53
    Design Capacity: 57530 mWh
    Design Voltage: 7600 mV
    SBDS Version: 1.0
    Maximum Error: 4%
    SBDS Chemistry: LiP
    OEM-specific Information: 0x00000801

Handle 0x0022, DMI type 25, 9 bytes
    System Power Controls
    Next Scheduled Power-on: *-* 00:00:00

Handle 0x1B00, DMI type 27, 15 bytes
Cooling Device
    Temperature Probe Handle: 0x1C00
    Type: Chip Fan
    Status: OK
    OEM-specific Information: 0x0000DD00
    Nominal Speed: 6000 rpm
    Description: CPU Fan

Handle 0x1C00, DMI type 28, 22 bytes
Temperature Probe
    Description: CPU Probe
    Location: Motherboard
    Status: OK
    Maximum Value: 127.0 deg C
    Minimum Value: -127.0 deg C
    Resolution: 1.000 deg C
    Tolerance: Unknown
    Accuracy: Unknown
    OEM-specific Information: 0x0000DC00
    Nominal Value: 10.0 deg C

Handle 0x1C01, DMI type 28, 22 bytes
Temperature Probe
    Description: True Ambient
    Location: Motherboard
    Status: OK
    Maximum Value: 127.0 deg C
    Minimum Value: -127.0 deg C
    Resolution: 1.000 deg C
    Tolerance: Unknown
    Accuracy: Unknown
    OEM-specific Information: 0x0000DC01
    Nominal Value: 10.0 deg C

Handle 0x1C02, DMI type 28, 22 bytes
Temperature Probe
    Description: Memory Module
    Location: Motherboard
    Status: OK
    Maximum Value: 127.0 deg C
    Minimum Value: -127.0 deg C
    Resolution: 1.000 deg C
    Tolerance: Unknown
    Accuracy: Unknown
    OEM-specific Information: 0x0000DC02
    Nominal Value: 10.0 deg C

Handle 0x1C03, DMI type 28, 22 bytes
Temperature Probe
    Description: Other Probe
    Location: Processor
    Status: OK
    Maximum Value: 127.0 deg C
    Minimum Value: -127.0 deg C
    Resolution: 1.000 deg C
    Tolerance: Unknown
    Accuracy: Unknown
    OEM-specific Information: 0x0000DC03
    Nominal Value: 10.0 deg C

Handle 0x0023, DMI type 32, 20 bytes
System Boot Information
    Status: No errors detected

Handle 0x0024, DMI type 34, 11 bytes
Management Device
    Description: LM78-1
    Type: LM78
    Address: 0x00000000
    Address Type: I/O Port

Handle 0x0026, DMI type 36, 16 bytes
Management Device Threshold Data
    Lower Non-critical Threshold: 1
    Upper Non-critical Threshold: 2
    Lower Critical Threshold: 3
    Upper Critical Threshold: 4
    Lower Non-recoverable Threshold: 5
    Upper Non-recoverable Threshold: 6

Handle 0x0028, DMI type 36, 16 bytes
Management Device Threshold Data
    Lower Non-critical Threshold: 1
    Upper Non-critical Threshold: 2
    Lower Critical Threshold: 3
    Upper Critical Threshold: 4
    Lower Non-recoverable Threshold: 5
    Upper Non-recoverable Threshold: 6

Handle 0x002A, DMI type 36, 16 bytes
Management Device Threshold Data

Handle 0x0030, DMI type 41, 11 bytes
Onboard Device
    Reference Designation:  Onboard IGD
    Type: Video
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:02.0

Handle 0x0031, DMI type 41, 11 bytes
Onboard Device
    Reference Designation:  Onboard LAN
    Type: Ethernet
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:19.0

Handle 0x0032, DMI type 41, 11 bytes
Onboard Device
    Reference Designation:  Onboard 1394
    Type: Other
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:03:1c.2

Handle 0x0300, DMI type 126, 22 bytes
Inactive

Handle 0xF029, DMI type 130, 20 bytes
OEM-specific Type
    Header and Data:
        82 14 29 F0 24 41 4D 54 00 00 00 00 00 A5 AF 02
        C0 00 00 00

Handle 0xF02A, DMI type 131, 64 bytes
OEM-specific Type
    Header and Data:
        83 40 2A F0 31 00 00 00 0B 00 00 00 00 00 05 00
        F8 00 48 9D 00 00 00 00 01 00 00 00 00 00 0B 00
        B5 04 00 00 00 00 00 00 FE 00 FF FF 00 00 00 00
        00 00 00 00 22 00 00 00 76 50 72 6F 00 00 00 00

Handle 0xF039, DMI type 136, 6 bytes
OEM-specific Type
    Header and Data:
        88 06 39 F0 00 00

Handle 0xB100, DMI type 177, 12 bytes
OEM-specific Type
    Header and Data:
        B1 0C 00 B1 1A 00 00 00 00 00 00 00

Handle 0xB200, DMI type 178, 84 bytes
OEM-specific Type
    Header and Data:
        B2 54 00 B2 3D 00 0C 00 3C 00 0A 00 3B 00 0B 00
        0A 01 12 00 52 00 20 00 42 00 18 00 58 00 14 00
        57 00 13 00 10 00 FF 00 11 00 FF 00 12 00 FF 00
        13 00 FF 00 14 00 FF 00 1E 00 FF 00 1F 00 FF 00
        20 00 FF 00 21 00 FF 00 22 00 FF 00 50 01 26 00
        44 00 16 00
    Strings:


Handle 0xD000, DMI type 208, 16 bytes
OEM-specific Type
    Header and Data:
        D0 10 00 D0 03 08 FE 00 04 07 01 02 00 00 00 00
    Strings:
        20151113
        20151125

Handle 0xD100, DMI type 209, 12 bytes
OEM-specific Type
    Header and Data:
        D1 0C 00 D1 78 03 07 03 04 0F 80 03

Handle 0xD200, DMI type 210, 12 bytes
OEM-specific Type
    Header and Data:
        D2 0C 00 D2 00 00 00 03 06 80 04 03

Handle 0xD800, DMI type 216, 9 bytes
OEM-specific Type
    Header and Data:
        D8 09 00 D8 01 02 01 88 00
    Strings:
        "Intel Corp."
        "2089"

Handle 0xD900, DMI type 217, 8 bytes
OEM-specific Type
    Header and Data:
        D9 08 00 D9 01 02 01 03
    Strings:
        US-101
        Proprietary

Handle 0xF03C, DMI type 219, 81 bytes
OEM-specific Type
    Header and Data:
        DB 51 3C F0 01 03 01 45 02 00 A0 06 03 00 61 00
        02 00 00 00 40 08 00 01 1F 00 00 C9 0B C0 47 02
        FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
        FF FF FF FF FF FF FF FF 03 00 00 00 80 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00
    Strings:
        MEI1
        MEI2
        MEI3

Handle 0xDC00, DMI type 220, 22 bytes
OEM-specific Type
    Header and Data:
        DC 16 00 DC 00 F1 00 00 02 F1 00 00 00 00 00 00
        00 00 00 00 00 00

Handle 0xDC01, DMI type 220, 22 bytes
OEM-specific Type
    Header and Data:
        DC 16 01 DC 10 F1 00 00 12 F1 00 00 00 00 00 00
        00 00 00 00 00 00

Handle 0xDC02, DMI type 220, 22 bytes
OEM-specific Type
    Header and Data:
        DC 16 02 DC 20 F1 00 00 22 F1 00 00 00 00 00 00
        00 00 00 00 00 00

Handle 0xDC03, DMI type 220, 22 bytes
OEM-specific Type
    Header and Data:
        DC 16 03 DC 30 F1 00 00 32 F1 00 00 00 00 00 00
        00 00 00 00 00 00

Handle 0x003D, DMI type 221, 12 bytes
OEM-specific Type
    Header and Data:
        DD 0C 3D 00 01 01 00 01 08 00 00 00
    Strings:
        Reference Code - ACPI

Handle 0xDD00, DMI type 221, 19 bytes
OEM-specific Type
    Header and Data:
        DD 13 00 DD 02 01 00 00 F6 01 F6 00 00 00 00 00
        00 00 00

Handle 0xF02B, DMI type 221, 26 bytes
OEM-specific Type
    Header and Data:
        DD 1A 2B F0 03 01 00 01 08 00 00 00 02 00 00 00
        00 8A 00 03 00 00 05 00 00 00
    Strings:
        Reference Code - CPU
        uCode Version
        TXT ACM version

Handle 0xF02C, DMI type 221, 26 bytes
OEM-specific Type
    Header and Data:
        DD 1A 2C F0 03 01 00 01 08 00 00 00 02 00 0B 00
        00 05 00 03 04 0B 00 00 B5 04
    Strings:
        Reference Code - ME 11.0
        MEBx version
        ME Firmware Version
        Consumer SKU

Handle 0xF02D, DMI type 221, 68 bytes
OEM-specific Type
    Header and Data:
        DD 44 2D F0 09 01 00 01 08 00 00 00 02 03 FF FF
        FF FF FF 04 00 FF FF FF 21 00 05 00 FF FF FF 21
        00 06 00 FF FF FF FF FF 07 00 3E 00 00 00 00 08
        00 34 00 00 00 00 09 00 3E 00 00 00 00 0A 00 34
        00 00 00 00
    Strings:
        Reference Code - SKL PCH
        PCH-CRID Status
        Disabled
        PCH-CRID Original Value
        PCH-CRID New Value
        OPROM - RST - RAID
        SKL PCH H Bx Hsio Version
        SKL PCH H Dx Hsio Version
        SKL PCH LP Bx Hsio Version
        SKL PCH LP Cx Hsio Version

Handle 0xF02E, DMI type 221, 54 bytes
OEM-specific Type
    Header and Data:
        DD 36 2E F0 07 01 00 01 08 00 00 00 02 00 01 08
        00 01 00 03 00 01 08 00 00 00 04 05 FF FF FF FF
        FF 06 00 FF FF FF 08 00 07 00 FF FF FF 08 00 08
        00 FF FF FF FF FF
    Strings:
        Reference Code - SA - System Agent
        Reference Code - MRC
        SA - PCIe Version
        SA-CRID Status
        Disabled
        SA-CRID Original Value
        SA-CRID New Value
        OPROM - VBIOS

Handle 0xF02F, DMI type 221, 96 bytes
OEM-specific Type
    Header and Data:
        DD 60 2F F0 0D 01 00 00 00 00 00 00 02 00 FF FF
        FF FF FF 03 04 FF FF FF FF FF 05 06 FF FF FF FF
        FF 07 08 FF FF FF FF FF 09 00 00 00 00 00 00 0A
        00 FF FF FF FF FF 0B 00 FF FF 00 00 00 0C 00 00
        09 00 42 10 0D 00 02 00 00 00 00 0E 00 FF FF FF
        FF FF 0F 00 FF FF FF FF FF 10 11 01 02 02 03 00
    Strings:
        Lan Phy Version
        Sensor Firmware Version
        Debug Mode Status
        Enabled 
        Performance Mode Status
        Disabled
        Debug Use USB(Disabled:Serial)
        Disabled
        ICC Overclocking Version
        UNDI Version
        EC FW Version
        GOP Version
        BIOS Guard Version
        Base EC FW Version
        EC-EC Protocol Version
        Royal Park Version
        BP1.2.2.0_RP03

Handle 0xDE00, DMI type 222, 16 bytes
OEM-specific Type
    Header and Data:
        DE 10 00 DE 01 04 00 00 16 07 12 16 40 01 00 00

Handle 0x0033, DMI type 255, 8 bytes
OEM-specific Type
    Header and Data:
        FF 08 33 00 01 02 00 00
    Strings:
        _SIDLLEwPLyhIgmg
        0704
        _SIDAvf90w7wKZiZ
        DELL

Handle 0xF03E, DMI type 127, 4 bytes
End Of Table

Please tell me if you need something else !

Test Suite fails on big endian architectures

Since turning on the test suite in Launchpad builds, it was apparent that there are some assumptions made in the code about endian-ness (signed vs unsigned comparisons and such). A few warnings in those architectures builds stand out:

gcc -DHAVE_CONFIG_H -I. -I..  -pthread -I/usr/include/libappstream-glib -I/usr/include/libgcab-1.0 -I/usr/include/uuid -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include -pthread -I/usr/include/colord-1/colorhug -I/usr/include/gusb-1 -I/usr/include/libusb-1.0 -I/usr/include/colord-1 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include -pthread -I/usr/include/gusb-1 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include -I/usr/include/libusb-1.0 -pthread -I/usr/include/libgcab-1.0 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include -pthread -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include -I/usr/include/gudev-1.0 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include -fPIE -pthread -I/usr/include/polkit-1 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include   -pthread -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/powerpc-linux-gnu/glib-2.0/include  -I.. -I.. -I../libfwupd -DG_LOG_DOMAIN=\"Fu\" -DLIBEXECDIR=\"/usr/lib/powerpc-linux-gnu\" -DLIBDIR=\"/usr/lib/powerpc-linux-gnu\" -DDATADIR=\"/usr/share\" -DSYSCONFDIR=\""/etc"\" -DVERSION="\"0.7.0\"" -DDAEMON_USER="\"\"" -DTESTDATADIR=\""../data/tests"\" -DG_UDEV_API_IS_SUBJECT_TO_CHANGE -DLOCALEDIR=\""/usr/share/locale"\" -Wdate-time -D_FORTIFY_SOURCE=2 -DFU_OFFLINE_DESTDIR=\"\" -DLOCALSTATEDIR=\""/var"\" -Wall -Wcast-align -Wno-uninitialized -Wmissing-declarations -Wpointer-arith -Wcast-align -Wwrite-strings -Winit-self -Wreturn-type -Wformat-nonliteral -Wformat-security -Wmissing-include-dirs -Wmissing-format-attribute -Wclobbered -Wempty-body -Wignored-qualifiers -Wsign-compare -Wtype-limits -Wuninitialized -Waggregate-return -Wdeclaration-after-statement -Wshadow -Wno-strict-aliasing -Winline -Wmissing-parameter-type -Woverride-init -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c -o fwupdmgr-fu-rom.o `test -f 'fu-rom.c' || echo './'`fu-rom.c
In file included from /usr/include/glib-2.0/glib.h:62:0,
                 from /usr/include/glib-2.0/gobject/gbinding.h:28,
                 from /usr/include/glib-2.0/glib-object.h:23,
                 from ../libfwupd/fwupd-client.h:25,
                 from ../libfwupd/fwupd.h:32,
                 from fu-rom.c:24:
fu-rom.c: In function ‘fu_rom_find_and_blank_serial_numbers’:
fu-rom.c:386:13: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘int’ [-Wformat=]
    g_debug ("cleared %i chars @ 0x%04lx", len, tmp - &hdr->rom_data[hdr->data_len]);
             ^
/usr/include/glib-2.0/glib/gmessages.h:170:32: note: in definition of macro ‘g_debug’
                                __VA_ARGS__)
                                ^
fu-rom.c: In function ‘fu_rom_load_file’:
fu-rom.c:712:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while (sz > hdr_sz + jump) {
            ^
fu-rom.c:785:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if (hdr_sz > sz) {

POT file

Can be created POT file, to help translators keep translations up to date? or just give us (non-programmers) how to generate POT file manually. thx.

test suite seems to fail

With no changes to code, I'm finding the test suite is failing on Ubuntu 14.04.

=====================================
   fwupd 0.1.3: src/test-suite.log
=====================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: fu-self-test
==================

/fwupd/cab: OK
/fwupd/pending: OK
/fwupd/provider: OK
/fwupd/keyring: **
Fu:ERROR:fu-self-test.c:326:fu_keyring_func: assertion failed (error == NULL): Could not check signature '17ACBA8DFA970E17' as no public key (FwupdError, 11)

fwupd 0.7.3 test failure on s390x

the test-suite run in Fedora Rawhide on s390x fails with

...
/libdfu/firmware{elf}: **
libdfu:ERROR:dfu-self-test.c:357:dfu_firmware_elf_func: assertion failed (_g_bytes_compare_verbose (roundtrip, roundtrip_orig) == NULL): ("got 0x6c, expected 0x68 @ 0x0034" == NULL)
(/builddir/build/BUILD/fwupd-0.7.3/libdfu/.libs/lt-dfu-self-test:59144): libdfu-DEBUG: loading 32b ELF object
FAIL /builddir/build/BUILD/fwupd-0.7.3/libdfu/.libs/lt-dfu-self-test (exit status: 134)
...

please see http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2331142 for more details

GUID parsed from cab is incorrect

I've been slowly bringing up a new system to test with UEFI capsule. I've gotten everything working properly with fwupdate now, but fwupdmgr isn't working with it properly. It doesn't think that the GUID in the cab is appropriate to flash on the system.

It seems that fwupd is parsing the wrong guid the same way that appstream-glib (hughsie/appstream-glib@680d47f). Here's some (cleaned for private info) debug info:

 $ fwupdmgr get-devices 
Device: UEFI-6180aaaa-5529-4bbf-b4fd-65b4f788de5b-dev0
  Provider:        UEFI
  Guid:            6180aaaa-5529-4bbf-b4fd-65b4f788de5b
  Version:         2
  Internal:        True
  AllowOnline:     False
  AllowOffline:    True
$ fwupdmgr get-details platform.cab 
Version        99.00.20
Guid           f2e7dd72-6468-4e36-b6f1-6488f42c1b52
Size           10523869
Vendor         Dell, Inc.
Name           System Firmware 99.00.20
Summary        Firmware Update
Description    
Trusted        0
$ fwupdmgr install platform.cab 
 * Loading firmware
no hardware matched f2e7dd72-6468-4e36-b6f1-6488f42c1b52

In platform.cab/firmware.inf:

...
ClassGuid   = {f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
...
HKR,,FirmwareFilename,,{6180AAAA-5529-4bbf-B4FD-65B4F788DE5B}
...

failed to update metadata

This issue doesn't always happen on DELL SLA board.

# fwupdmgr refresh
failed to update metadata: Failed to parse XML: Error on line 51 char 2: Document must begin with an element (e.g. <book>) 

The workaround is to kill fwupd: pkill -9 fwupd

0.7.3 fails to compile with appstream-glib 0.5.13

configure.ac currently lists the dependency upon appstream-glib as:

PKG_CHECK_MODULES(APPSTREAM_GLIB, appstream-glib >= 0.5.10)

On my system I have 0.5.13 installed. Unfortunately this fails to compile:

fu-main.c: In function ‘fu_main_daemon_method_call’:
fu-main.c:1711:10: warning: implicit declaration of function ‘as_utils_unique_id_build’ [-Wimplicit-function-declaration]
id2 = as_utils_unique_id_build (AS_APP_SCOPE_SYSTEM,
^
fu-main.c:1711:4: warning: nested extern declaration of ‘as_utils_unique_id_build’ [-Wnested-externs]
id2 = as_utils_unique_id_build (AS_APP_SCOPE_SYSTEM,
^
fu-main.c:1711:36: error: ‘AS_APP_SCOPE_SYSTEM’ undeclared (first use in this function)
id2 = as_utils_unique_id_build (AS_APP_SCOPE_SYSTEM,
^
fu-main.c:1711:36: note: each undeclared identifier is reported only once for each function it appears in

The missing method was added in appstream-glib from 0.6.1 version.

fwupd is started under dbus.service, so fwupd.service has no effect

fwupd-0.7.5-1.fc25.x86_64

Stopping, masking, or amending fwupd.service (e.g. as a temporary workaround for #77) has no effect, because

$ systemctl status fwupd.service
● fwupd.service - Firmware update daemon
Loaded: loaded (/usr/lib/systemd/system/fwupd.service; static; vendor preset:
Active: inactive (dead)
Docs: http://www.fwupd.org/
$ systemctl status dbus.service
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/usr/lib/systemd/system/dbus.service; static; vendor preset:
Active: active (running) since Sat 2017-01-07 10:59:56 GMT; 1 day 9h ago
Docs: man:dbus-daemon(1)
Main PID: 868 (dbus-daemon)
Tasks: 14 (limit: 4915)
CGroup: /system.slice/dbus.service
├─ 868 /usr/bin/dbus-daemon --system --address=systemd: --nofork --n
├─ 2208 /usr/sbin/abrt-dbus -t133
└─32326 /usr/libexec/fwupd/fwupd

"Software" hangs trying to update 8bitdo firmware

Backtrace:

Thread 6 (Thread 0x7f217fdf9700 (LWP 2040)):
#0  0x00007f21ba6568d1 in __pthread_rwlock_rdlock_slow () at /lib64/libpthread.so.0
#1  0x000055cd48b2f358 in gs_plugin_action_start (plugin=plugin@entry=0x55cd49bef290, exclusive=exclusive@entry=0) at gs-plugin.c:264
#2  0x000055cd48b4bcac in gs_plugin_loader_action_start (plugin_loader=plugin_loader@entry=0x55cd49b9b410, plugin=plugin@entry=0x55cd49bef290, exclusive=exclusive@entry=0) at gs-plugin-loader.c:212
#3  0x000055cd48b4c1a9 in gs_plugin_loader_run_refine_internal (list=0x55cd4baf7390, plugin_loader=0x55cd49b9b410) at gs-plugin-loader.c:263
#4  0x000055cd48b4c1a9 in gs_plugin_loader_run_refine_internal (plugin_loader=plugin_loader@entry=0x55cd49b9b410, function_name_parent=function_name_parent@entry=0x0, list=list@entry=0x55cd4baf7390, flags=flags@entry=2097160, cancellable=cancellable@entry=0x0, error=error@entry=0x7f217fdf8b40)
    at gs-plugin-loader.c:321
#5  0x000055cd48b4ca7d in gs_plugin_loader_run_refine (plugin_loader=plugin_loader@entry=0x55cd49b9b410, function_name_parent=function_name_parent@entry=0x0, list=list@entry=0x55cd4baf7390, flags=2097160, cancellable=cancellable@entry=0x0, error=error@entry=0x7f217fdf8b40) at gs-plugin-loader.c:533
#6  0x000055cd48b4f2be in gs_plugin_loader_app_refine_thread_cb (task=0x55cd4d1bf020, object=<optimized out>, task_data=0x55cd4d2c0520, cancellable=0x0) at gs-plugin-loader.c:2605
#7  0x00007f21bb36d9bd in g_task_thread_pool_thread () at /lib64/libgio-2.0.so.0
#8  0x00007f21badf76ee in g_thread_pool_thread_proxy () at /lib64/libglib-2.0.so.0
#9  0x00007f21badf6cf5 in g_thread_proxy () at /lib64/libglib-2.0.so.0
#10 0x00007f21ba6525ca in start_thread () at /lib64/libpthread.so.0
#11 0x00007f21ba38bf6d in clone () at /lib64/libc.so.6

Thread 5 (Thread 0x7f2190f4d700 (LWP 1990)):
#0  0x00007f21ba3860b9 in syscall () at /lib64/libc.so.6
#1  0x00007f21bae14b6f in g_cond_wait () at /lib64/libglib-2.0.so.0
#2  0x00007f21badcfd30 in g_main_context_wait () at /lib64/libglib-2.0.so.0
#3  0x00007f21badd0d33 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#4  0x00007f21941eeb63 in fwupd_client_update_metadata (client=0x55cd49c011e0, metadata_fn=metadata_fn@en---Type <return> to continue, or q <return> to quit---
try=0x7f2184844230 "/home/hadess/.cache/gnome-software/3.21/firmware/firmware.xml.gz", signature_fn=<optimized out>, cancellable=cancellable@entry=0x55cd4bb33420, error=error@entry=0x7f2190f4cb30)
    at fwupd-client.c:968
#5  0x00007f21943fcb67 in gs_plugin_refresh (error=0x7f2190f4cb30, cancellable=0x55cd4bb33420, cache_age=<optimized out>, plugin=0x55cd49bef290) at gs-plugin-fwupd.c:660
#6  0x00007f21943fcb67 in gs_plugin_refresh (plugin=0x55cd49bef290, cache_age=<optimized out>, flags=GS_PLUGIN_REFRESH_FLAGS_METADATA, cancellable=0x55cd4bb33420, error=0x7f2190f4cb30) at gs-plugin-fwupd.c:683
#7  0x000055cd48b501ba in gs_plugin_loader_refresh_thread_cb (error=0x7f2190f4cb20, cancellable=0x55cd4bb33420, flags=<optimized out>, cache_age=4294967295, plugin_loader=0x55cd49b9b410)
    at gs-plugin-loader.c:4072
#8  0x000055cd48b501ba in gs_plugin_loader_refresh_thread_cb (task=0x55cd4d28ad00, object=<optimized out>, task_data=<optimized out>, cancellable=0x55cd4bb33420) at gs-plugin-loader.c:4119
#9  0x00007f21bb36d9bd in g_task_thread_pool_thread () at /lib64/libgio-2.0.so.0
#10 0x00007f21badf76ee in g_thread_pool_thread_proxy () at /lib64/libglib-2.0.so.0
#11 0x00007f21badf6cf5 in g_thread_proxy () at /lib64/libglib-2.0.so.0
#12 0x00007f21ba6525ca in start_thread () at /lib64/libpthread.so.0
#13 0x00007f21ba38bf6d in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7f21a791d700 (LWP 1676)):
#0  0x00007f21ba3803ed in poll () at /lib64/libc.so.6
#1  0x00007f21badd0a06 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#2  0x00007f21badd0b1c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#3  0x00007f21a7924fad in dconf_gdbus_worker_thread () at /usr/lib64/gio/modules/libdconfsettings.so
#4  0x00007f21badf6cf5 in g_thread_proxy () at /lib64/libglib-2.0.so.0
#5  0x00007f21ba6525ca in start_thread () at /lib64/libpthread.so.0
#6  0x00007f21ba38bf6d in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7f21a832b700 (LWP 1675)):
#0  0x00007f21ba3803ed in poll () at /lib64/libc.so.6
#1  0x00007f21badd0a06 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#2  0x00007f21badd0d92 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#3  0x00007f21bb3c9e46 in gdbus_shared_thread_func () at /lib64/libgio-2.0.so.0
#4  0x00007f21badf6cf5 in g_thread_proxy () at /lib64/libglib-2.0.so.0
#5  0x00007f21ba6525ca in start_thread () at /lib64/libpthread.so.0
#6  0x00007f21ba38bf6d in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f21a8b2c700 (LWP 1674)):
#0  0x00007f21ba3803ed in poll () at /lib64/libc.so.6
#1  0x00007f21badd0a06 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#2  0x00007f21badd0b1c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#3  0x00007f21badd0b61 in glib_worker_main () at /lib64/libglib-2.0.so.0
#4  0x00007f21badf6cf5 in g_thread_proxy () at /lib64/libglib-2.0.so.0
#5  0x00007f21ba6525ca in start_thread () at /lib64/libpthread.so.0
#6  0x00007f21ba38bf6d in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f21be862a80 (LWP 1648)):
#0  0x00007f21ba3803ed in poll () at /lib64/libc.so.6
#1  0x00007f21badd0a06 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#2  0x00007f21badd0d92 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#3  0x000055cd48b57047 in gs_plugin_loader_app_refine (plugin_loader=plugin_loader@entry=0x55cd49b9b410, app=app@entry=0x7f218c587970, flags=flags@entry=2097160, cancellable=cancellable@entry=0x0, error=error@entry=0x7ffe7dad9a18) at gs-plugin-loader-sync.c:471
#4  0x000055cd48b570c9 in gs_plugin_loader_get_app_by_id (plugin_loader=0x55cd49b9b410, id=<optimized out>, flags=flags@entry=2097160, cancellable=cancellable@entry=0x0, error=error@entry=0x7ffe7dad9a18)
    at gs-plugin-loader-sync.c:37
#5  0x000055cd48b577b5 in handle_get_result_metas (skeleton=<optimized out>, invocation=0x7f21a000b8f0, results=0x55cd4cf768f0, user_data=0x55cd4c3c4200) at gs-shell-search-provider.c:192
#6  0x00007f21b43d5c58 in ffi_call_unix64 () at /lib64/libffi.so.6
#7  0x00007f21b43d56ba in ffi_call () at /lib64/libffi.so.6
#8  0x00007f21bb0a4c1e in g_cclosure_marshal_generic () at /lib64/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#9  0x00007f21bb0a43e5 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#10 0x00007f21bb0b6432 in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
#11 0x00007f21bb0be241 in g_signal_emitv () at /lib64/libgobject-2.0.so.0
#12 0x000055cd48b5e6a9 in _gs_shell_search_provider2_skeleton_handle_method_call (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x7f21a0001190 "org.gnome.Shell.SearchProvider2", method_name=0x7f21a000a060 "GetResultMetas", parameters=<optimized out>, invocation=0x7f21a000b8f0, user_data=0x55cd49c6c270) at gs-shell-search-provider-generated.c:1669
#13 0x00007f21bb3d27c7 in skeleton_intercept_handle_method_call () at /lib64/libgio-2.0.so.0
#14 0x00007f21bb3ba7ec in call_in_idle_cb () at /lib64/libgio-2.0.so.0
#15 0x00007f21badd06ba in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#16 0x00007f21badd0a70 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#17 0x00007f21badd0b1c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#18 0x00007f21bb39348d in g_application_run () at /lib64/libgio-2.0.so.0
#19 0x000055cd48b18404 in main (argc=2, argv=0x7ffe7dada4a8) at gs-main.c:55
gnome-software-3.21.91-0.236.20160819git.fc24.x86_64
fwupd-0.7.3-0.194.20160823git.fc24.x86_64
libebitdo-0.7.3-0.194.20160823git.fc24.x86_64

Circular deps in spec file

Why is there:

BuildRequires: fwupdate-devel

in spec file?

fwupdate-devel is subpackage of fwupdate, so for building fwupdate you need its subpackage. This is circular dependency.

Dell XPS 13 9350 firmware upgrade fails with "Unknown error -1"

I can't upgrade the firmware in my Dell XPS 13 9350 using fwupd 0.5.4-1.fc23. I did previous upgrades successfully (even after I originally had issues in #42), but it doesn't work anymore.

$ sudo fwupdmgr update
Downloading 66307 for UEFI-33773727-8ee7-4d81-9fa0-57e8d889e1fa-dev0...
Updating 66307 on UEFI-33773727-8ee7-4d81-9fa0-57e8d889e1fa-dev0...
 * Decompressing firmware
Retrying as an offline update...
 * Idle
 * Decompressing firmware
 * Scheduling upgrade
UEFI firmware update failed: Unknown error -1

And this shows up in the system journal:

org.freedesktop.fwupd[1640]: fwupd: put_info failed.
org.freedesktop.fwupd[1640]: : Operation not permitted

I'm currently running Fedora 23 with kernel 4.6-rc4 from the rawhide-kernel-nodebug repository. I can test it with other kernels (such as newer RCs or stables) if necessary.

I tried to test with the current Git master, but F23 doesn't seem to provide appstream-glib 0.5.5 when >= 0.5.10 is needed.

autogen.sh: missing check for libelf

$ make
...
  CC       libdfu_la-dfu-common.lo
  CC       libdfu_la-dfu-cipher-devo.lo
  CC       libdfu_la-dfu-cipher-xtea.lo
  CC       libdfu_la-dfu-context.lo
  CC       libdfu_la-dfu-device.lo
  CC       libdfu_la-dfu-element.lo
  CC       libdfu_la-dfu-error.lo
  CC       libdfu_la-dfu-firmware.lo
  CC       libdfu_la-dfu-format-dfu.lo
  CC       libdfu_la-dfu-format-dfuse.lo
  CC       libdfu_la-dfu-format-elf.lo
dfu-format-elf.c:25:18: fatal error: gelf.h: No such file or directory
compilation terminated.
Makefile:1106: recipe for target 'libdfu_la-dfu-format-elf.lo' failed

fwupdmgr times out if /var/lib/fwupd/pending.db is missing

The fwupd systemd service file contains ConditionPathExists=/var/lib/fwupd/pending.db, causing any fwupdmgr dbus requests to fwupd to time out if this file does not exist:

Error calling StartServiceByName for org.freedesktop.fwupd: GDBus.Error:org.freedesktop.DBus.Error.TimedOut: Failed to activate service 'org.freedesktop.fwupd': timed out
After removing the line, everything works just fine, afaict (haven't done any actual fw updates). Why is it necessary?
Additionally, there is very little information on what that file actually is or how I can create it? Creating it as an empty file causes fwupd to segfault on startup.

Thanks

Fallback from online to offline mode isn't working properly (again)

For some reason I can't identify it seems that automatic fallback from online to offline mode on UEFI updates is failing.
I know for sure this was working before, and nothing obvious in the code has changed.

From adding debug code, at least to me it's looking like some sort of gio error since the quark that is found in fu-util.c isn't matching FwupdError even though that's the quark sent from fu-provider.c.

Adding debug code to the error in fu-provider.c gets this output:

provider quark: 319
string for quark: FwupdError
provider code: 10
provider message No online update possible

Adding debug code to the error in fu-util.c

$ ./fwupdmgr install ~/firmware.cab
 * Loading firmware
 * Decompressing firmware
> finished offline test
> priv->flags & FU_PROVIDER_UPDATE_FLAG_OFFLINE 0
> g_error_matches 0
> FWUPD_ERROR: 182
> string for quark(FWUPD_ERROR): FwupdError
> quark: 159
> string for quark(error_local->quark): g-io-error-quark
> FWUPD_ERROR_NOT_SUPPORTED: 10
> error_local->code: 36
> error_local->message: No online update possible
> returning false
No online update possible

Retries as offline without first failing (bad wording)

This issue is about the messages in the UI. No functionality issue.

$ fwupdmgr -v install Downloads/47096f0c58188f4f7ffe4a3a6c4d9b70f92f37c1-firmware.cab 
 * Decompressing firmware
Retrying as an offline update...

Since it's "retrying", I would have expected it to first fail with something else. The message would be more logical if it mentions some failed attempt before retrying.

Failures with Dell XPS 13 9350

Tried fwupd from the Fedora repos first (0.5.4) then master, same issues.

$ sudo  fwupdmgr verify-update
Processing /sys/devices/pci0000:00/0000:00:02.0/rom...
Error reading from file: Input/output error

# After upgrade attempt
$ sudo fwupdmgr get-results  UEFI-33773727-8ee7-4d81-9fa0-57e8d889e1fa-dev0
Cannot get UEFI status for 33773727-8ee7-4d81-9fa0-57e8d889e1fa

Usage:
  fwupdmgr [OPTION...]

  clear-results                     Clears the results from the last update
  dump-rom                          Dump the ROM checksum
  get-details                       Gets details about a firmware file
  get-devices                       Get all devices that support firmware updates
  get-results                       Gets the results from the last update
  get-updates                       Gets the list of updates for connected hardware
  install                           Install a firmware file on this hardware
  install-prepared                  Install prepared updates now
  refresh                           Refresh metadata from remote server
  update                            Updates all firmware to latest versions availableate t
  verify                            Gets the cryptographic hash of the dumped firmware
  verify-update                     Update the stored metadata with current ROM contents

Help Options:
  -h, --help            Show help options

Application Options:
  -v, --verbose         Show extra debugging information
  --offline             Perform the installation offline where possible
  --allow-reinstall     Allow re-installing existing firmware versions
  --allow-older         Allow downgrading firmware versions

dmesg:

[ 1891.148474] i915 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff

Trying to update the firmware seems to work: the upgrade was scheduled and found by firmware on reboot. The upgrade screen showed up but progress never moved from 0%, then the machine rebooted with no error message.

Reports of USB Audio failing when fwupd running

There have been a variety of reports of USB audio failing to work properly when booted with it plugged in. fwupd has a spin lock on the CPU in these situations, and replugging the device seems to resolve the issue.

Additional details are in the bug report link https://bugs.launchpad.net/ubuntu/+source/fwupd/+bug/1574079. Unfortunately they're pretty scattered with everyone giving varying amounts of information. Something that did seem potentially common (and interesting?) was that there is a DFU end point on some of these devices. furthermore one person noted in their debug log that there was a DFU device emitted.

...
21:26:16    15  com.hughski.ColorHugALS.firmware    ColorHugALS
21:26:30    waiting a small time for other providers
21:26:30    using b69159f2-3778-5728-80d0-01be18b2ea30 for USB\VID_1397&PID_0501
21:26:30    emit added from DFU: usb:00:01:03
21:26:31    no product string descriptor
21:26:33    Called GetUpdates()

Unpluging USB devices causes GetUpdates to get called

With gnome-software's session service running, I've noticed that when I remove a USB device there is a popup saying that updates are available.

If I check fwupd -v output I can see that GetUpdates() gets run shortly after the USB device is removed. If I kill the gnome-software session service, the GetUpdates() call doesn't happen.

This seems to be caused by some event that fwupd emits that gnome-software is reacting to.

This is with fwupd git master and the gnome-software in ubuntu 16.04 (3.20.1 git hash a976144).

Dell XPS 15 9550 EFI scheduled firmware update never occurs

I have a Dell 9550 running F24. Much to my surprise, an EFI update poped up via the gnome software manager. Clicking reboot&install doesn't seem to do anything.

$ fwupdmgr get-updates
XPS 15 9550 has firmware updates:
ID:                      com.dell.uefi124c207d.firmware
GUID:                    124c207d-5db8-4d95-bd31-34fd971b34f9
Update Version:          0.1.2.0
Update Checksum:         4902dcbeed2b1d3cf1e9fd14a4b1aedd5ce00a4f
Update Checksum Type:    sha1
Update Location:         https://secure-lvfs.rhcloud.com/downloads/ec95a09f68afa49e02420e59bb8889af80a709a8-firmware_1.2.0.wu.cab
$ sudo fwupdmgr update
Downloading 0.1.2.0 for XPS 15 9550...
Updating 0.1.2.0 on XPS 15 9550...
 * Decompressing firmware
Retrying as an offline update...
 * Idle
 * Decompressing firmware
 * Scheduling upgrade

And rebooting doesn't seem to do anything either. I manually installed the fwupdate/fwupdate-efi packages with no change in behavior. Do I need to manually install some other package(s)? Is EFI supposed to pick up an alternative boot-loader for the update or is it something that happens from the initrd?

fwupd.org is down

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.

Reason: Error reading from remote server

Apache/2.2.15 (Red Hat) Server at www.fwupd.org Port 80

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.