Silabs OTA image tool#

Overview#

This tool can generate an OTA image in the |OTA standard header|TLV1|...|TLVn| format. The payload contains data in standard TLV format (not Matter TLV format). During OTA transfer, these TLV can span across multiple BDX blocks, thus the OTAImageProcessorImpl instance should take this into account.

Supported platforms#

  • EFR32 -

Usage#

This is a wrapper over standard ota_image_tool.py, so the options for create are also available here:

python3 ./scripts/tools/silabs/ota/ota_multi_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 50000 -vs "1.0" -da sha256

followed by *custom options- and a positional argument (should be last) that specifies the output file.

The list of custom options:

# Application options
--app-input-file   --> Path to the application binary.
--app-version      --> Application version. It's part of the descriptor and
                       can be different than the OTA image header version: -vn.
--app-version-str  --> Application version string. Same as above.
--app-build-date   --> Application build date. Same as above.

# Factory data options
--factory-data     --> If set, enables the generation of factory data.
--cert_declaration --> Certification Declaration.
--dac_cert         --> DAC certificate.
--dac_key          --> DAC private key.
--pai_cert         --> PAI certificate.

# Encryption options
--enc_enable       --> Enable ota encryption
--input_ota_key    --> 16 Byte AES key

# Custom TLV options
--json             --> Path to a JSON file following ota_payload.schema

Please note that the options above are separated into four categories: application, bootloader, factory data and custom TLV (--json option). If no descriptor options are specified for app/SSBL, the script will use the default values (50000, "50000-default", "2023-01-01"). The descriptor feature is optional, TLV processors having the option to register a callback for descriptor processing.

Custom payload#

When defining a custom processor, a user is able to also specify the custom format of the TLV by creating a JSON file based on the ota_payload.schema. The tool offers support for describing multiple TLV in the same JSON file. Please see the examples/ota_custom_entries_example.json for a multi-binary example. Option --json must be used to specify the path to the JSON file.