

Zero r2 mini
A custom version of the blackMagic probe with rust in it
- Size
- 34.6 × 28.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 16
- Nets
- 28
- Pads
- 70
- Tracks, vias
- 43, 9
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 4 Mar 2022
- Updated
- 25 Oct 2026
Overview
Zero r2 mini is an open-source printed circuit board by mean00, from the mean00/swindle repository on GitHub. It is a 2-layer board of 34.6 × 28.3 mm with 16 parts on 28 nets, routed with 43 tracks and 9 vias.
It is built around the RP2040-ZERO and DMG2302U. Its parts include 3 resistors, 2 connectors, 1 capacitor, 1 IC and 1 transistor. It belongs with the sensors and measurement and interfaces and adapters boards and the RP2040 boards of this library.
Main components
2README
README.md
🔧 SWINDLE — ARM / RISC-V Debug Probe
Turn any cheap dev board into a full-featured debug probe.
TL;DR — Got an RP2040 board lying around? You've got a debug probe.
Swindle is a multi-platform debug probe for embedded devices, supporting SWD (ARM Cortex-M) and RVSWD (RISC-V CH32V2xx/CH32V3xx). It's powered by the incredible Black Magic Probe engine with a custom Rust-based GDB interface.
✨ Features
| Category | Details |
|---|---|
| 🧠 Engine | Built on top of the proven Black Magic Probe firmware engine |
| 🦀 GDB Interface | Written in Rust — modern, safe, and maintainable |
| 🔌 Protocols | SWD (ARM) + RVSWD (RISC-V) — no JTAG |
| 🎯 Breakpoints | Infinite breakpoints in RAM (ARM/RV32) + soft flash breakpoints for targets without HW breakpoints (some WCH chips) |
| 📡 RTOS Support | FreeRTOS awareness and SEGGER RTT out of the box — no configuration needed |
| 💾 DFU Update | Firmware updates over USB DFU — no programmer required |
| 📺 RTT Channel | Dedicated USB Tx only RTT channel (RP2xxx & CH32V3xx) |
| 🌐 Networking | Experimental networked version based on CH32V307 or RP2040+W5500 (DHCP + port 2000/20001) |
| 🔋 Low Cost | RP2040-Zero boards are dirt cheap! |
| 🔧 Voltage Translation | Optional custom PCB with voltage level translators |
🧩 Supported Hardware
Probe Hosts (runs Swindle)
You need ≥256 KB flash and ≥48 KB RAM.
| Platform | Status | Notes |
|---|---|---|
| RP2040 (e.g. RP2040-Zero) | ✅ Stable | The most affordable option |
| RP2350 (e.g. RP2350-Zero) | 🧪 Experimental | |
| GD32F303CCT6 (48/64-pin) | ✅ Stable | |
| CH32V30xxx | ✅ Stable | RISC-V based host |
| Custom PCB | 🧩 Optional | With voltage translators, mosfet on reset, ws2812 |
Debug Targets
| Architecture | Protocol | Device Families |
|---|---|---|
| ARM Cortex-M | SWD | RP2040, RP2350, STM32, GD32, and many ARM Cortex-M with SWD |
| RISC-V | RVSWD | WCH CH32V2xx, CH32V3xx |
🚀 Getting Started
1. Flash the firmware
Pick the pre-built firmware for your board or build from source.
Flashing via DFU (RP2040): Hold
BOOTSEL, plug in USB, then copy the.uf2file.
2. Connect to your target
Probe SWDIO → Target SWDIO
Probe SWCLK → Target SWCLK
Probe GND → Target GND
Probe NRST → Target NRST (optional, recommended)
Probe TX → Target Uart TX (optional)'see wiki for exact pinout'
3. Start debugging
# Connect with GDB
gdb-multiarch -ex "target extended-remote /dev/ttyACM0" -ex "mon swdp_scan" -ex "attach 1" your_firmware.elfOr use any GDB frontend (VS Code, CLion, etc.) — just point it to the serial port.
🔨 Building
This project uses CMake with presets for each target platform.
There is a devpod/docker build environment included.
Prerequisites
- CMake ≥ 3.21
- ARM GCC toolchain (
arm-none-eabi-gcc) or LLVM/Clang - RISC-V toolchain (for CH32V targets)
- Rust toolchain (for the GDB interface)
Configure & Build
# Configure for your target
cmake --preset rp2040 # RP2040-Zero
cmake --preset rp2350 # RP2350-Zero
cmake --preset gd32f303_48 # GD32F303 48-pin
cmake --preset gd32f303_64 # GD32F303 64-pin
cmake --preset ch32v307 # CH32V307 (networked)
# Build
cmake --build --preset rp2040Note: Some presets have variants with inverted NRST (
*_inv), with WS2812 RGB led. SeeCMakePresets.jsonfor the full list.
| Preset | Description |
|---|---|
rp2040 | RP2040-Zero (USB) |
rp2040_inv | RP2040-Zero with inverted NRST |
rp2350 | RP2350-Zero (USB, experimental) |
gd32f303_48 | GD32F303 48-pin (USB) |
gd32f303_64 | GD32F303 64-pin (USB) |
gd32f303_48_inv_ws2812 | GD32F303 48-pin (USB) +WS2812 +inv RST |
gd32f303_64_inv_ws2812 | GD32F303 64-pin (USB) +WS2812 +inv RST |
ch32v307 | CH32V30x (USB) |
ch32v307_inv_ws2812 | CH32V30x (USB) +ws2812 + inv RST |
ch32v307_net | CH32V307 (Ethernet, experimental) |
rp2040_zero_w5500 | rp2040+w5500 (Ethernet, experimental) |
📘 Documentation
Full documentation is available on the Swindle Wiki — covering:
- 🔧 Hardware setup and wiring guides
- 🖥️ GDB integration and troubleshooting
- ⚙️ Advanced configuration
- 🧪 RTOS-aware debugging
- 🌐 Networked probe setup
🏗️ Project Architecture
swindle/ # Debug probe wrapper
├── rs/ # Rust GDB interface (rs_swindle / rsbmp)
│ ├── rs_swindle/ # Core GDB logic
│ └── rs_swindle_wrapper/ # C → Rust bridge
└── swindle/ # C++ Black Magic Probe engine + wrapper
esprit/ # C++ / Rust SDK framework (HAL + RTOS + MCU drivers)
assets/ # Images and media
cmake/ # Project-level CMake utilities🖼️ Gallery
| Small probe, big target | RP2040 + CH32V |
|---|---|
![]() | ![]() |
| :------------------------: | :--------------: |
🤝 Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
📄 License
This project is built on the Black Magic Probe engine, licensed under GPL-3.0.
Parts
16| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R1, R3 |
| 1 | 100n | Resistor_SMD:R_0603_1608Metric | C10 |
| 1 | 330 | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | DMG2302U | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Debug port | Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical | J3 |
| 1 | Debug port | Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical | J5 |
| 1 | G*** | kibuzzard-67D71CE3 | kibuzzard-67D71CE3 |
| 1 | G*** | kibuzzard-67D71D53 | kibuzzard-67D71D53 |
| 1 | G*** | kibuzzard-67D71D3A | kibuzzard-67D71D3A |
| 1 | G*** | kibuzzard-67D71D2A | kibuzzard-67D71D2A |
| 1 | G*** | kibuzzard-6AAE3AD3 | kibuzzard-6AAE3AD3 |
| 1 | RP2040-Zero | RP2040 Carrier:RP2040 Zero | U1 |
The 13 most common of 16 parts.
Questions
How big is the Zero r2 mini PCB?
It measures 34.6 × 28.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Zero r2 mini use?
16 parts, built around the RP2040-ZERO and DMG2302U. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Zero r2 mini KiCad files?
From the mean00/swindle repository on GitHub, at the commit this page was made from: the board is kicad/rp2040_zero/rev2_mini/zero_r2_mini.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Zero r2 mini design in my own project?
Its repository states no licence, so its author keeps all rights: ask mean00 before reusing the design.
More from mean00/swindle
12- 2 layers49.8 × 33.3 mm

