Pybricks firmware.zip files

Utilities for working with Pybricks firmware.zip files.

AnyFirmwareMetadata

Type for data contained in firmware.metadata.json files of any version.

alias of Union[FirmwareMetadataV100, FirmwareMetadataV110, FirmwareMetadataV200, FirmwareMetadataV210]

AnyFirmwareV1Metadata

Type for data contained in firmware.metadata.json files of any 1.x version.

alias of Union[FirmwareMetadataV100, FirmwareMetadataV110]

AnyFirmwareV2Metadata

Type for data contained in firmware.metadata.json files of any 2.x version.

alias of Union[FirmwareMetadataV200, FirmwareMetadataV210]

class FirmwareMetadataV100

Type for data contained in v1.0.0 firmware.metadata.json files.

class FirmwareMetadataV110

Type for data contained in v1.1.0 firmware.metadata.json files.

class FirmwareMetadataV200

Type for data contained in v2.0.0 firmware.metadata.json files.

class FirmwareMetadataV210

Type for data contained in v2.1.0 firmware.metadata.json files.

async create_firmware_blob(firmware_zip: str | PathLike | BinaryIO, name: str | None = None) Tuple[bytes, FirmwareMetadataV100 | FirmwareMetadataV110 | FirmwareMetadataV200 | FirmwareMetadataV210, str]

Creates a firmware blob from base firmware and an optional custom name.

Note

The firmware.zip file must contain the following files:

firmware-base.bin
firmware.metadata.json
ReadMe_OSS.txt

v1.x also supports an optional main.py file that is appended to the firmware.

Parameters:
  • firmware_zip – Path to the firmware zip file or a file-like object.

  • name – A custom name for the hub.

Returns:

Tuple of composite binary blob for flashing, the metadata, and the license text.

Raises:

ValueError – A name is given but the firmware does not support it or the name exceeds the alloted space in the firmware.