The probe-rs utility explained.

The probe-rs CLI utility features many subcommands which are explained in the sections in this document.

The most commonly used one is the probe-rs run subcommand.

It should be the preferred way to do embedded development where applicable.

It should be noted that this works with any embedded binary. Be it ADA, C, C++, Rust or any other language that can be compiled into a native ARM binary.


The run subcommand is a cargo target runner. It makes it possible to flash, start and print logs from your target with a simple cargo run.

To use the runner in your project, add it to your .cargo/config.toml

runner = 'probe-rs run --chip <chip-name>'

Now you can execute cargo run in your project as you would for any native binaries and you will receive RTT and defmt logs in that very same console as if you wrote to standard out.

To use RTT or defmt, follow the instructions in the respective crates to integrate them into your firmware.


probe-rs attach works exactly like probe-rs run except that it does not issue a reset and does not flash the target on connecting to preserve the currently running state.

This is great for inspecting a target - where you might not even have knowledge of the firmware - without altering its state.

Additional commands

To learn more about additional commands, use the probe-rs help or probe-rs <command> --help commands.