Skip to content

Key concepts

Update Bundle

An update bundle contains several binary files, a manifest.json and a signatures.json file.

The signatures.json contains signatures of each file in the bundle and a signature over all signatures (entry: “signatures.json”). This ensures that the composition of the bundle cannot be tampered with.

manifest.json

The manifest.json file contains:

  • An overall bundle version
  • Several components, which each have separate versions.
  • A user section that can store any key/value pairs, to allow the application to check e.g. if an update is suitable for a specific device.
{
  "version": "v3.2.2",
  "components": {
    "os": {
      "version": "Some Build #v2.1.2-derivate@2023-08-17 12:42:33@aded8b40-e3c2-4240-783d-360c5841f223 - (C) 2020-2023 idastroem",
      "files": ["zImage:zImage.stm32", "dtb:device.dtb.stm32", "rootfs:rootfs.squashfs"]
    },
    "app": {
      "version": "v3.1.19",
      "files": ["app:cc"]
    },
    "mc": {
      "version": "v3.1.25",
      "files": ["m4:m4.bin.encrypted"]
    }
  },
  "user": {
    "product": "my_product",
    "change_log": "public release"
  }
}

Components

Each component consists of:

  • a distinct version string
  • a list of files.
...
    "os": {
      "version": "Some Build #v2.1.2-derivate@2023-08-17 12:42:33@aded8b40-e3c2-4240-783d-360c5841f223 - (C) 2020-2023 idastroem",
      "files": ["zImage:zImage.stm32", "dtb:device.dtb.stm32", "rootfs:rootfs.squashfs"]
    },
    ...

Component updates as needed

If the component version differs from the installed version all files listed in the component are updated and the installed version is updated.

This ensures:

  • Only outdated components are updated.
  • After a successful update all components are identical to those in the bundle.