It was recently announced fwupd 2.0 released, a tool open source used to manage and update the firmware of various devices in Linux. Its purpose is to facilitate the installation and updating of firmware on hardware without having to access manufacturer-specific tools or reboot into a different operating system.
fwupd uses LVFS firmware update service (Linux Vendor Firmware Service), where manufacturers upload their firmware updates. Currently, the LVFS catalog includes firmware for more than 1,600 devices from 160 manufacturers.
The use of This centralized directory eliminates the need for manufacturers to generate specific packages for each distribution., allowing them to transfer firmware in a “.cab” file that includes additional metadata, similar to what is done when publishing firmware for Windows.
The Users can download and install these updates directly from their distribution Linux, facilitating a large number of processes, since it supports both the automatic firmware update mode, as well as the option to execute the operation after confirmation of the same.
Among the main features that stand out from fwupd, we can find the following:
- Support for a wide range of devices (UEFI, USB, Thunderbolt, displays, etc.).
- Firmware installation and update without rebooting or leaving the work environment.
- Integration with package manager and system updates.
- Compatible with many Linux distributions
- It is a convenient and safe solution to keep the firmware updated.
- It is compatible with the GNOME Software and KDE Discover application managers.
- Not only limited to desktop systems, it is also suitable for updating firmware on devices such as smartphones, tablets, servers, and Internet of Things devices.
What's new in fwupd 2.0?
In this new version of fwupd 2.0, background processing has been moved from using GUsb's GObject hook to direct access to libusb and sysfs. This change has allowed to move device emulation to the libfwupdplugin library and implement firmware update emulation on dummy hidraw and nvme devices, similar to the emulation done with dummy USB devices. Thanks to this feature, additional testing has been possible that identifies issues with updates that may arise after making certain changes to fwupd.
Likewise, the GUdev library, which provides GObject bindings over libudev, has been removed from the dependencies. Instead, the fwupd process now creates a netlink socket to analyze udev events transmitted through it. This change has resulted in a significant reduction in memory consumption and CPU load both at startup and during operation, as well as simplifying the incorporation of ueventd support, which will in the future allow fwupd to be compatible with the Android platform.
Optimizations have been made to reduce memory consumption When transferring firmware from files to devices, instead of copying the firmware to memory, transfer via a file descriptor is now used. Also Support for a variety of new devices has been added.
Furthermore, Support for legacy metadata and firmware verification formats has been discontinued, and previously deprecated command line utilities have been removed. Also API for uploading reports has been added to gnome-firmware and the build system now includes support for the Darwin platform.
Finally, the ability to display a list of ESP files in JSON format has been added (using the fwupdtool esp-list –json command), and the option to specify emulated devices in the configuration has been incorporated.
Finally, if you are interested in being able to know more about it, you can consult the details in the following link
How to install fwupd on Linux?
For those interested in installing fwupd, you should know that, in most distributions, it comes pre-installed. However, if you do not have it installed, you can do so with the following command depending on your distribution:
Ubuntu and derivatives:
sudo apt install fwupd
fedora:
sudo dnf install fwupd
Arch Linux and based on it:
sudo pacman -S fwupd
How to use fwupd?
The way fwupd is used is quite simple and is based on the execution of commands and The correct way to do it is to always update the database firmware available, before moving on to updating the device firmware. We can do this by typing:
sudo fwupdmgr refresh
To see which devices are supported by fwupd, as well as their current status and whether they have updates available, can be done with the following command:
fwupdmgr get-devices
Once you have listed the devices, they can Check for firmware updates available by running:
fwupdmgr get-updates
If firmware updates are available, You can apply them by running:
sudo fwupdmgr update
To display a list of firmware updates that have been installed via fwupd, you can do it with the following command:
fwupdmgr history