Skip to main content

mpbuild

Build MicroPython firmware with ease!

mpbuild builds MicroPython firmware in containers so you don't need to install any compiler toolchains or development tools. It knows which containers to use for each board so the appropriate build tools are used.

Table of Contents

Usage

mpbuild is intended to be executed in the root of a MicroPython repository. Help text (accessed with adding --help) is extensive and documents advanced options.

[!NOTE] Note that there are some special builds. unix, webassembly and windows can all be specified as BOARDs but their target isn't a microcontroller. See the MicroPython documentation for details.

[!WARNING] Currently mpbuild is tested on Linux (specifically Ubuntu 24.04 on WSL on Windows 11) but it's intended to work on any platform that supports Docker.

Build a board, with optional variant:

mpbuild build BOARD [VARIANT]

Remove build artifacts:

mpbuild clean BOARD [VARIANT]

Clean and then build a board (rebuild from scratch):

mpbuild rebuild BOARD [VARIANT]

List the available boards, optionally filter by the port name.

Displays the board names (as a clickable link), variants and number of boards per port:

mpbuild list [PORT]

Interactive mode

For exploring boards and triggering builds without typing the names, mpbuild ships with a Textual TUI:

mpbuild --interactive   # or `mpbuild -i`

Interactive TUI screenshot

The left pane shows every port and board found in the MicroPython tree. Selecting a board fills the right pane with its metadata, reveals a variant dropdown if the board has variants, and enables the Build / Rebuild / Clean buttons. The bottom-right log streams docker output as the build runs.

Key bindings:

Key Action
/ Navigate the tree
Expand the current branch
Collapse the current branch (or, on a leaf, collapse the parent)
Enter Select
b Build the selected board
r Rebuild the selected board (clean then build)
c Clean the selected board
s Stop the running build
q Quit

Clicking Build, Rebuild, or Clean while a build is already running terminates the running container before starting the new one. Stop is enabled only while a build is actually streaming.

Advanced Usage

Validate the state of all images referenced in board definitions:

mpbuild check_images

Use as a Module

[!CAUTION] This is very much a work-in-progress and the API is subject to change.

mpbuild can also be used from Python as a module. This allows it to easily be integrated into other tools.

Example:

import mpbuild

mpbuild.build("RPI_PICO")
mpbuild.list()

Installation

uv tool install mpbuild

Or use pipx, pip etc.

After installation, you may want to also install command-line tab completion for your shell (bash, zsh, fish and PowerShell are supported). Tab completion includes the various mpbuild commands as well as the board names and variants:

mpbuild --install-completion

Prerequisites

A clone of MicroPython (or a fork):

git clone git@github.com:micropython/micropython.git

Docker is currently necessary for managing containers and must be installed and available on your system path.

Examples

$ mpbuild build RPI_PICO
# Downloads appropriate containers and builds firmware for the Raspberry Pi Pico
$ mpbuild list rp2
🐍 MicroPython Boards
└── rp2   19
    ├── ADAFRUIT_FEATHER_RP2040
    ├── ADAFRUIT_ITSYBITSY_RP2040
    ├── ADAFRUIT_QTPY_RP2040
    ├── ARDUINO_NANO_RP2040_CONNECT
    ├── GARATRONIC_PYBSTICK26_RP2040
    ├── NULLBITS_BIT_C_PRO
    ├── PIMORONI_PICOLIPO  FLASH_16M
    ├── PIMORONI_TINY2040  FLASH_8M
    ├── POLOLU_3PI_2040_ROBOT
    ├── POLOLU_ZUMO_2040_ROBOT
    ├── RPI_PICO
    ├── RPI_PICO2  RISCV
    ├── RPI_PICO_W
    ├── SIL_RP2040_SHIM
    ├── SPARKFUN_PROMICRO
    ├── SPARKFUN_THINGPLUS
    ├── W5100S_EVB_PICO
    ├── W5500_EVB_PICO
    └── WEACTSTUDIO  FLASH_2M, FLASH_4M, FLASH_8M

Testing

The test suite uses pytest. Dev dependencies are declared in the dev group of pyproject.toml.

Install dev dependencies:

uv sync --group dev

Run the tests:

uv run pytest

Run with coverage:

uv run pytest --cov=mpbuild --cov-report=term-missing

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpbuild-1.2.0.tar.gz (355.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mpbuild-1.2.0-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file mpbuild-1.2.0.tar.gz.

File metadata

  • Download URL: mpbuild-1.2.0.tar.gz
  • Upload date:
  • Size: 355.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpbuild-1.2.0.tar.gz
Algorithm Hash digest
SHA256 147b8eb14764deb5f75aac31abd2a180149d21d24f3dfdda73f64b552985b483
MD5 eca80498c684030d27aac800c1d15f6a
BLAKE2b-256 1ecf7bede506af132601f2da48fcd40e46676624a7911ce8c54691ed9201e447

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpbuild-1.2.0.tar.gz:

Publisher: release.yml on mattytrentini/mpbuild

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mpbuild-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: mpbuild-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mpbuild-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50a0b1f8678d9867020d4f292091f17024312a765b37389c470c84ba05a4b790
MD5 7a3452e3f209c27720a2254fabec3939
BLAKE2b-256 f8b4b0fdf31ac7087e02936b4457cbf069969e98cf9dc389392892cfe143d458

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpbuild-1.2.0-py3-none-any.whl:

Publisher: release.yml on mattytrentini/mpbuild

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 files

1.1.0

2 files

1.0.0

2 files

0.9.1

2 files

0.9

2 files

0.8

2 files

0.7

2 files

0.6

2 files

0.5

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page