This page provides a information for hardware vendors wishing to automatically deploy firmware updates. The LVFS allows vendors to submit firmware updates quickly and easily. Clients such as fwupd check for updated metadata at this site and will offer the firmware to end users or be installed automatically depending on site policy. There is no charge to vendors for the hosting or distribution of content.
NOTE: This service should only be used to distribute firmware that is flashed onto non-volatile memory. It is not designed for firmware that has to be uploaded to devices every time the device is used.
Providing a firmware update service actually requires two things:
When files are submitted the following actions are performed:
cabfile is moved to our infrastructure
Please log in and upload files using the new secure admin console. If you need a new user created please see this page for more details. Files can be uploaded privately for testing and optionally embargoed until a specific date.
Three classes of user exist:
If you are not using the an already supported update method you need to write a plugin for fwupd to trigger the firmware update from userspace.
As per the Microsoft guidelines
package up your firmware into a
cab file, with these files inside:
metainfo.xmlfile with a long description and extra metadata
inffile describing the .cap file.
You can create a
cab file using
makecab.exe on Windows and
It is recommended you name the
cab file with the vendor, device and version
It is suggested that the files inside the
cab file have the
same basename, for example this is would be ideal:
hughski-colorhug-als-1.2.3.cab |- firmware.bin \- firmware.metainfo.xml
metainfo.xml file looks like this:
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright 2015 Richard Hughes
--> <component type="firmware"> <id>com.hughski.ColorHugALS.firmware</id> <name>ColorHugALS</name> <summary>Firmware for the Hughski ColorHug Ambient Light Sensor</summary> <description> <p> Updating the firmware on your ColorHugALS device improves performance and adds new features. </p> </description> <provides> <firmware type="flashed">84f40464-9272-4ef7-9399-cd95f12da696</firmware> </provides> <url type="homepage">http://www.hughski.com/</url> <metadata_license>CC0-1.0</metadata_license> <project_license>GPL-2.0+</project_license> <developer_name>Hughski Limited</developer_name> <releases> <release version="3.0.2" timestamp="1424116753"> <description> <p>This stable release fixes the following bugs:</p> <ul> <li>Fix the return code from GetHardwareVersion</li> <li>Scale the output of TakeReadingRaw by the datasheet values</li> </ul> </description> </release> </releases> </component>
If the firmware is not free software you have to indicate it in the
metainfo.xml file with
Sometimes the firmware capsule file has to have a different filename for
other workflow or legacy reasons.
To achieve this just change the value of
FirmwareFilename in the inf file, and also add this
<release version="0xtheversion" timestamp="1424116753"> <checksum filename="my-custom-name.bin" target="content"/> ...
The Linux Vendor Firmware Project signs the firmware image and repacks the files into a new cabinet file for several reasons:
The best way to validate the metainfo file or firmware before submission is by using the
appstream-util validate tool available from the