finds.dev← search

// the find

knurling-rs/probe-run

★ 646 · Rust · Apache-2.0 · updated Jan 2024

Run embedded programs just like native ones

probe-run is a Cargo runner that lets you flash and run embedded Rust firmware on a microcontroller with `cargo run`, streaming RTT output and printing stack backtraces on panic or hard fault. It was the primary Knurling/Ferrous Systems tool for embedded Rust development. As of October 2023 it is deprecated — the team moved everything into probe-rs itself, which now has its own runner.

The `cargo run` integration is the right UX call: treating firmware like a native binary makes the embedded development loop feel normal. Stack backtrace output including `<exception entry>` markers is genuinely useful and was ahead of what most embedded tooling offered at the time. The defmt version mismatch detection — surfacing ABI mismatches between the host tool and firmware — catches a class of silent failures that would otherwise produce garbage output. Snapshot tests against pre-built ELFs let CI catch regressions without needing physical hardware.

It is deprecated and you should not adopt it. The README leads with this but the tool still shows up in tutorials and blog posts, so people get burned. The RTT sleep interaction issue (CPU sleeping kills RTT polling) has no general fix — workarounds are MCU-specific and documented only by example. Snapshot tests that require a physical nRF52840 DK are marked `--ignored` and will never run in any normal CI setup. Chip support was always contingent on the probe-rs crates.io release schedule, with the git-patching workaround being awkward and unsupported.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →