5
3
Fork
You've already forked bmputil
2
A tool for managing and flashing Black Magic Probe firmware
  • Rust 100%
dragonmux 0ab561ed49
All checks were successful
ci/woodpecker/pr/build-windows/2 Pipeline was successful
ci/woodpecker/pr/build-linux Pipeline was successful
ci/woodpecker/pr/build-windows/1 Pipeline was successful
ci/woodpecker/push/build-linux Pipeline was successful
ci/woodpecker/push/build-windows/2 Pipeline was successful
ci/woodpecker/push/build-windows/1 Pipeline was successful
serial/remote/protocol_v2: Fixed a clock cycles constraint check being missing in the JTAG run cycles function implementation
2026年07月01日 02:25:04 +01:00
.codeberg/ci codeberg: Limit the test and coverage build components for Windows to x86_64 builds only for now 2026年03月22日 07:41:06 +00:00
.github github: Removed the Linux build workflow as it's been fully superceeded by the Codeberg one 2026年03月06日 04:56:17 +00:00
.vscode serial/remote/response: Implemented functions for getting at the result code and response data as a string 2026年05月06日 01:31:30 +01:00
src serial/remote/protocol_v2: Fixed a clock cycles constraint check being missing in the JTAG run cycles function implementation 2026年07月01日 02:25:04 +01:00
tests tests/probe_identity: Added some testing for the bootloader identity recognition 2025年06月27日 17:56:08 +01:00
.editorconfig misc: Switch the indentation to tabs for consistency with the main project 2025年06月23日 02:14:07 +01:00
.gitignore misc: The .vscode directory should not be in VCS, especially not the settings.json 2025年03月03日 20:21:55 +00:00
build.rs misc: Switch the indentation to tabs for consistency with the main project 2025年06月23日 02:14:07 +01:00
Cargo.lock serial/remote/protocol_v0: Implemented the ADIv5 memory write command 2026年05月06日 01:31:35 +01:00
Cargo.toml serial/remote/protocol_v0: Implemented the ADIv5 memory write command 2026年05月06日 01:31:35 +01:00
LICENSE misc: Added license files to the top of the repo 2023年01月17日 13:42:03 -08:00
LICENSE-MIT misc: Added license files to the top of the repo 2023年01月17日 13:42:03 -08:00
README.md misc: update links github to codeberg 2026年03月08日 09:40:27 -07:00
rustfmt.toml misc: Switch the indentation to tabs for consistency with the main project 2025年06月23日 02:14:07 +01:00

bmputil companion utility to Black Magic Debug

Discord

A probe management utility for debuggers running the Black Magic Debug firmware.

This tool is designed as a companion to be used along side probes running the Black Magic Debug firmware. The idea behind this tool is to quickly and easily switch the firmware between multiple different releases and variants for a given probe, and manage the probes - eg, forcing them into their bootloaders, or discovering which you have connected and what their serial numbers are.

Installation

Binary releases for Linux, mac OS (amd64/AArch64) and Windows (amd64/AArch64) are now available with every release. These should work out-of-the-box with no extra dependencies or software needing to be installed.

Alternatively cargo binstall can be used instead. Which allows for easy updates. We recommend the following order of operations:

The tool will be available as bmputil-cli starting with v1.0.0 and bmputil for older releases.

Another alternative is to use cargo install instead of cargo binstall which will install the tool from source. In such case cargo-binstall can be skipped in the instructions above. The binstall path will fall back to source compilation if a binary build is not available for the specific os/architecture combination.

bmputil on Windows will automatically setup driver installation on first run for a probe if appropriate. This will require administrator access when it occurs, and uses the Windows Driver Installer framework.

Building from source

Alternatively, you can build and install the tool from source if you want something newer than the latest crates.io release. This assumes that you have Rust (and git, etc) installed already.

git clone https://codeberg.org/blackmagic-debug/bmputil
cd bmputil
cargo b -r

You can then copy the resulting binary from target/release/bmputil-cli to some place on $PATH.

Alternatively, cargo install --path . can be used in place of cargo b -r, or cargo install https://codeberg.org/blackmagic-debug/bmputil in place of the manual clone and build to automate this.

If you are working on patches or contributions to the tool, then you can use cargo build (cargo b) and cargo run [params] as needed to build test and run the tool. The -r (--release) option does a release build.

Windows

For building the tool on Windows, please see the Black Magic Debug website guide on the process.

Current Status

The first goal of this tool is to serve as a more ergonomic, dedicated to BMD, DFU programmer. This utility is meant to replace the need for dfu-util and the old stm32_mem.py script. We take advantage of the fact that we only have to support a specific target and a small number of DFU implementations to make for a nicer user experience. Additionally we provide an automatic firmware switching command as we know the location where to look for BMD firmware builds. It is planned to eventually provide BMD-specific configuration functions and automated build customisability, allowing the tool to bake a firmware image for you that pulls together the combination of targets you care about.

Currently implemented:

  • Find and detect Black Magic Probe (BMP) debuggers connected to the system.
  • Check firmware type and version on the attached BMPs.
  • Flash Firmware using the DFU protocol onto the BMPs connected to the system.
  • Automated download of metadata as-needed to pick up new releases.
  • Guided switching of the running firmware w/ automated firmware download.

Planned:

  • Configure BMP firmware defaults. (will require firmware support for permanent settings)
  • And many more... :)

Getting Help

Discuss this project in the #blackmagic channel on the 1BitSquared discord server.