- 2 layers49.2 × 31.7 mm

- 2 layers38.3 × 34 mm

Swindle ch32 revJ mini
mean00/swindle
A custom version of the blackMagic probe with rust in it
57 parts22 - 2 layers39.3 × 30.1 mm

- 2 layers39.6 × 35.3 mm

Swindle ch32 revJshort
mean00/swindle
A custom version of the blackMagic probe with rust in it
54 parts22 - 2 layers51 × 33.3 mm

LnBMP ch32 revF 5pins
mean00/swindle
A custom version of the blackMagic probe with rust in it
53 parts22 - 2 layers37.3 × 63.9 mm

- 2 layers51 × 33.3 mm

- 2 layers52.6 × 33 mm

- 2 layers51 × 33.3 mm

- 2 layers52.6 × 33 mm

- 2 layers41.8 × 30.2 mm

Similar boards
- 2 layers69 × 72 mm

MMv3
MrCroesus/MMv3
MMv3 is the 3rd generation robot platform used to teach the IEEE Micromouse DeCal at UC Berkeley. It was designed with usability, manufacturability, size, and cost in mind.
47 parts16Apache-2.0 - 4 layers40 × 19 mm

- 4 layers45.7 × 90.3 mm

- 2 layers101.6 × 31.8 mm

Pico 12vrgb controller
bluekeyes/pico-12vrgb-hid-controller
4-pin RGB controller using the Pi Pico and USB HID
20 parts9MIT - 2 layers54.1 × 48.6 mm

E Fidget V3
miameows/E-Fidget
Hi there! There's a lot of moving parts with this project right now, so why don't you check out my latest blog post for more info?
29 parts6MIT - 2 layers75.1 × 100 mm

- 2 layers240 × 100 mm

Kha bgt extend
kiu/kha
Overengineered Modular RS-485 Multi-Master 19" Subrack Home Automation / Control
69 parts5 - 2 layers22 × 44.1 mm

Sao candle
exclamationMarek/skeuomorphicer-candle-sao
A more skeuomorphic, electronic candle, that you turn on using a flame and turn off by blowing on it. A SAO version of my standalone skeuomorphicer candle.
12 parts4

