Dear Maintainer,
fwupd generates an MOTD claiming that one firmware upgrade is available,
while `fwupdmgr get-upgrades` reports `No updates available`.
System information:
Debian GNU/Linux 13.6 (trixie)
Kernel: 6.12.101+deb13-amd64
fwupd: 2.0.20-1~deb13u1
Observed behavior:
$ fwupdmgr get-upgrades
No updates available
$ sed -n '1,80p' /run/motd.d/85-fwupd
1 device has a firmware upgrade available.
Run `fwupdmgr get-upgrades` for more information.
This is not a stale runtime file. Restarting fwupd caused
/run/motd.d/85-fwupd to be regenerated about six seconds after daemon
startup, with the same incorrect message.
The apparent trigger is an unsupported-but-updatable UEFI KEK device:
* Current version: 2011
* Device has the UPDATABLE flag.
* Device does not have the SUPPORTED flag.
* `fwupdmgr get-releases` finds a 2023 Secure Boot KEK Configuration
Update.
* `fwupdmgr get-upgrades` categorizes the device as having no available
firmware updates.
Update history contains only successful updates. No device is currently
reported as FAILED, FAILED_TRANSIENT, or NEEDS_REBOOT.
The source appears to explain the discrepancy. In
fu_engine_update_motd(), fwupd checks whether a device is UPDATABLE before
calling fu_engine_get_upgrades(), but it does not require the device to
have the SUPPORTED flag. If the internal lookup returns a release, the
MOTD upgrade count is incremented.
In contrast, fu_util_get_updates(), used by `fwupdmgr get-upgrades`,
skips devices without the SUPPORTED flag.
The same missing SUPPORTED check appears in upstream fwupd 2.1.7 and the
current main branch, so this does not appear Debian-specific.
Expected behavior:
The MOTD should advertise only firmware upgrades that
`fwupdmgr get-upgrades` would offer. An unsupported device should not
increase the MOTD upgrade count.
A likely fix is for fu_engine_update_motd() to skip devices that do not
have FWUPD_DEVICE_FLAG_SUPPORTED before checking for upgrades, matching
the command-line client's eligibility check.
Related upstream issue:
https://github.com/fwupd/fwupd/issues/9523
That issue has the same visible symptom, but its fixes address
NEEDS_REBOOT and failed update states. Those checks are already present
in this version and do not cover unsupported devices.
Relevant current source:
https://github.com/fwupd/fwupd/blob/2.1.7/src/fu-engine-helper.c
https://github.com/fwupd/fwupd/blob/2.1.7/src/fu-util.c