Firmware Sources and Manifests
This page covers where RMS retrieves firmware artifacts and the JSON manifest format that describes them.
Firmware sources
RMS needs access to firmware artifacts at runtime. When you register a firmware
object with AddFirmwareObject, RMS downloads every artifact referenced in the
manifest into a local staging directory (the --firmware-dir path) before
marking the object available. Subsequent ApplyStoredFirmwareObject calls
read from that cache. RMS must be able to reach every artifact URL or path at
the time of download.
Supported endpoints
RMS supports three source types, selected by the LocationType field in each
Locations entry of the manifest.
For HTTP and HTTPS downloads, RMS streams the response body directly to the
staging directory. When you supply an optional Sha256 digest in a Locations
entry, RMS accumulates the hash chunk-by-chunk as bytes arrive, then compares
the digest after the stream completes. If the digest does not match, RMS
discards the temp file and returns an error without promoting anything to cache.
Local filesystem paths
A file location can be any path that the RMS process can read. In
containerized deployments, make the firmware files available inside the
container through a volume mount. RMS copies the file into the staging
directory and applies the same optional SHA-256 check.
Artifactory / JFrog
Artifactory and JFrog use the same HTTP/HTTPS download path as a plain file
server. When you pass a non-empty access_token in AddFirmwareObjectRequest,
RMS attaches it as the X-JFrog-Art-Api header. When access_token is absent
or empty, RMS performs an unauthenticated GET.
Unsupported endpoints
The following protocols are not supported and will cause AddFirmwareObject to
return an error if referenced in the manifest:
- S3 (
s3://) - object-storage URLs are not supported. Stage artifacts on an HTTP/HTTPS file server or copy them to a local path accessible to RMS. - FTP / FTPS / SFTP / TFTP - file-transfer protocols are not supported. Use an HTTP file server or a local path instead.
- HTTP Basic/Digest authentication and Bearer tokens - only Artifactory
API-key authentication (
X-JFrog-Art-Api) is supported for authenticated downloads.
Firmware manifest
The firmware manifest is a JSON file distributed per firmware milestone. It
describes the board SKUs, firmware components, expected versions, and the
download locations for every artifact. You pass the manifest content as the
config_json field in AddFirmwareObjectRequest or ApplyFirmwareObjectRequest.
RMS parses the manifest, builds an internal lookup table of components and
targets, and downloads all referenced artifacts. The object becomes available
once all downloads complete successfully.
Top-level structure
Milestone fields
BoardSKU fields
Component (Firmware entry) fields
RMS reads the Firmware array inside Components. It ignores the Software
array for firmware-update workflows, except when collecting switch system images
from entries whose Component is NVOS.
Location fields
Each Locations entry identifies one downloadable artifact.
SubComponent fields
Abbreviated example
The following example shows the essential structure for a manifest with one compute and one switch SKU. Fields not relevant to RMS processing are omitted.
For a complete, real-world example, refer to the sample manifest in the repository.